optaplanner规则没有正确解决

时间:2013-09-09 19:11:28

标签: drools drools-planner optaplanner

我做了一个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. 有什么问题?

请告诉我。感谢。

1 个答案:

答案 0 :(得分:0)

(不知道所期望的结果是什么,很难回答这个问题,但是这里......)

2个选定的ItsEquipment不限制它们属于原始选定的Transport(甚至是同一个Transport)。它们只需要属于同一个direction。这是你的意图吗?

$e1选项包含id==$id+1mileage==$mileage+400。如果您的ID是唯一的,则id==$id+1以外的任何其他条件都毫无意义(包括mileage==$mileage+400)。