Pregunta

Do Alguien sabe cualquier programa de solución simple que puede resolver modelos matemáticos lineales restricción? Ejemplo de un modelo simple:

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

Estoy usando MS Solver fundación y este es mi código C #, pero tirar 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);

Gracias por cualquier ayuda

Editar

Debido int CSP (restricción sstisfaction programación) problema, no debe utilizar cualquier Directiva en la resolución de la misma. El código debe ser:

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

Sin embargo, no sé por qué me encontré a lentamente necesito solamente la primera solución en el conjunto solución.

¿Fue útil?

Solución

En función de sus necesidades, Wolfram Alpha puede ser útil (por lo menos para la verificación). Dudo que pueda solucionar los problemas complejos, debido a que la longitud de entrada es limitada. Sin embargo, para los problemas simples como tu ejemplo, está bien.

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

text alt

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top