【问题标题】:Python PuLP RecursionErrorPython PuLP 递归错误
【发布时间】:2018-07-17 11:57:04
【问题描述】:

我正在处理 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?谢谢。

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

【问题讨论】:

  • 我遇到了同样的问题,我在下面发现了这个命令。当步骤 3200 导致另一个错误时。也许这是问题的线索。命令:sys.setrecursionlimit (3300) 错误:“进程以退出代码 -1073741571 (0xC00000FD) 完成”

标签: python pandas linear-programming pulp


【解决方案1】:

我不知道你在做什么,但我可以指出

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']

无效,因为lpSum 需要LpVariables 的列表而不是字符串

【讨论】:

  • 确实如此。正确,谢谢。但不知道是不是全部。我会试着找到它。我对变量和 te 值有疑问。现在就像那个 prob += lpSum(LpVariable.dicts("var",['c-1_a-2757_p-13','c-1_a-2757_p-12','c-1_a-2757_p-188'],cat ='Integer')) >= cent_artic_dict['c-1_a-2757'] 其中 cent_artic_dict = {'c-1_a-2757': var_c_1_a_2757} cent_artic_dict = LpVariable.dicts("var",list(set(df_demand['demand '])),0,cat='整数')
  • 解决了。谢谢。现在,我该如何关闭这个话题? :)
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2017-04-28
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多