Python PuLP 递归错误

标签 python pandas linear-programming pulp

我正在使用 PuLP 库解决 LP 问题,我有一些奇怪的问题,我自己无法解释。我有近 100 个变量和约束,我想将其放入我的模型中,但我不能。它告诉我

RecursionError: maximum recursion depth exceeded in comparison

首先,我尝试在 for 循环中解析它:

for cent_artic in df_demand['REQUIRED']:
    display(df_offers[df_offers['REQUIRED']==cent_artic])
    lista = list(df_ofertas1[df_ofertas1['REQUERIDO']==cent_artic]['OFERTADO'])
    display(lista)
    prob += lpSum(lista) >= cent_artic_dict[cent_artic], "Restriccion para cent_artic "+cent_artic 

并且出现了 RecursionError。

我尝试只对问题施加一个限制:

prob += lpSum(['c-1_a-2757_p-13','c-1_a-2757_p-12','c-1_a-2757_p-188']) >= cent_artic_dict['c-1_a-2757']

而且是一样的。我不明白为什么 Python 会告诉我一些关于递归错误的信息,如果我尝试只传递一个方程......

cent_artic_dict = {'c-5_a-17372_p-188': var_c_5_a_17372_p_188,
                   'c-179_a-2757_p-188': var_c_179_a_2757_p_188,
                   'c-18_a-17372_p-188': var_c_18_a_17372_p_188,
                   'c-26_a-2757_p-18': var_c_26_a_2757_p_18,
                   'c-41_a-2757_p-18': var_c_41_a_2757_p_18,
                   'c-156_a-2757_p-188': var_c_156_a_2757_p_188,
                   'c-24_a-17372_p-188': var_c_24_a_17372_p_188, 
                   ...
                  }

现在,df_offers 的数据框的形状为 (89,6)。一开始是(89,21)

有人能解释一下为什么我会遇到 RecursionError 吗?谢谢。

我看到了另一个关于它的问题,但它没有答案,只有建议

最佳答案

我遇到了类似的问题,并且遇到了相同的递归错误。

对我来说,我遇到了数据类型问题,我的约束值存储为字符串而不是数字!这相当于原始问题中 cent_artic_dict['c-1_a-2757'] 中的值。一旦我的右侧约束是一个数字,我就可以开始了。根据评论,我认为 Krakenudo 可能也面临着类似的情况。

关于Python PuLP 递归错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51380806/

相关文章:

java - 如何通过 Java 使用 Fico Xpress (Mosel)?

matlab - 在 Matlab 中设置线性编程代码以获得 4D 或更高维度的顶点

communication - 与子进程多次通信

python - SELECT COUNT(distinct CASE WHEN x > y THEN seller_id ELSE NULL END) FROM 表 GROUP BY 列 PANDAS 等效项

python - 如何删除出现在整数列中的垃圾字符串

python - 在 Pandas 中合并缺少列的 CSV 文件

python - Groupby 和绘制条形图

linear-programming - GLPK Mathprog 集合组

python - 在大型 DataFrame 上使用 Pandas 进行排列的有效方法

python - 一维 NumPy 数组上的滑动标准差