Esempio n. 1
0
        public void solver_SA(ParametersOfSolver parameter)
        {
            Console.WriteLine("-------------solver_SA---------------");
            parameter.generateNeighbor = queens.constructNeighbor();
            parameter.acceptNeighbor   = queens.registerNeighborAsCurrent();
            Console.WriteLine("-------------solver_passo Simulated_A---------------");
            SimulatedAnnealing simulated_Annealing = new SimulatedAnnealing(parameter, queens);

            Console.WriteLine($"Energia do Sistema: {simulated_Annealing.getEnergySystem()} ---------------");

            bool done = false;

            while (!done)
            {
                Console.WriteLine("-------------Realizando Tentativa---------------");
                done = simulated_Annealing.simulationStep();
                Console.WriteLine($"Energia do Sistema: {simulated_Annealing.getEnergySystem()} ---------------");
                Console.WriteLine($"Energia do Sistema: {simulated_Annealing.getTemperatureSystem()} ---------------");
                if (done)
                {
                    break;
                }
            }
            Console.WriteLine("-------------Concluido---------------");
        }
Esempio n. 2
0
 public bool simulationStep()
 {
     if (parameterSA.currentSystemTemperature > parameterSA.freezingTemperature)
     {
         for (int i = 0; i < parameterSA.currentStabilizer; i++)
         {
             Console.WriteLine("-------------Tentativa SA---------------");
             double newEnergy   = QueensUtil.constructNeighbor();
             double energyDelta = newEnergy - parameterSA.currentSystemEnergy;
             if (probability(parameterSA.currentSystemEnergy, energyDelta))
             {
                 QueensUtil.registerNeighborAsCurrent();
                 parameterSA.currentSystemEnergy = newEnergy;
             }
         }
         parameterSA.currentSystemTemperature = parameterSA.currentSystemTemperature - parameterSA.coolingFactor;
         parameterSA.currentStabilizer        = parameterSA.currentStabilizer * parameterSA.stabilizingFactor;
         Console.WriteLine("---------**---- currentStabilizer ---**------------");
         return(false);
     }
     parameterSA.currentSystemTemperature = parameterSA.freezingTemperature;
     return(true);
 }