The calculations of the per year CO2-costs are within a sum over all conversion processes, therefore multiplying the actual CO2-costs by the amount of conversion processes. The documentation as well as the code is wrong. In model.py line 85, replace the OPEX-constraint by
model.addConstr(
vars["OPEX"] ==
sum(
(
vars["Cap_active"][cs, y] * get_row("opex_cost_power", cs, y) +
vars["Eouttot"][cs, y] * get_row("opex_cost_energy", cs, y)
) * year_gap(y) * self.dao.get_discount_factor(y)
for cs in get_set("conversion_subprocess")
for y in get_set("year")
) +
sum(
get_row("co2_price", y) * vars["Total_annual_co2_emission"][y] *
year_gap(y) * self.dao.get_discount_factor(y)
for y in get_set("year")
),
name="opex"
)
The calculations of the per year CO2-costs are within a sum over all conversion processes, therefore multiplying the actual CO2-costs by the amount of conversion processes. The documentation as well as the code is wrong. In model.py line 85, replace the OPEX-constraint by
model.addConstr(
vars["OPEX"] ==
sum(
(
vars["Cap_active"][cs, y] * get_row("opex_cost_power", cs, y) +
vars["Eouttot"][cs, y] * get_row("opex_cost_energy", cs, y)
) * year_gap(y) * self.dao.get_discount_factor(y)
for cs in get_set("conversion_subprocess")
for y in get_set("year")
) +
sum(
get_row("co2_price", y) * vars["Total_annual_co2_emission"][y] *
year_gap(y) * self.dao.get_discount_factor(y)
for y in get_set("year")
),
name="opex"
)