Pareto Set
A function that filters an array down to the Pareto optimal set based on an array of objective functions
Installation
npm install pareto-set
Usage
const calculateParetoSet = ; // The set to calculate the Pareto optimal set for.const set = name: 'Task A' time: 1 energy: 8 reward: 8 name: 'Task B' time: 4 energy: 10 reward: 2 name: 'Task C' time: 10 energy: 6 reward: 1 name: 'Task D' time: 10 energy: 3 reward: 6 name: 'Task E' time: 5 energy: 7 reward: 1 name: 'Task F' time: 6 energy: 3 reward: 1 name: 'Task G' time: 7 energy: 10 reward: 6 name: 'Task H' time: 9 energy: 4 reward: 3; // The multiple objective functions to apply to the set.// Each function takes two arguments which correspond to two objects from the set.// If argument 1 is more optimal than argument 2 the function should return a negative number.// If argument 2 is more optimal than argument 1 the function should return a positive number.// If both arguments 1 and 2 are equally optimal the function should return zero.const objectiveFunctions = task1time < task2time ? -1 : task2time < task1time ? 1 : 0 task1energy < task2energy ? -1 : task2energy < task1energy ? 1 : 0 task1reward > task2reward ? -1 : task2reward > task1reward ? 1 : 0; const paretoSet = ;// Output:// [ // { name: 'Task A', time: 1, energy: 8, reward: 8 },// { name: 'Task D', time: 10, energy: 3, reward: 6 },// { name: 'Task E', time: 5, energy: 7, reward: 1 },// { name: 'Task F', time: 6, energy: 3, reward: 1 },// { name: 'Task H', time: 9, energy: 4, reward: 3 }// ]