2017-01-16 7 views
0

このような素晴らしいプロジェクトのためにoptaplannerチームに感謝します。optaplannerのVRPにカスタムHardConstraintを追加するには?

私はVehicle.javaで変数capacityCapを追加した (顧客が唯一の「需要< = capacityCap」場合は車両に割り当てられている)capacityCapと呼ばれる車両に制約を追加する必要があります。

protected int capacityCap; 
public int getCapacityCap() { 
    return capacityCap; 
} 

public void setCapacityCap(int capacityCap) { 
    this.capacityCap = capacityCap; 
} 

そして、このための追加よだれvehicleRoutingScoreRules.drl

// Hard constraints 
rule "vehicleCapacityCap" 
when 
    $vehicle : Vehicle($capacityCap : capacityCap) 
    $customer : Customer(demand > $capacityCap); 
then 
    scoreHolder.addHardConstraintMatch(kcontext, -1); 
end 

しかし、実行した後、それは私がよだれでいくつか間違っているすべての顧客unassigned.Amを残し?このため

ユースケース: 私は唯一の5キロよりも重み少ない場合バイカーに順序を割り当てる場合。

さらに詳しい情報が必要かどうか質問してください。 おかげ

答えて

2

この

// Hard constraints 
rule "vehicleCapacityCap" 
when 
    $vehicle : Vehicle($capacityCap : capacityCap) 
    $customer : Customer(vehicle == $vehicle, demand > $capacityCap); 
then 
    scoreHolder.addHardConstraintMatch(kcontext, -1); 
end 
+0

はまだそれが割り当てられていないため(顧客)を残しているお試しください。 –

+0

あなたはどのように顧客を割り当て解除できるのですか(これは間違っているとは言いません)。私は、連鎖計画ではすべてのエンティティを構築フェーズで初期化する必要があると考えていました。 –

+0

申し訳ありませんが、私の間違いだった、あなたが絶対にうまく働いてくれた垂れ流し。私は容量を初期化していた。間違って。 –

関連する問題