Solver решает проблему программирования ограничения

StackOverflow https://stackoverflow.com/questions/4282472

Вопрос

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

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

Я использую MS Solver Foundation, и это мой код C #, но оно бросает неразлагаться.

        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 (программирование SSTISFACTION SSTISFACTION), вы не должны использовать какую-либо директиву при ее решении. Код должен быть:

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

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

Это было полезно?

Решение

В зависимости от ваших потребностей, Wolfram Alpha может быть полезен (по крайней мере, для проверки). Я сомневаюсь, что вы можете решить сложные проблемы, потому что вход - это lenght-limited. Но для простых проблем, как ваш пример, все в порядке.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top