UNPKG

tycho-solver

Version:

Evolutionary computation and optimization library

39 lines 1.71 kB
import { LSInitializationOperator } from './InitializationOperator'; import { LSEvaluationOperator } from './EvaluationOperator'; import { LSTerminationOperator } from './TerminationOperator'; import { NeighborhoodOperator } from './NeighborhoodOperator'; export const RandomRestartsOperator = async ({ initialSolution, objectiveFunction, neighborhoodFunction, options }) => { const { randomRestarts = 1, randomInitializer } = options; let bestResult = null; // Instantiate modular operators const evaluationOperator = new LSEvaluationOperator(objectiveFunction); const neighborhoodOperator = NeighborhoodOperator; const terminationOperator = new LSTerminationOperator(); for (let restart = 0; restart < randomRestarts; restart++) { const args = { initialSolution: restart === 0 ? initialSolution : (randomInitializer ? randomInitializer() : initialSolution), objectiveFunction, options, evaluationOperator, neighborhoodOperator, terminationOperator }; if (randomInitializer !== undefined) { args.randomInitializer = randomInitializer; } if (neighborhoodFunction !== undefined) { args.neighborhoodFunction = neighborhoodFunction; } const result = await new LSInitializationOperator().initialize(args); if (!bestResult || (options.maximize ? result.fitness > bestResult.fitness : result.fitness < bestResult.fitness)) { bestResult = result; } } return bestResult; }; //# sourceMappingURL=RandomRestartsOperator.js.map