пульпа создает бессмысленные ограничения при использовании пустых списков

Я решаю задачу по лесному хозяйству с помощью PuLP и потратил много часов на выяснение того, почему CPLEX выдает бессмысленные ответы. По сути, у меня были некоторые переменные, не связанные с остальной частью проблемы из-за понимания пустого списка. Мои ограничения всегда имеют вид:

for year in YEARS:
    lp+=pulp.lpSum([vol[i]*x[i] for i in possible_combinations 
                    if test(i)])==yearly_volume[year], "yearly_volume[%d]" %(year)

А в некоторых случаях условие, определяющее понимание списка (проверка), никогда не выполнялось, что приводило к неприсоединенным переменным. Кто-нибудь еще думает, что PuLP должна предупреждать нас, когда это происходит? Я должен получить ограничение, которое выглядит как

0==yearly_volume[2025]

но вместо этого ограничение не добавляется!


person Sergio Lucero    schedule 22.03.2018    source источник


Ответы (1)


0==yearly_volume[2025]

изначально было то, что произошло, а затем кто-то предположил, что технически это

None == yearly_volume[2025]

Что можно интерпретировать как пустое ограничение

Я принимаю вашу точку зрения о предупреждении, хотя, возможно, начну с проблемы в репозитории github. Или еще лучше пулреквест

Спасибо

Стью

person Stuart Mitchell    schedule 27.03.2018