gpt4 book ai didi

c++ - LPSolve C++源码库和IDE给出不同的LP任务求解结果

转载 作者:太空宇宙 更新时间:2023-11-04 13:14:23 26 4
gpt4 key购买 nike

我有 LP 任务。问题突然出现了。我使用自动代码从节点和线的两个 vector 创建目标函数、方程和约束,我还使用该方法以 LPSolve 格式创建我的 tas 代码并将其写入文件。
例如:

/* Objective function */
max: +y4 +y5 +y6;

/* Constraints */
n1: +x4 -y4 -z4_5_4 -z4_6_5 +z5_4_8 +z6_4_9 = 0;
n2: +x5 -y5 +z4_5_4 -z5_6_6 +z6_5_7 -z5_4_8 +z6_5_10 -z5_6_11 = 0;
n3: +x6 -y6 +z4_6_5 +z5_6_6 -z6_5_7 -z6_4_9 -z6_5_10 +z5_6_11 = 0;

/* Variable bounds */
x4 <= 16210;
x5 <= 16600;
x6 <= 17950;
y4 <= 15000;
y5 <= 15000;
y6 <= 15000;
z4_5_4 <= 2000;
z4_6_5 <= 2000;
z5_6_6 <= 1000;
z6_5_7 <= 1000;
z5_4_8 <= 2000;
z6_4_9 <= 2000;
z6_5_10 <= 1000;
z5_6_11 <= 1000;

在文件中创建和写入方程后,我执行求解器:

int result = solve(lp);

通常对于具有随机值的任务,我会得到这样的结果:

Var-s    Result
45000
x4 15000
x5 15000
x6 15000
y4 15000
y5 15000
y6 15000
z4_5_4 0
z4_6_5 0
z5_4_8 0
z5_6_11 0
z5_6_6 0
z6_4_9 0
z6_5_10 0
z6_5_7 0

但是在 LPSolve IDE 中我得到了这样的结果(我认为这是正确的结果):

Var-s    Result
45000
x4 16210
x5 16600
x6 12190
y4 15000
y5 15000
y6 15000
z4_5_4 400
z4_6_5 810
z5_4_8 0
z5_6_11 1000
z5_6_6 1000
z6_4_9 0
z6_5_10 0
z6_5_7 0

在一些论坛上,我读到最好使用 "1E-5" 代替 "0""1000" 代替 “1.0” 作为我的目标函数中的系数。我尝试这样做,并且在求解器 IDE 和我的程序中得到了相同的结果,但是任务中的随机值没有改变结果。
所以,我需要得到像 LPSolve IDE(最后写的)那样的结果,但使用我的程序。如果可能的话,请帮助我。
使用的版本 LPSolve v-5.5.2.3、v-5.5.2.0

最佳答案

所以,我和一些人交谈过,他多次使用 LPSolve 并且知道一些陷阱。在我的问题中,我有方程式和约束条件,如果我们将 x、y、z 未知值替换为结果解,方程式将得到满足。

/* Constraints */
n1: +x4 -y4 -z4_5_4 -z4_6_5 +z5_4_8 +z6_4_9 = 0;
n2: +x5 -y5 +z4_5_4 -z5_6_6 +z6_5_7 -z5_4_8 +z6_5_10 -z5_6_11 = 0;
n3: +x6 -y6 +z4_6_5 +z5_6_6 -z6_5_7 -z6_4_9 -z6_5_10 +z5_6_11 = 0;

/* satisfied equations */
n1: +15000 -15000 -0 -0 +0 +0 = 0;
n2: +15000 -15000 +0 -0 +0 -0 +0 -0 = 0;
n3: +15000 -15000 +0 +0 -0 -0 -0 +0 = 0;

LPSolve 将找到最佳解决方案并在 IDE、程序等中编写几个不同的解决方案。在这种情况下,当 Y 是负载,X 是发电,Z 是流量时,当负载生成较少时,我们不需要流量来平衡系统,在程序中我有示例中的解决方案,但在 IDE 中也有正确的解决方案。

因此,在您认为求解器写出错误解之前,您需要检查模型、目标函数、方程和约束,并尝试用约束替换结果值以获得满意的方程或尝试求解对偶问题。

下次我尝试在目标函数中找到特殊的constrians。也许它可以帮助某人。

关于c++ - LPSolve C++源码库和IDE给出不同的LP任务求解结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38117910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com