Я строю модель оптимизации хранения энергии с помощью pyomo и пытаюсь сформулировать в ней кусочно-линейное выражение. Я новичок в python и pyomo, поэтому я очень признателен за некоторую помощь.
Я хочу включить в модель ограничение, которое применяется только для положительных значений моей переменной решения.
Пока что это ограничение:
def constraint_storage_level(model,t):
return model.Q[t] == (model.Q[t-1]*model.loss) + model.q_net[t]*model.loss_dyn[t]*model.COP_factor[t]
Идея состоит в том, что model.loss_dyn[t]
применимо только к положительному model.q_net[t]
Я думаю, что мне нужно использовать кусочно-линейное выражение здесь в качестве моей модели линейно. Я уже нашел эту документацию: https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html.
У кого-нибудь есть идеи, как поступить?
Вот что я пытался включить:
model.T = RangeSet(0, 35039)
model.q_net = Var(model.T, domain=Reals, bounds=(-100,100))
domain = [-100.,0.,0.,100]
f = [1., 1., 0.95, 0.95]
model.loss_dyn = Piecewise(model.T, model.q_net,
pw_pts=domain,
pw_constr_type='EQ',
f_rule=f,
pw_repn='INC',
unbounded_domain_var=True)
Заранее спасибо!