lösen Solver Constraint-Programmierung Problem
-
28-09-2019 - |
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.
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.