1

線形制約数学モデルを解決できる単純なソルバーを知っている人はいますか? 簡単なモデルの例:

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

ただし、なぜゆっくりと走ったのかはわかりません。ソリューションセットの最初のソリューションのみが必要です。

4

1 に答える 1

1

ニーズによっては、Wolfram Alphaが役立つ場合があります(少なくとも検証には)。入力が長さ制限されているため、複雑な問題を解決できるとは思えません。しかし、あなたの例としての単純な問題については、それは問題ありません。

http://www.wolframalpha.com/input/?i=solve+a+%2B+b+%2B+c+%3D%3D+100%3B+a%2Fb+%3D%3D+2%2F3%3B+b %2Fc%3D%3D3%2F4%3B + a +%3E + d

代替テキスト

于 2010-11-26T04:20:39.840 に答える