我有 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.
这是算法的初始解。之后我应该如何继续算法?我的意思是我将如何以及在何处使用此结果来获得更好的 SA 解决方案?
你能给我写一个伪代码吗,你可以在你的伪代码建议中将上面的算法定义为“initial_algorithm”。我绝对无法将其修改为模拟退火并构成邻居以让步SA算法以逐渐达到更好的结果。
我是随机制作的,但它离 SA 过程逻辑有点远。所以,我在这里:)
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,它不会进入任何东西,随机工作。我知道这是本地搜索的问题。然而,它接近 GAMS/Cplex 结果的 80%。
但是,随机性并不意味着逐渐改善。那么,如何使用第一个算法结果来获得更好的 SA 解决方案?
我尝试选择 30 个工作并确定他们的 delay_savings 在约束条件下可能发生变化的下限和上限。我将在每次迭代到 SA 中时为它提供邻居算法。它是否提供了邻居解决方案,还是我错过了关于模拟退火过程的一些内容?