Exemplo n.º 1
0
        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;
 }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
 public SimulatedAnnealingSolver(SatInstance instance, AnnealingOptions options)
 {
     SatInstance = instance;
     Options     = options;
 }