У меня 61 задание, и я хочу максимизировать их delay_savings при некоторых ограничениях.
Когда я запускаю алгоритм, получаются такие результаты:
job delay_savings
1.job.................20 min.
2.job.................13 min.
3.job.................5 min.
......
59.job.................10 min.
60.job................. 30 min.
61.job................. 40 min.
Это начальное решение алгоритм. После этого как мне go по алгоритму? Я имею в виду, как и где я буду использовать эти результаты для go лучшего решения с SA?
Не могли бы вы написать мне псевдокод, вы можете определить алгоритм выше как «initial_algorithm» в своих предложениях псевдокода . Я определенно не мог модифицировать его в имитацию отжига и составлять соседей, чтобы уступить алгоритму SA для постепенного достижения лучших результатов.
Я сделал это случайным образом, но это немного далеко от процедуры SA c. Итак, вот я:)
Edit1: Я использую этот алгоритм:
initial = getnewSolution()
previousSolution = initial
calculate previousCost
simulatedAnnealing()
currentSolution = getnewSolution()
calculate cost
compare cost vs previous
if acceptable bestsofar <-- currentSolution
else
exponential check
end
end
Я генерирую currentSolution на каждой итерации, повторно запускаю getnewSolution, он ни во что не попадает, работает случайным образом . Я знаю, что это проблема для локального поиска. Однако это приближается к 80% к результату GAMS / Cplex.
Но случайность не означает постепенного улучшения. Итак, как я могу использовать первые результаты алгоритма, чтобы получить лучшее решение для SA?
Я попытался выбрать 30 заданий и определить нижнюю и верхнюю границы, которые их delay_savings может измениться в соответствии с ограничениями. Я буду предоставлять это с алгоритмом соседства на каждой итерации в SA. Предоставляет ли это решение для соседей, или мне что-то не хватает в процессе имитации отжига?