Frage

Do jemand wissen, jede einfache Solver, die lineare Einschränkung mathematische Modelle lösen kann? Beispiel ein einfaches Modell:

a + b + c = 100;
a/b/c = 2/3/4;
a > d

Ich verwende MS Solver Stiftung und das ist mein C # -Code, aber es UnsolvableModelException werfen:

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

Vielen Dank für jede Hilfe

Edit:

Da int CSP (Constraint sstisfaction Programmierung) Problem, sollten Sie keine Richtlinie verwenden, wenn es zu lösen. Der Code sollte sein:

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

Aber ich weiß nicht, warum ich langsam lief ich nur die erste Lösung in der Lösungsmenge benötigen.

War es hilfreich?

Lösung

Je nach Bedarf kann Wolfram Alpha nützlich sein (zumindest für die Überprüfung). Ich bezweifle, dass Sie komplexe Probleme lösen kann, weil die Eingangslänge begrenzt ist. Aber für einfache Probleme wie Ihr Beispiel, es ist OK.

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

alt text

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top