0

optaplanner ルールを作成しました (以下を参照)。

//in expressway long tunnel(over 1km), equipment interval(400m)

rule "lcs_transport_tunnel_expway"

when
  $road : RoadVO(roadCtgry=="EXPWAY")
  $t1 : Transport(transportCode=="TUNNEL", $direction:direction,
                    Math.abs(mileageBegin-mileageEnd)>1000, 
                    $mileageBegin:mileageBegin, $mileageEnd:mileageEnd )
  $e0 : ItsEquipment(itsClass=="LCS", direction==$direction,
                    mileage >$mileageBegin && <$mileageEnd, $id:id, $mileage:mileage)
  $e1 : ItsEquipment(itsClass== "LCS", direction==$direction, id==$id+1,
                      mileage==$mileage+400 )
then
  scoreHolder.addSoftConstraintMatch(kcontext, 1000);
end

optaplannerが解決している間$e1 is not properly chosen. 、問題は何ですか?

私にお知らせください。ありがとう。

4

1 に答える 1

0

(望ましい結果が何であるかを知らなければ、これに答えるのは難しいですが、ここに行きます... :)

2 つの選択された は、元の選択されたもの(または同じもの)ItsEquipmentに属していることを制約しません。同じ に属していればよいだけです。それはあなたの意図ですか?TransportTransportdirection

$e1選択にはid==$id+1とがありますmileage==$mileage+400。ID が一意の場合、それ以外の条件id==$id+1は無意味です ( を含むmileage==$mileage+400)。

于 2013-09-10T06:15:38.927 に答える