연마 중에 어떤 콜백이 호출됩니까? 좀 더 구체적으로, 폴리싱 중에 발견 된 각각의 새로운 솔루션에 대해 호출되는 콜백이 있습니까?CPLEX : 연마 중 솔루션마다 호출 된 모든 콜백이 발견 되었습니까?
CIP ++에서 MIPInfoCallback을 사용하는 코드가 있는데 & B에서 괜찮 았지만 연마 중에는 연마가 20 ~ 30 개의 개선 된 솔루션을 찾더라도 호출되지 않는 것 같습니다. 문서에서는 연마 중에 콜백이 정상적으로 호출되지만, 각 노드를 탐색하기 전에 MIPInfoCallback이 호출되는 경우가있을 수 있으며, 제 경우에는 폴리싱이 추가 노드를 탐색하지 않을 수도 있습니다.
나는 현 재 콜백을 사용하여 전환을 시도했지만 저에게는 큰 성능 영향이있는 것 같습니다. MIPInfoCallback에서 내 콜백 유형으로 내 콜백 유형을 변경하면 IncumbentCallback이 약 20에서 첫 번째 정수 가능 솔루션을 얻을 수있는 시간을 변경합니다. 3 시간 이상 (필자는 실제로 콜백 유형을 변경하면서 콜백 본문을 변경하지 않고 그대로 유지). 나는 이것이 현 재 콜백의 사용이 검색에서 어떤 것을 꺼 버리기 때문에 이것이라고 생각한다.
이것은 CPLEX 12.1이 포함 된 Windows의 C++이며 곧 12.5로 업데이트 할 예정입니다.
CPXsetincumbentcallbackfunc는 C++의 IncumbentCallback과 동일한 C API입니다. –
@DavidNehme : 예, 전체 퀘스트를 읽지 못했습니다. IncumbentCallback 등록시 사전 예방 조치가 있습니까? 나는 처음부터 끝까지 솔루션을 변경하는 것이 브랜치 앤드 바운드 검색의 단점 중 하나라고 생각하고 싶지만 C++ 라이브러리 이상을 먼저 배제하고 싶습니다. (나는'EpLin'에 대해 알아 냈을 때 C++ 라이브러리에서 소리 지르지 않고 도망 쳤다. 기본적으로 문서화되지 않은 데이터 검사를하는 것을 보았다.) – tmyklebu