我做了一个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.
有什么问题?
请告诉我。感谢。
答案 0 :(得分:0)
(不知道所期望的结果是什么,很难回答这个问题,但是这里......)
2个选定的ItsEquipment
不限制它们属于原始选定的Transport
(甚至是同一个Transport
)。它们只需要属于同一个direction
。这是你的意图吗?
$e1
选项包含id==$id+1
和mileage==$mileage+400
。如果您的ID是唯一的,则id==$id+1
以外的任何其他条件都毫无意义(包括mileage==$mileage+400
)。