2013-09-09 2 views
0

Я сделал правило 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. В чем проблема?

Пожалуйста, дайте мне знать. Благодарю.

+2

Просьба указать в своем вопросе, каков ваш желаемый результат: – StormeHawke

+0

Мое намерение состоит в том, чтобы его решения с интервалом 400 м и тем же направлением в длинном туннеле. что такое правильное выражение Drools? Я новичок в слюни. пожалуйста, дайте мне знать пример кода. – user2762437

ответ

0

(не зная, что желаемый результат, сложно ответить на этот вопрос, но здесь идет ... :)

В 2 выбранных ItsEquipment «s не тягот, что они принадлежат к оригиналу выбранного Transport (или даже то же самое Transport). Они должны принадлежать только тем же direction. Это ваше намерение?

$e1 выбор имеет id==$id+1 и mileage==$mileage+400. Если ваши идентификаторы уникальны, любое другое условие, кроме id==$id+1, бессмысленно (включая mileage==$mileage+400).

+0

Спасибо, Джеффри. Но я новичок в слюни. пожалуйста, дайте мне знать пример кода. – user2762437

+0

Если вы хотите POC, вы можете сначала реализовать его в Java, расширив 'SimpleScoreCalculator'. Как только это сработает - и вам будет ясно, в чем ваша цель - тогда напишите как DRL, чтобы ускориться. –

Смежные вопросы