線形制約数学モデルを解決できる単純なソルバーを知っている人はいますか? 簡単なモデルの例:
a + b + c = 100;
a/b/c = 2/3/4;
a > d
私は MS Solver Foundation を使用しています。これは私の C# コードですが、UnsolvableModelException がスローされます。
SolverContext solverContext = SolverContext.GetContext();
Model model = solverContext.CreateModel();
Decision a = new Decision(Domain.Real, "a");
Decision b = new Decision(Domain.Real, "b");
model.AddDecisions(a, b);
model.AddConstraint("fator", a / b == 4);
model.AddConstraint("sum", a + b == 5);
Solution solution = solverContext.Solve(new ConstraintProgrammingDirective());
Report report = solution.GetReport();
Console.WriteLine("a = {0} ; b = {1}", a, b);
助けてくれてありがとう
編集:
int CSP(constraint sstisfaction programming) の問題のため、それを解決するときにディレクティブを使用しないでください。コードは次のようになります。
SolverContext solverContext = SolverContext.GetContext();
Model model = solverContext.CreateModel();
Decision a = new Decision(Domain.Real, "a");
Decision b = new Decision(Domain.Real, "b");
model.AddDecisions(a, b);
model.AddConstraint("fator", a / b == 4);
model.AddConstraint("sum", a + b == 5);
Solution solution = solverContext.Solve();
Report report = solution.GetReport();
Console.WriteLine("a = {0} ; b = {1}", a, b);
ただし、なぜゆっくりと走ったのかはわかりません。ソリューションセットの最初のソリューションのみが必要です。