私は 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 への反復ごとに、これに隣接アルゴリズムを提供します。それは近隣ソリューションを提供しますか、それともシミュレーテッド アニーリングのプロセスについて何か不足していますか?