решатель решает задачу программирования в ограничениях

Кто-нибудь знает какой-нибудь простой решатель, который может решать математические модели с линейными ограничениями? Пример простой модели:

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

Однако я не знаю, почему я бежал медленно, мне нужно только первое решение в наборе решений.


person coolkid    schedule 26.11.2010    source источник
comment
Я могу найти образец CSP для MSF. Поэтому я знаю, где проблема. Спасибо, в любом случае   -  person coolkid    schedule 26.11.2010


Ответы (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

альтернативный текст

person Dr. belisarius    schedule 26.11.2010
comment
но я не могу использовать его как библиотеку для своего приложения - person coolkid; 26.11.2010
comment
@coolkid Они предлагают веб-сервис ($$$). Вот почему я начал свой ответ с В зависимости от ваших потребностей - person Dr. belisarius; 26.11.2010