2016-06-09 4 views
1

픽업 및 배달 문제 (PDPTW)에 대해 OptaPlanner을 구성했습니다. 내 구성에서는 VRPTW 예제와 매우 유사한 체인 계획 변수를 사용합니다. FIRST_FIT_DECREASING 구조 휴리스틱뿐만 아니라 대부분의 지역 검색 알고리즘이 작동합니다. 스레드 "주요"java.lang.IllegalArgumentException가에서PDPTW를위한 OptaPlanner에서 가장 저렴한 삽입?

예외 : 나는 CHEAPEST_INSERTION 건설 휴리스틱을 시도 할 때, 나는 다음과 같은 예외가 resolvedCacheType (PHASE)와 resolvedSelectionOrder 가진 valueSelectorConfig (ValueSelectorConfig (previousVisit)() SORTED)는 EntityIndependentValueSelector (Initialized (FromSolutionPropertyValueSelector (previousVisit)))를 기반으로해야합니다. @ValueRangeProvider 주석을 확인하십시오.

문제는 내가 실제로 오류 메시지를 이해하지 못한다는 것입니다. 내 @ValueRangeProvider 주석을 확인했는데 모든 것이 정확하다고 보입니다. This question 비슷한 문제가 제기되는 것처럼 보입니다. 여기서는 각 엔티티의 값 범위 목록을 수동으로 정렬하는 방법을 제안합니다. 내게이 해결 방법이 내 사례에 적용되는지 또는 적용 방법이 적용되는지는 분명하지 않다.

나는 OptaPlanner 6.3.0.Final을 사용하고 있습니다.

나는 다음과 같은 구성을 사용하고 있습니다 플래너를 인스턴스화 :

<?xml version="1.0" encoding="UTF-8"?> 
<solver> 
    <environmentMode>REPRODUCIBLE</environmentMode> 
    <randomType>MERSENNE_TWISTER</randomType> 
    <solutionClass>com.github.rinde.logistics.pdptw.solver.optaplanner.PDPSolution</solutionClass> 
    <entityClass>com.github.rinde.logistics.pdptw.solver.optaplanner.ParcelVisit</entityClass> 
    <entityClass>com.github.rinde.logistics.pdptw.solver.optaplanner.Visit</entityClass> 

    <scoreDirectorFactory> 
     <scoreDefinitionType>HARD_SOFT_LONG</scoreDefinitionType> 
     <incrementalScoreCalculatorClass>com.github.rinde.logistics.pdptw.solver.optaplanner.ScoreCalculator</incrementalScoreCalculatorClass> 
     <initializingScoreTrend>ONLY_DOWN</initializingScoreTrend> 
    </scoreDirectorFactory> 

    <termination> 
     <unimprovedMillisecondsSpentLimit>180000</unimprovedMillisecondsSpentLimit> 
    </termination> 

    <constructionHeuristic> 
     <constructionHeuristicType>CHEAPEST_INSERTION</constructionHeuristicType> 
    </constructionHeuristic> 

    <localSearch> 
     <unionMoveSelector> 
      <moveIteratorFactory> 
       <moveIteratorFactoryClass>com.github.rinde.logistics.pdptw.solver.optaplanner.MoveItFactory</moveIteratorFactoryClass> 
      </moveIteratorFactory> 
      <changeMoveSelector> 
       <filterClass>com.github.rinde.logistics.pdptw.solver.optaplanner.ChangeFilter</filterClass> 
      </changeMoveSelector> 
      <changeMoveSelector> 
       <entitySelector> 
        <filterClass>com.github.rinde.logistics.pdptw.solver.optaplanner.EntityFilter</filterClass> 
       </entitySelector> 
      </changeMoveSelector> 
     </unionMoveSelector> 
    </localSearch> 
</solver> 

클래스는 여기에 정의됩니다 https://github.com/rinde/RinLog/tree/develop/src/main/java/com/github/rinde/logistics/pdptw/solver/optaplanner

내가 CHEAPEST_INSERTION 시도에 관심이 있어요 그 이유는 내가 발견 한 것입니다 내 가장 저렴한 삽입 구현은 FIRST_FIT_DECREASING과 함께 Simulated Annealing과 매우 유사합니다. OptaPlanner의 내 사용법이 올바른지 확인하기 위해 OptaPlanner의 가장 저렴한 삽입 물과 비교하고 싶습니다.

업데이트 : 난 그냥, 문제는 (I 인해 API 변화에 코드의 일부를 변경했고, 자바를 사용하는 내 프로젝트를 변경했다 고정 것 같다 OptaPlanner 7.0.0-SNAPSHOT으로 그것을 시도 8).

+0

버그처럼 보입니다. 나는 [jira를 만들었다] (https://issues.jboss.org/browse/PLANNER-597). –

+0

가장 저렴한 삽입은 First Fit 변형보다 훨씬 나쁘기 때문에 많이 사용되지 않습니다. –

+0

** 가장 저렴한 삽입 **을 사용하는 optaplanner-example VRPTW로는 재현 할 수 없습니다. 6.4.0. 최종 결과를 재현 할 수 있는지 확인하고 솔버 설정을 질문에 추가하십시오. 유효한 구성 인 경우 PLANNER-597을 다시 엽니 다. –

답변

0

OptaPlanner 6.4.0.Final (OptaPlanner 7.X)에서 수정되었습니다.

내 구성에 버그가 있음이 밝혀져 6.3.0을 사용했습니다. 6.4.0. 최종과는 반대입니다.

0

7.0.0.Beta1의 OptaPlanner에서 수정되었습니다.

관련 문제