2017-01-16 2 views
0

멋진 프로젝트를 위해 optaplanner 팀에 감사드립니다.optaplanner 용 VRP에 사용자 정의 HardConstraint를 추가하는 방법은 무엇입니까?

은 내가 Vehicle.java에서 변수 capacityCap을 추가 한 (고객 만 "수요 < = capacityCap"경우 차량에 할당) capacityCap라는 차량에 제약 조건을 추가해야합니다.

protected int capacityCap; 
public int getCapacityCap() { 
    return capacityCap; 
} 

public void setCapacityCap(int capacityCap) { 
    this.capacityCap = capacityCap; 
} 

그리고는

// Hard constraints 
rule "vehicleCapacityCap" 
when 
    $vehicle : Vehicle($capacityCap : capacityCap) 
    $customer : Customer(demand > $capacityCap); 
then 
    scoreHolder.addHardConstraintMatch(kcontext, -1); 
end 

vehicleRoutingScoreRules.drl

이에 대한 잠꼬대를 추가하지만 실행 후 내가 잠꼬대에 일부 잘못을하는 모든 고객 unassigned.Am 잎? 이에 대한

유스 케이스 : 나는 자전거에 순서를 할당 할 경우에만 5kg 이상 그 무게 적은 경우.

추가 정보가 필요한지 물어보십시오. 감사

답변

2

// Hard constraints 
rule "vehicleCapacityCap" 
when 
    $vehicle : Vehicle($capacityCap : capacityCap) 
    $customer : Customer(vehicle == $vehicle, demand > $capacityCap); 
then 
    scoreHolder.addHardConstraintMatch(kcontext, -1); 
end 
+0

아직도이 지정되지 않은 순서 (고객)을 떠나보십시오. –

+0

고객의 할당을 취소 할 수있는 방법은 무엇입니까? (나는 이것이 잘못되었다고 말하지 않습니다). 체인화 된 계획에서 모든 항목을 건설 단계에서 초기화해야한다고 생각했습니다. –

+0

죄송합니다, 제 잘못이었습니다. 당신이 준 잠꼬대는 아주 잘 작동했습니다. 나는 능력을 초기화하고있었습니다. 틀리게. –