2014-09-28 8 views
1

정수 프로그래밍 모델을 작성하고 SCIP를 사용하여 해결했습니다. 나는 최적의 솔루션을 쉽게 얻을 수 있지만 다음 네 가지 최상의 솔루션도 얻는 데 관심이 있습니다. 나는 display allsolutions를 입력하여 SCIP 셸에서 몇 가지 솔루션을 보여줄 수는 있지만 대부분 4 가지 솔루션에 관심이 있으며 셸이 아닌 C++ 프로그램에서이 작업을 수행하려고합니다. 어떻게해야합니까?상위 5 개 솔루션 표시 SCIP

답변

3

당신은 그렇게 할 scip.h가 제공하는 솔루션의 방법을 사용할 수 있습니다 : 그것은 sols의 처음 5 개 솔루션을 반복하기에 충분하도록

#define SOLSTOPRINT 5; 

SCIP* scip; 
SCIP_SOL** sols; 
int nsols, i; 

// ... 
// put here your code to create a SCIP instance, read in a problem and call the 
// the solving method of SCIP 
// ... 

sols = SCIPgetSols(scip); 
nsols = SCIPgetNSols(scip); 

for(i = 0; i < MIN(nsols, SOLSTOPRINT); ++i) 
{ 
    SCIP_CALL(SCIPprintSol(scip, sols[i], NULL, FALSE)); 
} 

SCIP는 최악의 최고의에서 자동으로 솔루션을 저장 -정렬. SCIP은 기본적으로 최대 개의 솔루션을 찾을 수 있습니다. 당신은 문제를 해결 전에 위의 코드 에 줄을

SCIP_CALL(SCIPsetIntParam(scip, "limits/maxsol", 200)); 

을 추가하여, 예를 들어, 매개 변수 limits/maxsol를 통해이 동작을 변경할 수 있습니다.

+0

감사합니다. 나는 이것에 잠시 붙어 있었다. – migs

관련 문제