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 selectedItsEquipment不限制它们属于原始 selected Transport(甚至相同Transport)。他们只需要属于同一个direction。这是你的意图吗?

选择$e1id==$id+1mileage==$mileage+400。如果您的 id 是唯一的,则除此之外的任何其他条件id==$id+1都是毫无意义的(包括mileage==$mileage+400)。

于 2013-09-10T06:15:38.927 回答