Справочная информация
Я настраиваю модель для оптимизации отправки системы "солнечная батарея + батарея + электролизер / топливный элемент" с использованием PuLP. Идея состоит в том, чтобы максимизировать доход за счет зарядки батареи и производства водорода из солнечной генерации, когда цены низкие, затем разрядки батареи и сжигания водорода, когда цены высокие.
исследование и устранение неисправностей
Я новичок в PuLP, я потратил некоторое время, работая над этим, используя интерактивные руководства и SO для помощи, но мой код все еще возвращает ответы rubbi sh. Я провел некоторое время, просматривая SO в поисках ответов ( здесь , здесь , здесь и здесь ). и я думаю, что знаю, в чем может быть проблема.
Идентификация потенциальной проблемы
Я думаю, что моя главная проблема в том, что у меня есть куча логических ограничений, которые мне нужно пишите в другой форме для работы в ПУЛП. В настоящее время у меня нет индикаторных переменных или ограничений Big M, которые, на мой взгляд, являются полезным способом записи условных ограничений. Я пытался написать их сам, но безуспешно, потому что я не знал, как написать их в PuLP (что, я считаю, не позволяет использовать IF или np.where, et c)
Что касается ограничений Big M, у меня было go при их написании, что я считаю правильным способом, но оно возвращает ошибку "Неконстантные выражения не могут быть умножены".
Пример задачи
Ниже приведен пример кода, который я пытаюсь достичь с помощью условного ограничения в PuLP.
В моей системе Electroylyser имеет минимальную работоспособность (10%). Следовательно, его потенциальная энергия, потребляемая в момент времени t, должна быть такой:
if (SE[t] + BE[t]) < E_MinCons_kwh:
(SE[t] + BE[t]) == 0
elif (HZ_Size_nm3 - HSC[t]) < E_MinProd_nm3:
(SE[t] + BE[t]) == 0
else:
(SE[t] + BE[t]) <= e_kwh
(SE[t] + BE[t]) <= (HZ_Size_nm3 - HSC[t]) * nm3_to_kwh)
(SE[t] + BE[t]) >= E_MinCons_kwh
Где
SE[t] = electricity input from Solar powering the Electrolyser at time t
BE[t] = electricity input from Battery powering the Electrolyser at time t
E_MinCons_kwh = The minimal power draw of the Electrolyser (~18 kWh)
e_kwh = the maximum power draw of the Electrolyser (~180 KWh)
HZ_Size_nm3 = The size of the hydrogen Storage tank (~5,000 nm3)
HSC[t] = the current storage level of the hydrogen tank at time t (in nm3)
HSC[t+1] = HSC[t] + SH[t] + BH[t] - HF[t] - HM[t]
SH[t] = volume of Hydrogen produced from solar electricity at time t (in nm3)
BH[t] = volume of Hydrogen produced from Battery Discharge at time t (in nm3)
HF[t] = volume of Hydrogen consumed by the Fuel-Cell at time t (in nm3)
HM[t] = volume of Hydrogen sold to market at time t (in nm3)
E_MinProd_nm3 = Hydrogen produced when Electroylser operating at min capacity (~3.6 nm3)
nm3_to_kwh = Conversion factor, kwh required to produce 1 nm3 of hydrogen (~5.4 kwh)
Запрошенная помощь
Кто-нибудь знает Как я могу написать приведенный выше логический аргумент в методе, который можно использовать в ограничениях PuLP?