如何在 SCPSolver 中向 LP 添加非负性约束?
How to add non-negativity constraints to an LP in SCPSolver?
我正在使用 SCPSolver 来制定 java 中的线性问题。
玩具线性问题:
min x + y
x + 2y >= -1
x - 2y >= -1
可以写成java为:
LinearProgram lp = new LinearProgram(new double[] { 1.0, 1.0 });
lp.addConstraint(new LinearBiggerThanEqualsConstraint(new double[] { 1.0, 2.0 }, -1.0, "c1"));
lp.addConstraint(new LinearBiggerThanEqualsConstraint(new double[] { 1.0, -2.0 }, -1.0, "c2"));
lp.setMinProblem(true);
LinearProgramSolver solver = SolverFactory.newDefault();
double[] sol = solver.solve(lp);
现在要在 x
和 y
上添加非负性约束,我可以添加:
lp.addConstraint(new LinearBiggerThanEqualsConstraint(new double[] { 1.0, 0.0 }, 0.0, "c3"));
lp.addConstraint(new LinearBiggerThanEqualsConstraint(new double[] { 0.0, 1.0 }, 0.0, "c4"));
但是是否有单个函数调用来为所有变量添加非负性约束?像 lp.addAllNonNegativityConstraints()
?
是的,像这样。
lp.setLowerbound(new double[lp.getDimension()]);
将所有变量的下限设置为零。
我正在使用 SCPSolver 来制定 java 中的线性问题。
玩具线性问题:
min x + y
x + 2y >= -1
x - 2y >= -1
可以写成java为:
LinearProgram lp = new LinearProgram(new double[] { 1.0, 1.0 });
lp.addConstraint(new LinearBiggerThanEqualsConstraint(new double[] { 1.0, 2.0 }, -1.0, "c1"));
lp.addConstraint(new LinearBiggerThanEqualsConstraint(new double[] { 1.0, -2.0 }, -1.0, "c2"));
lp.setMinProblem(true);
LinearProgramSolver solver = SolverFactory.newDefault();
double[] sol = solver.solve(lp);
现在要在 x
和 y
上添加非负性约束,我可以添加:
lp.addConstraint(new LinearBiggerThanEqualsConstraint(new double[] { 1.0, 0.0 }, 0.0, "c3"));
lp.addConstraint(new LinearBiggerThanEqualsConstraint(new double[] { 0.0, 1.0 }, 0.0, "c4"));
但是是否有单个函数调用来为所有变量添加非负性约束?像 lp.addAllNonNegativityConstraints()
?
是的,像这样。
lp.setLowerbound(new double[lp.getDimension()]);
将所有变量的下限设置为零。