2017-05-25 15 views
1

最近注目されたことは、「新しい最高得点」が生まれたときに、他のものより遅くなることでした。これは間違いなく、「新しいベストスコア」を生むあらゆるステップで起こっているソリューションのクローニングです。解決策「新しい最高得点」が連続して発生するステップでクローン化が発生する

「新しいベストスコア」のステップが連続していない場合は、これは問題ありません。たとえば、50ステップが連続している場合、ソリューションのクローニング処理は50回実行されます。よりスマートな方法は、シーケンスの最後にクローン処理を行うことです(1回のみ)。

これは簡単に実装できますか、それを防ぐ他の方法がありますか?

「新しいベストスコア」のステップごとにクローンを作成し、ステップとして選択された移動によって変更された計画エンティティインスタンスを複製し、それらを最良のソリューションに追加することだけが考えられます。

答えて

1

50ステップが連続しており、最初の23ステップが最良のソリューションを改善する場合は、その解決策のステップ23で計画クローンを行う必要がありますか? 次の27ステップのいずれかが最良スコアを向上させる保証はないので、ステップ23で解の状態を失いたくないので、すべてのステップが最良スコアを改善するわけではなく、悪いスコアになります(特に遅延受諾の場合)。

言い換えれば、建設ヒューリスティックス - 私たちは実際には中間的な計画クローンをしません。なぜなら、ソリューションの改善だけが保証されているからです(より初期化された変数が常に優れています)。いずれの場合においても

、クローンの光を計画して作るための最善の方法は、計画のエンティティ・クラスが(当然のソリューションクラスから除く)すべての着信参照を持たないためのモデルを設計することである

+0

ジェフリー・アイムあなたが私のことを完全に理解しているかどうかはわかりませ50ステップを連続したポイントは、それぞれが「新しいベストスコア」を作成したことです(計算されたスコアのために作業ソリューションが最高であることを100%確信しています)。悪いスコア。ステップの中で何が行われているのは、doとundoの動きの束であり、最後にはステップ自体です。したがって、最後の元に戻す移動の後で、ステップ自体の前にクローニングを行うことができます。 –

+0

"pickEarly"オプションが有効になっている場合( "FIRST_LAST_STEP_SCORE_IMPROVING"またはFIRST_BEST_SCORE_IMPROVING)には、単に移動が行われますが、これは再び動作します。これは、単にステップが早く行われた場合には、ステップ。 –

+0

2番目のアイデアは、ソリューションを増分的に行うことでした(インクリメンタルスコア計算と同様)。インクリメンタルスコア計算が機能しているように(最初にすべてのエンティティのスコアを計算する)、ソリューション全体をクローンします(一度だけ)。基本的にヒューリスティックな構築の後のクローン。したがって、この時点でクローン作成されたソリューション全体が作成され、ステップ(「新しいベストスコア」を生成する)を行う際のローカル検索では、ムーブされたエンティティインスタンスがクローン化されたソリューション全体で取得、クローンおよび更新されます。スコアも更新されます。 –

関連する問題