Оптимизация накопления энергии пиомо кусочно-линейное выражение для ограничения - PullRequest
0 голосов
/ 30 марта 2020

Я строю модель оптимизации хранения энергии с помощью 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)

Заранее спасибо!

...