2014-09-16 1 views
0

Optaplanner를 버전 6.0.1에서 6.1.0으로 업데이트 한 후 동기 종료를 사용할 때 해결자가 중단되지 않는 것으로 나타났습니다.업데이트 후 해 찾기 동기 종료가 작동하지 않음

예를 들어, 다음과 같은 구성의 모두가 더 이상 작동하지 않습니다

<termination> 
     <secondsSpentLimit>5</secondsSpentLimit> 
    </termination> 

<termination> 
     <bestScoreLimit>-1000/0/0</bestScoreLimit> 
    </termination> 

무엇보다도 이상한의 follwing을 같은 동기 종료에 대한 잘못된 값을 사용하는 경우 :

아무런 오류가 발생하지 않습니다! 그래서 솔버가 동기 종료에 대해 더 이상 신경 쓰지 않는 것처럼 보입니다.

답변

1

secondsSpentLimit이 6.1.0. 최종에서 음수가 아닌지 확실한 검사는 없습니다. 하지만 좋은 생각인데, I just added it for 6.2.0.Beta3. daemonMode을 추정

나는 6.1.0에서 동기 종료에 솔버 정지를 보았다

, 그래서 는 (기본값 인) 거짓, 귀하의 경우 특별한 무언가가 있어야합니다. 귀하의 경우 deamonMode이 지정되지 않았거나 (false) 확인하십시오. jira를 제출하고 (optaplanner.org -> code> 문제 만들기 참조) 재생산 지퍼를 첨부하십시오.

또한 해지가 <solver> 또는 <phase> 안에 있는지 다시 확인하십시오. 그것이 (솔버 대신) 단계에 있고 마지막 단계가 아니라면 솔버를 멈추지 않습니다.

+0

실시간 계획을 사용하고 있지 않기 때문에 daemonMode가 지정되지 않았습니다. 종료는 물론 안에 있습니다. 반대로 마지막 단계의 종료는 단계를 멈추지 만 solve()에서 돌아 오지 않으므로 terminateEarly()를 호출 할 때까지는 아무 것도 기다리지 않는 것처럼 보입니다. Jira에 관해서는 불행히도 프로젝트의 전체 코드를 제출할 수 없습니다. –

+0

수정 프로그램을 찾을 수있는 다른 단서가 있습니까? –

+1

난 단지 고립 된 재생기 (전체 프로젝트가 아님)가 필요합니다. 내가 그것을 재현 할 수 없다면, 나는 그것을 고칠 수 없다 ... 어쨌든,'TimeMillisSpentTermination.isTerminated()'에 중단 점을 넣으십시오. 또한'LocalSearchDecider.decideNextStep()'과'DefaultLocalSearchPhase.solve()'에 종료 점을 사용하는 것에 중단 점을 넣으십시오 ('TimePackingTermination'은'TimeMillisSpentTermination'을 감싸고 있습니다). (원인에 관계없이) 여기에보고하십시오. –

관련 문제