Я определил абстрактную модель pyomo, используя именованные выражения (см. «M.ElecDemand_kW» в приведенном ниже коде). Интересно, как получить значение решения для именованных выражений. Они также называются Объектами выражений.
from pyomo.environ import *
m = AbstractModel('TEST')
...
code
...
def Epr_elecDemand_kW_rule(m, b, sv, ts):
return (sum(m.Elec_Heater_kW_elec[b, sv, em, ts] for em in m.ELEC_HeaterModes)
+ sum(m.Hp_kW_elec[b, sv, hm, ts] for hm in m.HP_ALL))
m.ElecDemand_kW= Expression(m.BUILDtype, m.STOR_LiterVar, m.TS, rule=Epr_elecDemand_kW_rule)
def Obj_Funct_rule(m):
return sum(m.ElecDemand_kW[b, sv,ts] * m.t_step_seconds[ts] / 3600 / 1000 * m.ts_data["spotPrice_EpMWh",ts]
for b in m.BUILDtype
for sv in m.STOR_LiterVar
for ts in m.TS)
m.ObjectFunction = Objective(rule=Obj_Funct_rule)
instance = m.create_instance('GebaeudeV8.dat')
opt_results = opt.solve(instance, symbolic_solver_labels=True, keepfiles = True,
tee=True)
instance.solutions.store_to(opt_results)
В данный момент я определяю после команды решения aновая функция
def Epr_elecDemand_kW_calc(m, b, sv, ts):
return (sum(instance.Elec_Heater_kW_elec[b, sv, em, ts].value
for em in instance.ELEC_HeaterModes.data())
+ sum(instance.Hp_kW_elec[b, sv, hm, ts]
for hm in instance.HP_ALL.data()))
, чтобы вычислить значения требуемого решения, а затем скопировать его в кадр данных pandas и сохранить в Excel. Есть ли простой способ получить значения sulution именованных выражений после решения проблемы?
Я только что узнал, что value(Epr_elecDemand_kW_rule(instance, b, sv, ts))
работает