private AnnealingOptions GetOptions(bool savePlotInfo) { int seed; if ((bool)RandomSeed.IsChecked) { var random = new Random(); seed = random.Next(); } else { seed = 5; } var annealingOptions = new AnnealingOptions { CoolingCoefficient = float.Parse(CoolingCoefficient.Text), CoolStrategy = new CoefficientCoolingStrategy(), EquilibriumStrategy = GetEquilibriumStrategy(), FrozenStrategy = GetFrozenStrategy(), ScoreStrategy = GetScoreStrategy(), StartingPositionStrategy = new RandomStartingPos(seed), BaseStartingTemperature = float.Parse(StartingTemperature.Text), MinimalTemperature = float.Parse(MinimalTemperature.Text), TryStrategy = GetTryStrategy(seed), BaseEquilibriumSteps = int.Parse(BaseEquilibriumSteps.Text), MaxRejectedRatio = float.Parse(MaxUnaccepted.Text), PenaltyMultiplier = float.Parse(PenaltyMultiplier.Text), SavePlotInfo = savePlotInfo }; return(annealingOptions); }
public SimulatedAnnealingSolver(KnapsackInstance instance, AnnealingOptions options) { Instance = instance; Options = options; NumberOfSteps = 0; }
public IList <SatResult> SolveWithPerformanceTest(IList <SatInstance> instances, AnnealingOptions options) { PreparePerformanceTest(instances); var stopWatch = new Stopwatch(); var results = new List <SatResult>(); foreach (var instance in instances) { Console.WriteLine($"Processing instance no. {instance.Id}"); SatResult result = null; //The algorithm must run repeat at least the set amount of times; for (int i = 0; i < REPEAT_COUNT; i++) { var solver = new SimulatedAnnealingSolver(instance, options); GC.Collect(); GC.WaitForPendingFinalizers(); //GC.TryStartNoGCRegion(200000000); stopWatch.Start(); result = solver.Solve(); stopWatch.Stop(); //GC.EndNoGCRegion(); } var averageRuntime = stopWatch.Elapsed.TotalMilliseconds / REPEAT_COUNT; //Save only the last result if (result != null) { result.RunTimeMs = averageRuntime; results.Add(result); } RaiseInstanceCalculationFinished(); stopWatch.Reset(); } return(results); }
public SimulatedAnnealingSolver(SatInstance instance, AnnealingOptions options) { SatInstance = instance; Options = options; }