首页 文章

显示前五大解决方案SCIP

提问于
浏览
1

我编写了一个整数编程模型并使用SCIP解决了它 . 我可以很容易地获得最佳解决方案,但我也有兴趣获得接下来的四个最佳解决方案 . 我可以输入显示allsolutions来向我展示SCIP shell中的一些解决方案,但我最感兴趣的是其他4个解决方案,并希望从c程序而不是shell中执行此操作 . 我怎样才能做到这一点?

1 回答

  • 3

    您可以使用scip.h提供的解决方法来执行此操作:

    #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自动从最佳到最差存储解决方案,因此只需迭代 sols -array的前5个解决方案即可 . 请注意,SCIP默认最多可存储最佳的100个解决方案 . 您可以通过参数 limits/maxsol 更改此行为,例如,通过添加行

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

    在解决问题之前到上面的代码 .

相关问题