0
私はSCPSolverを使用して、Javaの線形問題を定式化しています。SCPSolverのLPに非負制約を追加するにはどうすればいいですか?
玩具線形問題:
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"));
:今、私は追加することができ
x
と
y
に非負制約を追加する
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);
:
min x + y
x + 2y >= -1
x - 2y >= -1
は、などのJavaで書くことができます
しかし、非負制約を追加するための単一の関数呼び出しがありますfo rすべての変数? lp.addAllNonNegativityConstraints()
のようなもの?
私はデフォルトで変数は非負であると思います。それ以外の場合は[setLowerbound](http://scpsolver.org/javadoc/scpsolver/problems/MathematicalProgram.html#setLowerbound(double []))を呼び出します。 –
@ErwinKalvelagenさんがdocsにリンクしてくれてありがとうございます。 'setLowerbound'が動作します!しかし、デフォルトでは、すべての変数は無制限です – raghavsood33