我写了一个简短的例子来运行带有硬币或 Clp 的单纯形算法,像这样非常简单:
ClpSimplex solver;
solver.readLp(file_in);
solver.initialSolve();
if(solver.isProvenOptimal()) {
int ncol = solver.getNumCols();
const double *solution = solver.getColSolution();
for(int i=0; i<ncol; i++) {
printf("%f ", solution[i]);
}
printf("\n");
}
if(solver.isAbandoned())
printf("Numerical problems found\n");
if(solver.isProvenPrimalInfeasible())
printf("Primal Infeasible\n");
if(solver.isProvenDualInfeasible())
printf("Dual Infeasible\n");
现在我有了解决方案,我想做敏感性分析,也就是说,改变目标函数和/或第二个成员,然后检查相同的基础是否仍然是最优的(当然不是从头开始!! )
硬币或 Clp 是否能够做到这一点以及如何做到这一点?如果没有,你知道另一个免费的 LP 求解器吗?