Python PuLP RecursionError

Я работаю над проблемой LP с библиотекой PuLP, и у меня есть кое-что странное, что я сам не могу объяснить. У меня есть почти 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? Спасибо.

Я видел еще один вопрос по этому поводу, но он не имеет ответа, только совет

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 не струны

У меня была аналогичная проблема, и я получал идентичную ошибку рекурсии.

У меня была проблема с типом данных, и мое значение ограничения хранилось в виде строки, а не числа! Это эквивалентно значению вcent_artic_dict['c-1_a-2757']в исходном вопросе. Как только мое ограничение в правой части стало числом, я был готов к работе. Судя по комментариям, я думаю, что Кракенудо мог столкнуться с подобной ситуацией.

Другие вопросы по тегам