Commit 5e29f514 authored by Niina Helistö's avatar Niina Helistö
Browse files

A fix related to issue #112: changed omCosts from p_unit to p_gnu and renamed...

A fix related to issue #112: changed omCosts from p_unit to p_gnu and renamed to vomCosts. It is possible to give vomCosts also to input units, but in that case the user should select the sign carefully. The objective function includes a term:
+ sum(gnuft(grid, node, unit, f, t), + v_gen(grid, node, unit, s, f, t) * p_gnu(grid, node, unit, 'vomCosts'))
which means that positive vomCosts result in decreasing objective function value when multiplied with negative v_gen. Positive vomCosts could be interpreted as an increase in consumer's utility. In this way, this fix may also be able to implement feature #76.
parent 0f075db0
...@@ -269,6 +269,7 @@ param_gnu "Set of possible data parameters for grid, node, unit" / ...@@ -269,6 +269,7 @@ param_gnu "Set of possible data parameters for grid, node, unit" /
invCosts "Investment costs (EUR/MW)" invCosts "Investment costs (EUR/MW)"
annuity "Investment annuity factor" annuity "Investment annuity factor"
fomCosts "Fixed operation and maintenance costs (EUR/MW/a)" fomCosts "Fixed operation and maintenance costs (EUR/MW/a)"
vomCosts "Variable operation and maintenance costs (EUR/MWh)"
inertia "Inertia of the unit (s)" inertia "Inertia of the unit (s)"
unitSizeMVA "Generator MVA rating of one subunit (MVA)" unitSizeMVA "Generator MVA rating of one subunit (MVA)"
availabilityCapacityMargin "Availability of the unit in the capacity margin equation (p.u.). If zero, v_gen is used. Currently used only for output capacity." availabilityCapacityMargin "Availability of the unit in the capacity margin equation (p.u.). If zero, v_gen is used. Currently used only for output capacity."
...@@ -287,7 +288,6 @@ param_unit "Set of possible data parameters for units" / ...@@ -287,7 +288,6 @@ param_unit "Set of possible data parameters for units" /
useInitialOnlineStatus "A flag to fix the online status of a unit for the first time step (binary)" useInitialOnlineStatus "A flag to fix the online status of a unit for the first time step (binary)"
initialOnlineStatus "Initial online status of the unit in the first time step (0-1)" initialOnlineStatus "Initial online status of the unit in the first time step (0-1)"
unavailability "Unavailability of given energy conversion technology (p.u.)" unavailability "Unavailability of given energy conversion technology (p.u.)"
omCosts "Variable operation and maintenance costs (EUR/MWh)"
startCostCold "Variable start-up costs for cold starts excluding fuel costs (EUR/MW)" startCostCold "Variable start-up costs for cold starts excluding fuel costs (EUR/MW)"
startCostWarm "Variable start-up costs for warm starts excluding fuel costs (EUR/MW)" startCostWarm "Variable start-up costs for warm starts excluding fuel costs (EUR/MW)"
startCostHot "Variable start-up costs for hot starts excluding fuel costs (EUR/MW)" startCostHot "Variable start-up costs for hot starts excluding fuel costs (EUR/MW)"
......
...@@ -35,10 +35,10 @@ q_obj .. ...@@ -35,10 +35,10 @@ q_obj ..
+ p_stepLength(m, f, t) + p_stepLength(m, f, t)
* [ * [
// Variable O&M costs // Variable O&M costs
+ sum(gnuft(gnu_output(grid, node, unit), f, t), // Calculated only for output energy + sum(gnuft(grid, node, unit, f, t),
+ v_gen(grid, node, unit, s, f, t) + v_gen(grid, node, unit, s, f, t)
* p_unit(unit, 'omCosts') * p_gnu(grid, node, unit, 'vomCosts')
) // END sum(gnu_output) ) // END sum(gnuft)
// Fuel and emission costs // Fuel and emission costs
+ sum(uFuel(unit, 'main', fuel)${uft(unit, f, t)}, + sum(uFuel(unit, 'main', fuel)${uft(unit, f, t)},
......
...@@ -25,11 +25,11 @@ loop(m, ...@@ -25,11 +25,11 @@ loop(m,
* --- Realized Individual Costs ---------------------------------------------- * --- Realized Individual Costs ----------------------------------------------
// Variable O&M costs // Variable O&M costs
r_gnuVOMCost(gnu_output(grid, node, unit), ft_realizedNoReset(f,t))$[ord(t) > mSettings(m, 't_start') + mSettings(m, 't_initializationPeriod')] r_gnuVOMCost(gnu(grid, node, unit), ft_realizedNoReset(f,t))$[ord(t) > mSettings(m, 't_start') + mSettings(m, 't_initializationPeriod')]
= 1e-6 // Scaling to MEUR = 1e-6 // Scaling to MEUR
* p_stepLengthNoReset(m, f, t) * p_stepLengthNoReset(m, f, t)
* r_gen(grid, node, unit, f, t) * r_gen(grid, node, unit, f, t)
* p_unit(unit, 'omCosts'); * p_gnu(grid, node, unit, 'vomCosts');
// Fuel and emission costs during normal operation // Fuel and emission costs during normal operation
r_uFuelEmissionCost(fuel, unit_fuel(unit), ft_realizedNoReset(f,t))${ uFuel(unit, 'main', fuel) and [ord(t) > mSettings(m, 't_start') + mSettings(m, 't_initializationPeriod')]} r_uFuelEmissionCost(fuel, unit_fuel(unit), ft_realizedNoReset(f,t))${ uFuel(unit, 'main', fuel) and [ord(t) > mSettings(m, 't_start') + mSettings(m, 't_initializationPeriod')]}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment