/// <summary> /// Creates a new VNS solver. /// </summary> /// <param name="generator">The solver that generates initial solutions.</param> /// <param name="perturber">The perturber that varies neighbourhood.</param> /// <param name="localSearch">The local search that improves solutions.</param> public VNSSolver(ISolver <TWeight, TProblem, TObjective, TSolution, TFitness> generator, IPerturber <TWeight, TProblem, TObjective, TSolution, TFitness> perturber, IOperator <TWeight, TProblem, TObjective, TSolution, TFitness> localSearch) { _generator = generator; _perturber = perturber; _localSearch = localSearch; }
/// <summary> /// Creates a new VNS solver. /// </summary> /// <param name="generator">The solver that generates initial solutions.</param> /// <param name="perturber">The perturber that varies neighbourhood.</param> /// <param name="localSearch">The local search that improves solutions.</param> /// <param name="stopCondition">The stop condition to control the number of iterations.</param> public VNSSolver(ISolver <TWeight, TProblem, TObjective, TSolution, TFitness> generator, IPerturber <TWeight, TProblem, TObjective, TSolution, TFitness> perturber, IOperator <TWeight, TProblem, TObjective, TSolution, TFitness> localSearch, SolverDelegates.StopConditionWithLevelDelegate <TProblem, TObjective, TSolution> stopCondition) { _generator = generator; _perturber = perturber; _localSearch = localSearch; _stopCondition = stopCondition; }