Как я могу объявить переменную в Pyomo в качестве матрицы? - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь это сделать:

P_sell = np.array([mod.addVar(lb=0, ub=gen_Max[g], name="exchanges_sell") for g in range(n_gen) for l in range(n_load)]).reshape((n_gen,n_load))

но я использую Pyomo, поэтому я не могу объявить переменную непосредственно в "модель", потому что это матрица, поэтому я сделал это:

def sell(model, gen):
     return (0, model.capmax_act[gen])
model.venda= Var(model.gen, bounds=sell, doc='P sell')

p_sell = np.array([model.venda[gen] for gen in model.gen for loads in model.loads]).reshape((n_gen,n_load))

где model.capmax_act [gen] совпадает с gen_Max [g]

Представляет ли это то же самое? Или можно объявить model.p_sell как матрицу переменных вместо того, чтобы делать это?

Я новичок в python, но я надеюсь, что вы понимаете мой вопрос.

1 Ответ

0 голосов
/ 27 апреля 2020

Код в первой части вашего вопроса взят из правильного интерфейса Gurobi- Python?

Если я правильно понимаю, model.gen и model.loads - это наборы Pyomo в вашем коде. Затем, во-первых, я бы определил model.capmax_act как параметр Pyomo, который индексируется с помощью model.gen и model.loads:

model.capmax_act = Param(model.gen, model.loads, initialize = 100) # You can replace "100" with any structure that Pyomo accepts to initialize model parameters.

Тогда ваша переменная p_sell может быть определена как:

p_sell = Var(model.gen, model.loads, lb=0, ub=model.capmax_act)
...