有谁知道任何可以解决线性约束数学模型的简单求解器?示例一个简单的模型:

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

我正在使用MS Solver Foundation,这是我的C#代码,但是它抛出了UnlovableModeLexception:

        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(约束s straptraction编程)问题,因此在解决问题时不应使用任何指令。代码应该是:

    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可能很有用(至少用于验证)。我怀疑您是否可以解决复杂的问题,因为输入是限制的。但是对于简单的问题作为您的示例,没关系。

http://www.wolframalpha.com/input/?i= solve+a+%200 b+b+b+b+c+c+; 3d%3D+100%3B+A%2fb+; %2FC%3D%3D3%2F4%3B+A+%3E+D

alt text

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top