비슷한 쌍으로 된 운송 실행을 최대화하기 위해 OptaPlanner에 대한 Drools 점수를 개발하려고합니다. 여러 계획 엔티티를 사용하여 drools 점수
- 12,000 - - 오전 또는 오후
- 위치
기획 변수가 짝을 포함 실행 가능성을 포함 이들 중 500 -
기획 개체는 실행입니다 이 중 :
- runID1
- 높은 순위 점수가 짝을 극대화하기 위해 사용되는
- amPmIndicator
LOCATION1
오전과 오후의 쌍을 이루는 위치의 수를 최대화하는 낮은 순위 규칙을 개발해야합니다. 따라서 AM에 쌍으로 연결된 두 위치는 PM의 동일한 위치에서 쌍을 이루어야합니다.
Drools 점수는 어떻게 구성 할 수 있습니까? 두 개의 계획 엔티티에 할당 된 AM에 대한 계획 변수의 수를 누적 한 다음 AM 계획 엔티티와 동일한 위치로 유사한 PM 계획 변수 수와 비교해야합니다.
또는 이것을 모델링하는 더 좋은 방법이 있습니까?
모든 도움을 주시면 대단히 감사하겠습니다.
저는 제 질문이 DRL 언어 기능 중 하나 이상이며 집계를 수행하는 방법이라고 생각합니다. 내가 작성한 규칙은 다음과 같습니다. 단, PM에 한 쌍만 존재한다는 것을 보증합니다.
// Attempts to make certain that a morning pairing at a Location level exists in the morning and afternoon
// This rule should attempt to count Location pairs in AM and PM rule
"matchedLocationsAmToPm"
when
Run(amPm == "AM" && earlyLate == "EARLY", $amPair : pair, $earlyLocationId : LocationId)
Run(amPm == "AM" && earlyLate == "LATE" && pair == $amPair, $lateLocationId : LocationId)
Run(amPm == "PM" && earlyLate == "EARLY" && LocationId == $earlyLocationId, $pmPair : pair)
not Run(amPm == "PM" && earlyLate == "LATE" && LocationId == $lateLocationId && pair == $pmPair)
then
scoreHolder.addSoftConstraintMatch(kcontext, -1000);
위의 원래 질문에 설명과 샘플 코드를 추가했습니다. – user2952819
한숨. 내 답변의 첫 번째 문장을보십시오 : docs = clarification, video = optplanner 예제의 예제 이름. –
감사합니다. 나는 지금 나는이 해결책을 시도 할 것임을 이해한다고 생각한다. 이런 식으로 생각하면 시간이 좀 걸립니다. 양해 해 주셔서 대단히 감사합니다. – user2952819