2013-10-08 2 views
0

다음 CVRPTW 문제가 있으며 OptaPlanner와 함께 좋은 솔루션을 찾으려고합니다. 시간은 hh : mm : ss 형식입니다.OptaPlanner CVRPTW - 용량 문제가있는 솔루션

내 DRL 파일은 this입니다. 또한 나는 준비 시간 이전에 도착과 관련된 엄격한 구속을 정의했다. 나는 10 개 항목 1 개 창고의 용량 모두 2 개 차량이

PROBLEM STATEMENT: 
CustID ReadyTIME DueTIME  ServiceDUR DEMAND 
1  20:38:18 20:44:18 00:05:00 2 
2  20:20:53 20:26:53 00:05:00 4 
3  20:51:39 20:57:39 00:05:00 3 
4  20:20:18 20:26:18 00:05:00 6 
5  20:34:15 20:40:15 00:05:00 5 
6  20:21:40 20:27:40 00:05:00 10 

:이 문제 문입니다

<termination> 
    <terminationCompositionStyle>OR</terminationCompositionStyle> 
    <maximumSecondsSpend>10</maximumSecondsSpend> 
    <scoreAttained>0hard/-750000soft</scoreAttained> 
</termination> 

: 내 해결사 구성은 종료 태그의 차이, this 같다 .

Vehicle 1 Capacity 10 - from Depot [1] 
[6]  D: 10 Ar.T: 20:21:40 Prev.D: 00:02:21 Next.D: --:--:-- 

Vehicle 2 Capacity 10 - from Depot [1] 
[4]  D: 6 Ar.T: 20:20:18 Prev.D: 00:01:08 Next.D: 00:02:21 
[2]  D: 4 Ar.T: 20:27:42 Prev.D: 00:02:24 Next.D: 00:03:38 
[5]  D: 5 Ar.T: 20:36:03 Prev.D: 00:03:21 Next.D: 00:02:09 
[1]  D: 2 Ar.T: 20:43:26 Prev.D: 00:02:23 Next.D: 00:07:23 
[3]  D: 3 Ar.T: 20:55:40 Prev.D: 00:07:14 Next.D: --:--:-- 

(D = 수요 Ar.T = 도착 시간, Prev.D가 = 거리 이전 위치로부터 다음 :

솔루션 (고객 차량 그룹화 및 도착 시간에 따라 정렬)이다. D 거리)

차량 2는 6 + 4 + 5 + 2 + 3 = 20 품목을 수송해야한다는 것을 알 수 있습니다. 이는 용량보다 큽니다. 구성의 용량과 관련하여 어려운 문제가있는 경우 해결사에서이 솔루션을 제안하는 이유를 이해할 수 없습니다.

내 규칙을 고려할 때 이는 받아 들일 수없는 해결책입니다. 내가 놓친 게 있니? 해결자가 솔루션을 제공하지 않는 조건이 있습니까? "솔버 실패"종료를 고려하고 있습니까?

답변

0

올바른 내가 잘못,하지만 당신은 할 경우 :

  • 30 (6 + 4 + 5 + 2 + 3 + 10)의 총 수요의

  • 총 용량

그것은 당신의 트럭은 20를 수송 할 때 30 개 항목을 수송하는 것은 불가능 20 (10 각 2 개 차량) 항목. 실현 가능한 솔루션이 없습니다 (OptaPlanner가 찾은 가장 좋은 실행 불가능한 솔루션을 제공합니다).

참고 : 동일한 차량을 여러 번 사용할 수있는 경우 추가 차량 인스턴스를 추가하고 동일한 번호판을 사용하여 여러 Vehicle 인스턴스 사용에 불이익을주는 제약 조건을 추가하십시오.

+0

이 데이터 세트와 같이 실행 불가능 성을 쉽게 입증 할 수 있다는 점은 흥미 롭습니다. 그러나 종종 그것은 불가능합니다 (그리고 불가능 성은 np-complete라고 증명함). 예를 들어, 2 대의 차량 (용량 10 모두)으로 3 가지 요구 (각 수요 6)를 가정하십시오. '3 * 6 <2 * 10'이라고해도 실현 불가능합니다. 차량 1 대 이상을 보유 할 수있는 차량은 없지만 차량 1 대 이상을 보유 할 수 있습니다. –

+0

필자는 OptaPlanner가 동일한 차량을 여러 번 사용할 수 있다고 가정했기 때문에 이는 잘못된 가정입니다. 차량 인스턴스를 추가 할 것을 제안하지만 새로운 인스턴스의 ID가 다릅니다. 그래서 여러 용도를 고려하기 위해, 내가 2 대 이상의 차량을 가지고있는 것처럼 문제를 모델링해야합니까? – user2664655

+0

네, 깨끗한 방법은'Vehicle'을'VehicleTrip'으로 바꾸고'Vehicle'을 다시 추가하는 것입니다. (그리고'VehicleTrip'을 1'' Vehicle에 연결하십시오.) 그런 다음 소프트 제약을 추가하여 차량 당 숫자 이동을 최소화하십시오. 여행 횟수 계산에 도움이됩니다.) –