如何在SCPSolver中为LP添加非负面约束?

时间:2016-09-26 22:30:36

标签: java linear-programming 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);

现在在xy添加非负性约束,我可以补充一下:

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()

1 个答案:

答案 0 :(得分:0)

是的,就像这样。

lp.setLowerbound(new double[lp.getDimension()]);

将所有变量的下限设置为零。