LpSolve 和 OR-Tools GLOP 求解器的不同答案

问题描述 投票:0回答:1

我使用 Or-tools 用 C# 编写了这段代码来解决 LP 问题(下面的 LPSolve 脚本)

 public static void test(ConvolutionData data)
    {
        Solver solver = Solver.CreateSolver("GLOP");
        if (solver is null)
        {
            return;
        }

        Variable x1 = solver.MakeNumVar(0.1, double.PositiveInfinity, "x1");
        Variable x2 = solver.MakeNumVar(0.1, double.PositiveInfinity, "x2");
        Variable x3 = solver.MakeNumVar(0.1, double.PositiveInfinity, "x3");
        Variable t1 = solver.MakeNumVar(0.0, double.PositiveInfinity, "t1");
        Variable t2 = solver.MakeNumVar(0.0, double.PositiveInfinity, "t2");
        Variable u1 = solver.MakeNumVar(0.0, double.PositiveInfinity, "u1");
        Variable v1 = solver.MakeNumVar(0.0, double.PositiveInfinity, "v1");

        Constraint c1 = solver.Add(202 * x1 + 61 * x2 + 4 * x3 + t1 >= 0);
        Constraint c2 = solver.Add(204 * x1 + 57 * x2 + 5 * x3 + t2 >= 0);
        Constraint c3 = solver.Add(-2 * x1 + 4 * x2 - x3 + u1 - v1 == 0);

        solver.Minimize(t1 + u1 + v1 + t2);
        Solver.ResultStatus resultStatus = solver.Solve();
    }

为什么这个 .lp 脚本与 LpSolve 中的解不同? 或者只是因为解决方法不同?

/* Objective function */
min: t1 + t2 + u1 + v1;

202 x1 + 61 x2 + 4 x3 + t1 >= 0;
204 x1 + 57 x2 + 5 x3 + t2 >= 0;
-2 x1 + 4 x2 - x3 + u1 - v1 = 0;


x1 >= 0.1;
x2 >= 0.1;
x3 >= 0.1;

optimization linear-programming or-tools lpsolve
1个回答
0
投票

是的,目标是一样的。没有什么可以强制解决方案是相等的。

© www.soinside.com 2019 - 2024. All rights reserved.