Choco 4.0.1
online manualによると、それはこのようなものでなければなりません:
SatFactory.addClauses(LogOp.ifOnlyIf(x, LogOp.and(a, LogOp.nor(b))), model);
// with static import of LogOp
SatFactory.addClauses(ifOnlyIf(x, and(a, nor(b))), model);
しかし、マニュアルは古くなっているようです。私は入力を否定するnot()
のような単一のパラメータでnor()
を使用していた
import static org.chocosolver.solver.constraints.nary.cnf.LogOp.and;
import static org.chocosolver.solver.constraints.nary.cnf.LogOp.ifOnlyIf;
import static org.chocosolver.solver.constraints.nary.cnf.LogOp.nor;
import org.chocosolver.solver.Model;
import org.chocosolver.solver.variables.BoolVar;
public class AkChocoSatDemo {
public static void main(String[] args) {
// 1. Create a Model
Model model = new Model("my first problem");
// 2. Create variables
BoolVar x = model.boolVar("X");
BoolVar a = model.boolVar("A");
BoolVar b = model.boolVar("B");
// 3. Post constraints
// LogOp omitted due to import static ...LogOp.*
model.addClauses(ifOnlyIf(x, and(a, nor(b))));
// 4. Solve the problem
model.getSolver().solve();
// 5. Print the solution
System.out.println(x); // X = 1
System.out.println(a); // A = 1
System.out.println(b); // B = 0
}
}
: などはコメントで提案、私が到着しました。
お返事ありがとうございますが、サンプルにSatFactoryを使用すると問題がありますが、メソッドに到達できません。私は何か間違っているのかしらと思っていました。私はあなたが試してそれが動作する場合私に知らせていただければ感謝します。 – begumgenc
実際、私はそれを少し修正したし、動作しているようだ。 model.addClauses(LogOp.ifOnlyIf(x、LogOp.and(a、LogOp.nor(b)))); – begumgenc