/// <summary> /// Creates SimulatedAnnealing algorithm instance /// </summary> /// <param name="graph">Graph on which algorithm will operate</param> /// <param name="problem">Problem for which algorithm will attempt to find solution</param> /// <param name="setup">Setup for algorithm's cooling process</param> //TODO: Introduce SavedState complex type public SimulatedAnnealing(Graph graph, IProblem problem, CoolingSetup setup, double? currentTemperature = null, Guid? id = null) : base(graph, problem, id) { if (setup == null) throw new ArgumentNullException(nameof(setup)); if (!setup.IsValid()) throw new ArgumentException("Setup is invalid", nameof(setup)); CoolingSetup = setup; if (currentTemperature.HasValue) CurrentTemperature = currentTemperature.Value; else CurrentTemperature = setup.InitialTemperature; }
/// <summary> /// Creates SimulatedAnnealing algorithm instance /// </summary> /// <param name="graph">Graph on which algorithm will operate</param> /// <param name="problem">Problem for which algorithm will attempt to find solution</param> /// <param name="setup">Setup for algorithm's cooling process</param> //TODO: Introduce SavedState complex type public SimulatedAnnealing(Graph graph, IProblem problem, CoolingSetup setup, double?currentTemperature = null, Guid?id = null) : base(graph, problem, id) { if (setup == null) { throw new ArgumentNullException(nameof(setup)); } if (!setup.IsValid()) { throw new ArgumentException("Setup is invalid", nameof(setup)); } CoolingSetup = setup; if (currentTemperature.HasValue) { CurrentTemperature = currentTemperature.Value; } else { CurrentTemperature = setup.InitialTemperature; } }