使用ojAlgo SimplexSolver获取对偶变量、缩减成本及指定求解器
ojAlgo 51.4.0线性规划求解问题解答
针对使用ojAlgo 51.4.0版本Simplex求解线性规划时遇到的对偶变量、缩减成本获取及求解器指定问题,解答如下:
1. 获取对偶变量
result.getMultipliers()返回空的原因是未启用对偶变量计算,且需确保使用的求解器支持输出对偶信息。正确步骤:
- 先指定使用SimplexSolver(见问题3)
- 通过模型选项启用对偶变量计算:
primModel.options.setParameter(SolverUtils.INCLUDE_DUALS, true); - 求解完成后,
result.getMultipliers()即可获取对偶变量,其顺序与原模型中约束的添加顺序(a1、a2、a3)一一对应。
2. 获取缩减成本
缩减成本可直接从模型的Variable实例中读取,求解完成后调用getReducedCost()方法:
double x1ReducedCost = x1.getReducedCost(); double x2ReducedCost = x2.getReducedCost();
注:最优解中基变量的缩减成本为0,非基变量的缩减成本反映该变量增加单位值对目标函数的影响。
3. 强制使用SimplexSolver的最佳方式
你当前使用的debug(SimplexSolver.class)是调试专用方法,并非正式指定求解器的API。正确方式是使用Optimisation.Options的setSolver()方法:
primModel.options.setSolver(SimplexSolver.class);
该方法是替代已废弃addPreferredSolver()的官方推荐方案,能确保ojAlgo优先使用指定的SimplexSolver。
修改后的示例代码
/** * 问题:最大化 2*x1 + 3*x2 * 约束条件: * 4*x1 + 8*x2 ≤ 12 * 2*x1 + x2 ≤ 3 * 3*x1 + 2*x2 ≤ 4 * x1, x2 ≥ 0 */ ExpressionsBasedModel primModel = new ExpressionsBasedModel(); Variable x1 = primModel.addVariable("X1").lower(0).weight(2); Variable x2 = primModel.addVariable("X2").lower(0).weight(3); Expression a1 = primModel.addExpression(); Expression a2 = primModel.addExpression(); Expression a3 = primModel.addExpression(); a1.set(x1, 4).set(x2, 8).upper(12); a2.set(x1, 2).set(x2, 1).upper(3); a3.set(x1, 3).set(x2, 2).upper(4); // 配置求解器并启用对偶计算 primModel.options.setSolver(SimplexSolver.class); primModel.options.setParameter(SolverUtils.INCLUDE_DUALS, true); Optimisation.Result result = primModel.maximise(); // 输出对偶变量 Optional<Access1D<?>> multipliers = result.getMultipliers(); if (multipliers.isPresent()) { Access1D<?> dualVars = multipliers.get(); System.out.println("对偶变量(对应约束a1、a2、a3):"); for (int i = 0; i < dualVars.count(); i++) { System.out.printf("λ%d = %.4f%n", i+1, dualVars.doubleValue(i)); } } // 输出缩减成本 System.out.println("缩减成本:"); System.out.printf("X1: %.4f%n", x1.getReducedCost()); System.out.printf("X2: %.4f%n", x2.getReducedCost()); System.out.println(result.toString());
内容的提问来源于stack exchange,提问作者Taxation
相关产品推荐
相关产品推荐

