1

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

4

0 に答える 0