UNPKG

tycho-solver

Version:

Evolutionary computation and optimization library

39 lines 1.6 kB
import { AcceptanceOperator } from './AcceptanceOperator'; export const MoveSelectionOperator = async ({ neighbors, currentSolution, currentFitness, objectiveFunction, options, iterations = 0 }) => { let selectedNeighbor = currentSolution; let selectedFitness = currentFitness; let isTie = false; let isCostImprovement = false; for (const neighbor of neighbors) { const neighborFitness = await objectiveFunction(neighbor); if ((options.maximize ? neighborFitness > selectedFitness : neighborFitness < selectedFitness)) { selectedNeighbor = neighbor; selectedFitness = neighborFitness; isTie = false; isCostImprovement = false; } else if (neighborFitness === selectedFitness && options.costFunction) { const currentCost = await options.costFunction(currentSolution); const neighborCost = await options.costFunction(neighbor); isCostImprovement = (options.maximizeCost ?? false) ? neighborCost > currentCost : neighborCost < currentCost; if (isCostImprovement) { selectedNeighbor = neighbor; selectedFitness = neighborFitness; isTie = true; } } } return AcceptanceOperator({ candidateSolution: selectedNeighbor, candidateFitness: selectedFitness, currentSolution, currentFitness, options, isTie, isCostImprovement, iterations }); }; //# sourceMappingURL=MoveSelectionOperator.js.map