gpt4 book ai didi

python - lpsolve - 每次更改约束顺序时结果都会不同

转载 作者:太空宇宙 更新时间:2023-11-03 16:19:15 26 4
gpt4 key购买 nike

我注意到 lpsolve 库的奇怪行为(在 python 3.4 中使用它)。

当我更改添加到 lpsolve 模型中的约束顺序时,结果也略有不同。

如果有任何提示为什么会发生这种情况,我会很高兴。

添加两个模型以重现案例:

    lp model 1: http://pastie.org/private/mginn1s7orxkq58mv3dxrw
lp model 2: http://pastie.org/private/ron5k7y3hipxhci1hap8nq

如果您运行这两个模型,您将得到略有不同的结果(而目标函数几乎相同):

    obj1:  458093300.0000001
obj2: 458093300.00000006

vars1: [0.0, 350260.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1900.0, 1198215.0, 318324.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4310807.0, 0.0, 0.0, 0.0, 1345965.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4505218.0, 0.0, 1689912.0, 0.0, 0.0, 0.0, 0.0, 0.0, 479929.0, 0.0, 0.0, 0.0, 0.0, 0.0, 782031.0, 0.0, 0.0, 190146.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5224280.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3058056.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 650240.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 509539.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1351133.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 301872.0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 380880.0, 268556.0, 1201311.0]
vars2: [0.0, 350260.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1198215.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 515323.0, 0.0, 0.0, 0.0, 1345965.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4505218.0, 0.0, 1010333.0, 0.0, 0.0, 0.0, 0.0, 0.0, 479938.0, 0.0, 0.0, 0.0, 0.0, 0.0, 782031.0, 0.0, 0.0, 190146.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5224280.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3082057.0, 0.0, 0.0, 3061853.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 650240.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 623447.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1347336.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 301872.0, 305463.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 536019.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 380880.0, 268556.0, 1201311.0]

要重现的 Python 代码:

    from lpsolve55 import *

mod1 = lpsolve("read_lp", "/home/../model_1.lp")
mod2 = lpsolve("read_lp", "/home/../model_2.lp")

res1 = lpsolve('solve', mod1)
res2 = lpsolve('solve', mod2)

obj1 = lpsolve('get_objective', mod1)
obj2 = lpsolve('get_objective', mod2)

vars1 = lpsolve('get_variables', mod1)[0]
vars2 = lpsolve('get_variables', mod2)[0]


print("obj1: ", obj1)
print("obj2: ", obj2)

print("vars1: ", vars1)
print("vars2: ", vars2)

最佳答案

这可能是因为您的模型在数值上不完全稳定。您的输入变量可能不在同一范围内(例如:x1 可以是 -1..+1,x2 可以是 -1000000..+1000000)

关于python - lpsolve - 每次更改约束顺序时结果都会不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38662613/

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