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']
в исходном вопросе. Как только мое ограничение в правой части стало числом, я был готов к работе. Судя по комментариям, я думаю, что Кракенудо мог столкнуться с подобной ситуацией.