2016-06-23 4 views
0

私はOptaplannerを使用して、多くの要件を伴う複雑なvrp問題を解決するために取り組んでいます。私は以下の2つの側面を除いて、ほとんどを処理することができました。 DropOffs前Optaplanner VRP with Pickups Before DropOffs

  1. ピックアップのみ
  2. は、ピックアップの顧客への道上の特定のパスを適用します。

目的は、近くにある目的地に行く顧客を集め、同じ車両に入れることです。

ありがとうございました!私は助けに感謝します!

問題は、VRP TimeWindowの例と非常によく似ていますが、以下の点が変更されています。

  • 顧客は
  • すべてピックアップ顧客は(
    回路の外部)宛先ドロップオフを有するであろう
  • (回路に)固定された位置で撮像された車両にないヘッド意志ドロップオフしてから再びピックアップ に戻ります。
  • 回路に移動する車両が特定のパス (1人の通行を想像)

計画に移動しなければならない(車両が回路を離れる一旦それがないすべてのドロップオフその 顧客をセット位置にあります)各ピックアップからピックアップまでの距離に道路距離を使用することが知られている。ピックアップ - >ドロップオフは分かりません(エア使用計画)。

私は回路を去った後、回路を離れた後に、より多くの顧客を拾い上げることができず、車両が固定経路でこの回路を作ることができないかもしれません。

私の主な考えは、以下のことでした。ピックアップ&顧客

  • は、それだけに行くように、車両がそれに到着したときに、現在のすべてのDropOffIdsを追跡し、顧客のクラスに変数リスナーを追加しまし間

    • は区別するために、顧客へのTYPE属性が追加されましたその場所に向かう乗客があればdropOffLocation。車両がdropOffに到着すると、そのアイテムがリストから削除されます。 (基本的にスタックとして機能します)。
    • 問題は理論的には、顧客の場所が比較的近い場合には、顧客がその顧客を拾ってから別の顧客を拾い上げるのを止めているわけではありません。
    • 車両が回路内で拘束されていない固定ルートを強制的に実行している場合、ソフト制約を使用してルート暗黙性を強制するためにコストマトリックスを使用することを計画していました(車両は後方に移動しないか、高すぎるだろうが)、そうするべきではない。
  • 答えて

    0

    私はこのようなドメインモデルを検討するかもしれない:。dropOffPriorityは一意に初期化することにより(グローバルに一意であるだけで、その変数のためSwapMovesを構成する必要がありますこと

    @PlanningEntity 
    class Pickup implements PickupOrVehicle { 
        Customer customer; 
    
        @PlanningVariable 
        PickupOrVehicle previousPickup; 
    
        @PlanningVariable 
        int dropOffPriority; 
    
    } 
    @PlanningEntity // Shadow entity 
    class Vehicle implements PickupOrVehicle { 
        ... 
    
        @ShadowVariable(based on dropOffPriority and previousPickup) 
        List<Customer> dropOffOrderList; 
    
        // For consistency we might also add pickUpOrderList 
    } 
    

    あるいは、 VariableListenerは、顧客のIDで同じdropOffPriorityの2つの割り当てを注文する必要があります(注文が確定的でなければならないため)。

    うまくいくでしょう。あなたがそれを試してみたら、それがうまくいくかどうか私たちにここで教えてください。

    +0

    こんにちはジェフリー、応答をありがとう。私はあなたが最初の部分で自分自身を実装するクラスを持っていることをちょっと混乱させています。 目的は、経路を最小化して、DropOffの順序が最短経路によって決定されるようにすることです。どの時点でdropOffPriorityが設定されますか?あなたが提案したモデルは連鎖グラフで動作しますか? このモデルでは、ValueRangesとなるものを設定します。計画エンティティのValueRangeを動的に変更することは可能ですか? チェーングラフでエンティティのValueRangeProviderがサポートされていますか? – Weeam93

    +0

    そのクラスはPickupOrVehicleではなくPickupにする必要があります。 –