Кто-нибудь знает какой-нибудь простой решатель, который может решать математические модели линейных ограничений?Пример простой модели:
a + b + c = 100;
a/b/c = 2/3/4;
a > d
Я использую фундамент MS Solver, и это мой код на 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 (программирование ограничений), вы не должны использовать какие-либо директивы при ее решении.Код должен быть:
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);
Однако я не знаю, почему я бежал медленно, мне нужно только первое решение в наборе решений.