1
  • Optaplanner を最適化して最速のルートを選択するにはどうすればよいでしょうか? 下の画像の強調表示されたポイントを参照してください。長い道のりを歩んでいます。

最適化されたルート

注:車両はデポに戻る必要はありません。ArrivalAfterDueTimeAtDepot は組み込みのハード制約であるため、CVRPTW を使用できないと思います (また、時間の制約もありません)。

  • 容量の少ない車両を選択するための制約をどのように記述できますか?
    たとえば、ある顧客が必要とする品目は 3 つだけで、4 人乗りと 9 人乗りの 2 台の車両があるとします。Optaplanner は、デフォルトで入力順に最初の車両を選択しているようです。
4

1 に答える 1

1

緑色の車両はすでに満車なので、バンガロールの中心部に向かう青色の車両に乗っていると思います。

Solver.getScoreDirectorFactory()その場所を手動で緑色のトリップに入れ、緑色と青色のトリップの車両を入れ替えた場合のスコア ( で計算) を確認します。より悪い場合 (または厳しい制約に違反している場合) は、OptaPlanner が他のソリューションを選択するのが普通です。その場合、スコア関数にバグがあります (または、そのソリューションがまったく必要ないことに気づきました)。しかし、それが実際により良いスコアを持っている場合、OptaPlanner <localSearch>(Late Acceptance など) はそれを見つける必要があります (特にスケール アウトする場合)。etcを追加して、<subchainSwapMoveSelector>ローカル最適化をより速く回避することができます。

検索をさらにガイドしたい場合 (多くの場合、これは良い考えではありません)、プランニング バリュー強度コンパレータを定義して、大型車両の前に小型車両を並べ替え、構築ヒューリスティックWEAKEST_FIT( _DECREASING) を使用できます。

于 2016-01-11T07:57:39.980 に答える