résoudre solveur problème de la programmation par contraintes
-
28-09-2019 - |
Question
Ne quelqu'un sait tout solveur simple qui peut résoudre des modèles mathématiques de contraintes linéaires? Exemple d'un modèle simple:
a + b + c = 100;
a/b/c = 2/3/4;
a > d
J'utilise MS base Solver et ceci est mon code C #, mais il jette 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);
Merci pour toute aide
Modifier
Parce problème int CSP (contrainte de programmation sstisfaction), vous ne devez pas utiliser la directive lors de résoudre. Le code doit être:
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);
Cependant, je ne sais pas pourquoi j'ai couru lentement je ne ai besoin la première solution dans l'ensemble de la solution.
La solution
En fonction de vos besoins, Wolfram Alpha peut être utile (au moins pour la vérification). Je doute que vous pouvez résoudre des problèmes complexes, car l'entrée est de longueur limitée. Mais pour des problèmes simples comme votre exemple, il est OK.