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---------------"); }
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); }