带纸浆的线性规划(优化)

2024-09-28 03:15:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想问你一些关于优化线性规划的问题。我已经成功地设置了模型。但是,我在设置元启发式以减少计算时间方面存在问题。基本优化模型如下所示:

在元启发式算法中,有一个while循环,其条件如下:
$\sum{i=1}^i b_i y{u i\leq\sum{k=1}^k q{k$do

我试图通过以下代码实现此条件:

while lpSum(b[i]*y[i] for i in I)<=lpSum(q[k] for k in K): 

如果分别计算这两个和,我会得到正确的结果。然而,当我将它们放入这个条件中时,代码会运行到一个无止境的循环中,即使条件得到满足,它也会打破循环。我想这与数据类型有关,并且参数不能是LpAffineExpression。然而,我真的很难理解这个问题

我希望你理解我的问题,我会非常感谢你的想法和解释!请告诉我,如果你需要一些具体的信息-抱歉,作为一个初学者

提前非常感谢,并致以最良好的问候, 伯恩哈德


Tags: 代码in模型算法for参数时间条件
1条回答
网友
1楼 · 发布于 2024-09-28 03:15:57

lpSum没有一个值,就像正则和一样

任何Python对象都可以使用__eq__之类的内置公式与其他对象进行比较。我就是这样说的date(2000, 1, 1) < date(2000, 1, 2)。但是,lpAffineExpressions是约束的一种类型。它们的内容是变量,由LP解算器求解,因此它们还没有任何值

因此lpSum(x) <= lpSum(y)的返回值不是真的或假的,就像正常方程一样,但它是一个方程。方程不是None,或False,或任何其他假值。你所说的相当于while <some object>:,这总是正确的。这就是你的无限循环


我不知道“使用元启发式来减少计算时间”在这种情况下意味着什么——也许您运行LP解算器的一些迭代,然后对结果使用元启发式

如果是这种情况,请使用b[i].value()获取该解决方案中给出的变量b[i]的值,并确保以正则和计算总数

相关问题 更多 >

    热门问题