Commit d90cd515 authored by Niina Helistö's avatar Niina Helistö
Browse files

Several updates

* taking investment costs into account in cost results calculation
* adding transfer link investment possibility sets
* moving run-up and shutdown trajectories into their own 'blocks' to speed up the model
* commenting out some forecast related sets that are not used anymore
* updating info file writing
parent 6421e64e
......@@ -37,8 +37,22 @@ r_gnStateSlackCost
r_gnTotalStateSlackCost
r_gnStorageValueChange
// Investment and Fixed Operation and Maintenance Cost Components
r_gnuFOMCost
r_gnuUnitInvestmentCost
r_gnnLinkInvestmentCost
// Realized System Operating Costs
r_gnRealizedOperatingCost
r_gnTotalRealizedOperatingCost
r_gnTotalRealizedOperatingCostShare
r_gnTotalRealizedNetOperatingCost
r_gTotalRealizedOperatingCost
r_gTotalRealizedNetOperatingCost
r_totalRealizedOperatingCost
r_totalRealizedNetOperatingCost
// Realized System Costs
r_gnRealizedCost
r_gnTotalRealizedCost
r_gnTotalRealizedCostShare
r_gnTotalRealizedNetCost
......@@ -126,7 +140,8 @@ r_nTotalReserve
* --- Investment Result Symbols -----------------------------------------------
// Interesting investment results
r_unitInvestment
r_invest
r_investTransfer
* --- Dummy and Diagnostic Variable Result Symbols ----------------------------
......
......@@ -55,6 +55,8 @@ Sets
* NOTE! Should it be possible to permit time-series form upper or lower bounds on states? If so, then gn() needs rethinking.
gn2n(grid, node, node) "All (directional) transfer links between nodes in specific energy grids"
gn2n_directional(grid, node, node) "Transfer links with positive rightward transfer and negative leftward transfer"
gn2n_directional_investLP(grid, node, node) "Transfer links with with continuous investments allowed"
gn2n_directional_investMIP(grid, node, node) "Transfer links with with integer investments allowed"
gnu(grid, node, unit) "Units in specific nodes of particular energy grids"
gnu_input(grid, node, unit) "Forms of energy the unit uses as endogenous inputs"
gnu_output(grid, node, unit) "Forms of energy the unit uses as endogenous outputs"
......@@ -96,6 +98,7 @@ Sets
mft(mType, f, t) "Combination of forecasts and t:s in the current model solve"
msf(mType, s, f) "Combination of samples and forecasts in the models"
msft(mType, s, f, t) "Combination of samples, forecasts and t:s in the current model solve"
msft_realizedNoReset(mType, s, f, t) "Combination of realized samples, forecasts and t:s in the current model solve and previously realized t:s"
mft_start(mType, f, t) "Start point of the current model solve"
mf_realization(mType, f) "fRealization of the forecasts"
mf_central(mType, f) "Forecast that continues as sample(s) after the forecast horizon ends"
......
......@@ -24,7 +24,7 @@ Parameters
* --- Cost Results ------------------------------------------------------------
// Total Objective Function
r_totalObj "Total operating cost over the simulation (EUR)" / 0 /
r_totalObj "Total cost over the simulation (EUR)" / 0 /
// Unit Operational Cost Components
r_gnuVOMCost(grid, node, unit, f, t) "Variable O&M costs for energy outputs (MEUR)"
......@@ -39,8 +39,22 @@ Parameters
r_gnTotalStateSlackCost(grid, node) "Total costs for state slacks over the simulation (MEUR)"
r_gnStorageValueChange(grid, node) "Change in storage values over the simulation (MEUR)"
// Investment and Fixed Operation and Maintenance Cost Components
r_gnuFOMCost(grid, node, unit) "Total gnu fixed O&M costs over the simulation (MEUR)"
r_gnuUnitInvestmentCost(grid, node, unit) "Total unit investment costs over the simulation (MEUR)"
r_gnnLinkInvestmentCost(grid, node, node) "Total transfer link investment costs over the simulation (MEUR)"
// Realized System Operating Costs
r_gnRealizedOperatingCost(grid, node, f, t) "Realized system operating costs in gn for each t (MEUR)"
r_gnTotalRealizedOperatingCost(grid, node) "Total realized system operating costs in gn over the simulation (MEUR)"
r_gnTotalRealizedOperatingCostShare(grid, node) "Total realized system operating cost gn/g shares over the simulation"
r_gnTotalRealizedNetOperatingCost(grid, node) "Total realized system operating costs in gn over the simulation, minus the increase in storage values (MEUR)"
r_gTotalRealizedOperatingCost(grid) "Total realized system operating costs in g over the simulation (MEUR)"
r_gTotalRealizedNetOperatingCost(grid) "Total realized system operating costs in g over the simulation, minus the increase in storage values (MEUR)"
r_totalRealizedOperatingCost "Total realized system operating costs over the simulation (MEUR)" / 0 /
r_totalRealizedNetOperatingCost "Total realized system operating costs over the simulation (MEUR)" / 0 /
// Realized System Costs
r_gnRealizedCost(grid, node, f, t) "Realized system costs in gn for each t (MEUR)"
r_gnTotalRealizedCost(grid, node) "Total realized system costs in gn over the simulation (MEUR)"
r_gnTotalRealizedCostShare(grid, node) "Total realized system cost gn/g shares over the simulation"
r_gnTotalRealizedNetCost(grid, node) "Total realized system costs in gn over the simulation, minus the increase in storage values (MEUR)"
......@@ -128,7 +142,8 @@ Parameters
* --- Investment Results ------------------------------------------------------
// Interesting investment results
r_unitInvestment(unit) "Number/amount of invested sub-units"
r_invest(unit) "Number/amount of invested sub-units"
r_investTransfer(grid, node, node, t) "Amount of invested transfer link capacity"
* --- Dummy Variable Results --------------------------------------------------
......@@ -155,6 +170,8 @@ Option clear = r_gen;
Option clear = r_realizedLast;
Option clear = r_startup;
Option clear = r_shutdown;
Option clear = r_invest;
Option clear = r_investTransfer;
* =============================================================================
* --- Diagnostics Results Arrays ----------------------------------------------
......
......@@ -302,6 +302,22 @@ gn2n_directional(gn2n(grid, node, node_))${ ord(node) > ord(node_)
}
= yes;
// Set for transfer links with investment possibility
Option clear = gn2n_directional_investLP;
Option clear = gn2n_directional_investMIP;
gn2n_directional_investLP(gn2n_directional(grid, node, node_))${ [p_gnn(grid, node, node_, 'transferCapInvLimit')
or p_gnn(grid, node_, node, 'transferCapInvLimit')]
and [not p_gnn(grid, node, node_, 'investMIP')
and not p_gnn(grid, node_, node, 'investMIP')]
}
= yes;
gn2n_directional_investMIP(gn2n_directional(grid, node, node_))${ [p_gnn(grid, node, node_, 'transferCapInvLimit')
or p_gnn(grid, node_, node, 'transferCapInvLimit')]
and [p_gnn(grid, node, node_, 'investMIP')
or p_gnn(grid, node_, node, 'investMIP')]
}
= yes;
* --- Node States -------------------------------------------------------------
// States with slack variables
......
......@@ -152,14 +152,14 @@ q_obj ..
// Transfer link investment costs
+ sum(gn2n_directional(grid, from_node, to_node),
+ v_investTransfer_LP(grid, from_node, to_node, t)${ not p_gnn(grid, from_node, to_node, 'investMIP') }
+ v_investTransfer_LP(grid, from_node, to_node, t)${ gn2n_directional_investLP(grid, from_node, to_node) }
* [
+ p_gnn(grid, from_node, to_node, 'invCost')
* p_gnn(grid, from_node, to_node, 'annuity')
+ p_gnn(grid, to_node, from_node, 'invCost')
* p_gnn(grid, to_node, from_node, 'annuity')
] // END * v_investTransfer_LP
+ v_investTransfer_MIP(grid, from_node, to_node, t)${ p_gnn(grid, from_node, to_node, 'investMIP') }
+ v_investTransfer_MIP(grid, from_node, to_node, t)${ gn2n_directional_investMIP(grid, from_node, to_node) }
* [
+ p_gnn(grid, from_node, to_node, 'unitSize')
* p_gnn(grid, from_node, to_node, 'invCost')
......
This diff is collapsed.
......@@ -110,8 +110,8 @@ $iftheni.debug NOT '%debug%' == 'yes'
* --- Temporary Time Series ---------------------------------------------------
// Forecast Related Time Series
Option clear = ts_forecast;
Option clear = ts_tertiary;
* Option clear = ts_forecast; // NOTE! Forecast Related Time Series have changed, Juha needs to check these
* Option clear = ts_tertiary; // NOTE! Forecast Related Time Series have changed, Juha needs to check these
// Initialize temporary time series
Option clear = ts_influx_;
......@@ -373,24 +373,26 @@ dt(t)${sum(ms(mSolve, s), mst_start(mSolve, s, t))} = -1
* --- Determine various other forecast-time sets required for the model -------
// Set of realized time steps in the solve
// Set of realized intervals in the solve
Option clear = ft_realized;
ft_realized(f_solve, t)${ mf_realization(mSolve, f_solve) and ord(t) <= tSolveFirst + mSettings(mSolve, 't_jump') }
= ft(f_solve, t);
ft_realizedNoReset(ft_realized(f, t)) = yes;
// Set of realized intervals in the whole simulation so far, including model and sample dimensions
msft_realizedNoReset(msft(mSolve, s, ft_realized(f, t))) = yes;
// Forecast index displacement between realized and forecasted timesteps
// Forecast index displacement between realized and forecasted intervals
df(f_solve(f), t_active(t))${ ord(t) <= tSolveFirst + mSettings(mSolve, 't_jump') }
= sum(mf_realization(mSolve, f_), ord(f_) - ord(f));
// Forecast displacement between central and forecasted timesteps at the end of forecast horizon
// Forecast displacement between central and forecasted intervals at the end of forecast horizon
Option clear = df_central; // This can be reset.
df_central(ft(f,t))${ ord(t) = tSolveFirst + mSettings(mSolve, 't_forecastLengthUnchanging') - p_stepLength(mSolve, f, t) / mSettings(mSolve, 'intervalInHours')
and not mf_realization(mSolve, f)
}
= sum(mf_central(mSolve, f_), ord(f_) - ord(f));
// Forecast index displacement between realized and forecasted timesteps, required for locking reserves ahead of (dispatch) time.
// Forecast index displacement between realized and forecasted intervals, required for locking reserves ahead of (dispatch) time.
Option clear = df_nReserves;
df_nReserves(node, restype, ft(f, t))${ p_nReserves(node, restype, 'update_frequency')
and p_nReserves(node, restype, 'gate_closure')
......
......@@ -388,15 +388,11 @@ v_invest_MIP.lo(unit, t_invest)${ unit_investMIP(unit) }
// Transfer Capacity Investments
// LP investments
v_investTransfer_LP.up(gn2n_directional(grid, from_node, to_node), t_invest)${ not p_gnn(grid, from_node, to_node, 'investMIP')
and p_gnn(grid, from_node, to_node, 'transferCapInvLimit')
}
v_investTransfer_LP.up(gn2n_directional(grid, from_node, to_node), t_invest)${ gn2n_directional_investLP(grid, from_node, to_node) }
= p_gnn(grid, from_node, to_node, 'transferCapInvLimit')
;
// MIP investments
v_investTransfer_MIP.up(gn2n_directional(grid, from_node, to_node), t_invest)${ p_gnn(grid, from_node, to_node, 'investMIP')
and p_gnn(grid, from_node, to_node, 'transferCapInvLimit')
}
v_investTransfer_MIP.up(gn2n_directional(grid, from_node, to_node), t_invest)${ gn2n_directional_investMIP(grid, from_node, to_node) }
= p_gnn(grid, from_node, to_node, 'transferCapInvLimit')
/ p_gnn(grid, from_node, to_node, 'unitSize')
;
......
......@@ -135,9 +135,17 @@ r_stateSlack(gn_stateSlack(grid, node), slack, ft_realized(f, t))$[ord(t) > mSet
= v_stateSlack.l(grid, node, slack, f, t)
;
// Unit investments
r_unitInvestment(unit)${unit_investLP(unit) or unit_investMIP(unit)}
r_invest(unit)${unit_investLP(unit) or unit_investMIP(unit)}
= sum(t_invest, v_invest_LP.l(unit, t_invest) + v_invest_MIP.l(unit, t_invest))
;
// Link investments
r_investTransfer(grid, node, node_, t_invest(t))${ p_gnn(grid, node, node_, 'transferCapInvLimit')
* and t_current(t)
and ord(t) <= tSolveFirst + mSettings(mSolve, 't_jump')
}
= v_investTransfer_LP.l(grid, node, node_, t)
+ v_investTransfer_MIP.l(grid, node, node_, t) * p_gnn(grid, node, node_, 'unitSize')
;
* --- Feasibility results -----------------------------------------------------
......
......@@ -94,30 +94,58 @@ loop(m,
r_gnuTotalVOMCost(gnu_output(grid, node, unit))
= sum(ft_realizedNoReset(f,t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_gnuVOMCost(grid, node, unit, f, t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
);
// Total fuel & emission costs
r_uTotalFuelEmissionCost(fuel, unit)${ uFuel(unit, 'main', fuel) }
= sum(ft_realizedNoReset(f,t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_uFuelEmissionCost(fuel, unit, f, t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
);
// Total unit startup costs
r_uTotalStartupCost(unit)${ sum(starttype, unitStarttype(unit, starttype)) }
= sum(ft_realizedNoReset(f,t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_uStartupCost(unit, f, t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
);
// Total state variable slack costs
r_gnTotalStateSlackCost(gn_stateSlack(grid, node))
= sum(ft_realizedNoReset(f,t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_gnStateSlackCost(grid, node, f, t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
);
// Fixed O&M costs
r_gnuFOMCost(gnu(grid, node, unit))
= 1e-6 // Scaling to MEUR
* (p_gnu(grid, node, unit, 'maxGen') + r_invest(unit)*p_gnu(grid, node, unit, 'unitSizeGen'))
* p_gnu(grid, node, unit, 'fomCosts');
// Unit investment costs
r_gnuUnitInvestmentCost(gnu(grid, node, unit))
= 1e-6 // Scaling to MEUR
* r_invest(unit)*p_gnu(grid, node, unit, 'unitSizeGen')
* p_gnu(grid, node, unit, 'invCosts')
* p_gnu(grid, node, unit, 'annuity');
// Transfer link investment costs
r_gnnLinkInvestmentCost(grid, from_node, to_node)
= 1e-6 // Scaling to MEUR
* sum(t_invest, r_investTransfer(grid, from_node, to_node, t_invest))
* [
+ p_gnn(grid, from_node, to_node, 'invCost')
* p_gnn(grid, from_node, to_node, 'annuity')
+ p_gnn(grid, to_node, from_node, 'invCost')
* p_gnn(grid, to_node, from_node, 'annuity')
]; // END * r_investTransfer;
* --- Realized Nodal System Costs ---------------------------------------------
// Total realized gn costs
r_gnRealizedCost(gn(grid, node), ft_realizedNoReset(f, t))$[ord(t) > mSettings(m, 'results_t_start')]
// Total realized gn operating costs
r_gnRealizedOperatingCost(gn(grid, node), ft_realizedNoReset(f, t))$[ord(t) > mSettings(m, 'results_t_start')]
= sum(gnu_output(grid, node, unit),
// VOM costs
......@@ -146,6 +174,7 @@ loop(m,
r_gnConsumption(gn(grid, node), ft_realizedNoReset(f, t))$[ord(t) > mSettings(m, 'results_t_start')]
= p_stepLengthNoReset(m, f, t)
* sum(msft(m, s, f, t), p_msft_probability(m, s, f, t))
* [
+ min(ts_influx(grid, node, f, t), 0) // Not necessarily a good idea, as ts_influx contains energy gains as well...
+ sum(gnu_input(grid, node, unit),
......@@ -160,6 +189,7 @@ loop(m,
= sum(ft_realizedNoReset(f, t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_gen(grid, node, unit, f, t)
* p_stepLengthNoReset(m, f, t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
); // END sum(ft_realizedNoReset)
// Energy generation by fuels
......@@ -179,6 +209,7 @@ loop(m,
= sum(ft_realizedNoReset(f, t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_genFuel(grid, node, fuel, f, t)
* p_stepLengthNoReset(m, f, t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
); // END sum(ft_realizedNoReset)
// Total dummy generation/consumption
......@@ -186,6 +217,7 @@ loop(m,
= sum(ft_realizedNoReset(f,t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_qGen(inc_dec, grid, node, f, t)
* p_stepLengthNoReset(m, f, t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
); // END sum(ft_realizedNoReset)
* --- Total Unit Online Results -----------------------------------------------
......@@ -195,13 +227,14 @@ loop(m,
= sum(ft_realizedNoReset(f, t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_online(unit, f, t)
* p_stepLengthNoReset(m, f, t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
); // END sum(ft_realizedNoReset)
// Approximate utilization rates for gnus over the simulation
r_gnuUtilizationRate(gnu_output(grid, node, unit))${r_gnuTotalGen(grid, node, unit)}
= r_gnuTotalGen(grid, node, unit)
/ [
+ (p_gnu(grid, node, unit, 'maxGen') + r_unitInvestment(unit)*p_gnu(grid, node, unit, 'unitSizeGen'))
+ (p_gnu(grid, node, unit, 'maxGen') + r_invest(unit)*p_gnu(grid, node, unit, 'unitSizeGen'))
* (mSettings(m, 't_end') - mSettings(m, 'results_t_start') + 1)
* mSettings(m, 'intervalInHours')
]; // END division
......@@ -213,6 +246,7 @@ loop(m,
= sum(ft_realizedNoReset(f, t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_reserve(restype, up_down, node, unit, f, t)
* p_stepLengthNoReset(m, f, t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
); // END sum(ft_realizedNoReset)
// Total dummy reserve provisions over the simulation
......@@ -220,6 +254,7 @@ loop(m,
= sum(ft_realizedNoReset(f, t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_qResDemand(restype, up_down, node, f, t)
* p_stepLengthNoReset(m, f, t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
); // END sum(ft_realizedNoReset)
* --- Total Transfer and Spill ------------------------------------------------
......@@ -229,6 +264,7 @@ loop(m,
= sum(ft_realizedNoReset(f, t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_transfer(grid, from_node, to_node, f, t)
* p_stepLengthNoReset(m, f, t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
); // END sum(ft_realizedNoReset)
// Total energy spill from nodes
......@@ -236,6 +272,7 @@ loop(m,
= sum(ft_realizedNoReset(f, t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_spill(grid, node, f, t)
* p_stepLengthNoReset(m, f, t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
); // END sum(ft_realizedNoReset)
* =============================================================================
......@@ -282,7 +319,10 @@ r_gTotalqGen(inc_dec, grid)
// Total consumption on each gn over the simulation
r_gnTotalConsumption(gn(grid, node))
= sum(ft_realizedNoReset(f, t)$[ord(t) > mSettings(m, 'results_t_start')], r_gnConsumption(grid, node, f ,t));
= sum(ft_realizedNoReset(f, t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_gnConsumption(grid, node, f ,t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
);
// Total consumption in each grid over the simulation
r_gTotalConsumption(grid)
......@@ -321,9 +361,53 @@ r_gnTotalSpillShare(gn(grid, node_spill))${ r_gTotalSpill(grid) }
* --- Total Costs Results -----------------------------------------------------
// Total realized operating costs on each gn over the simulation
r_gnTotalRealizedOperatingCost(gn(grid, node))
= sum(ft_realizedNoReset(f, t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_gnRealizedOperatingCost(grid, node, f ,t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
);
// Total realized net operating costs on each gn over the simulation
r_gnTotalRealizedNetOperatingCost(gn(grid, node))
= r_gnTotalRealizedOperatingCost(grid, node) - r_gnStorageValueChange(grid, node);
// Total realized operating costs on each grid over the simulation
r_gTotalRealizedOperatingCost(grid)
= sum(gn(grid, node), r_gnTotalRealizedOperatingCost(grid, node));
// Total realized net operating costs on each grid over the simulation
r_gTotalRealizedNetOperatingCost(grid)
= sum(gn(grid, node), r_gnTotalRealizedNetOperatingCost(grid, node));
// Total realized operating costs gn/g share
r_gnTotalRealizedOperatingCostShare(gn(grid, node))${ r_gTotalRealizedOperatingCost(grid) }
= r_gnTotalRealizedOperatingCost(grid, node)
/ r_gTotalRealizedOperatingCost(grid);
// Total realized operating costs over the simulation
r_totalRealizedOperatingCost
= sum(gn(grid, node), r_gnTotalRealizedOperatingCost(grid, node));
// Total realized net operating costs over the simulation
r_totalRealizedNetOperatingCost
= sum(gn(grid, node), r_gnTotalRealizedNetOperatingCost(grid, node));
// Total realized costs on each gn over the simulation
r_gnTotalRealizedCost(gn(grid, node))
= sum(ft_realizedNoReset(f, t)$[ord(t) > mSettings(m, 'results_t_start')], r_gnRealizedCost(grid, node, f ,t));
= r_gnTotalRealizedOperatingCost(grid, node)
+ sum(gnu(grid, node, unit),
+ r_gnuFOMCost(grid, node, unit)
+ r_gnuUnitInvestmentCost(grid, node, unit)
)
+ sum(gn2n_directional(grid, from_node, node),
+ r_gnnLinkInvestmentCost(grid, from_node, node)
/ 2
)
+ sum(gn2n_directional(grid, node, to_node),
+ r_gnnLinkInvestmentCost(grid, node, to_node)
/ 2
);
// Total realized net costs on each gn over the simulation
r_gnTotalRealizedNetCost(gn(grid, node))
......@@ -346,7 +430,7 @@ r_gnTotalRealizedCostShare(gn(grid, node))${ r_gTotalRealizedCost(grid) }
r_totalRealizedCost
= sum(gn(grid, node), r_gnTotalRealizedCost(grid, node));
// Total realized net costs over the simulation
// Total realized net operating costs over the simulation
r_totalRealizedNetCost
= sum(gn(grid, node), r_gnTotalRealizedNetCost(grid, node));
......@@ -371,12 +455,14 @@ r_uTotalOnlinePerUnit(unit)${ p_unit(unit, 'unitCount') }
r_uTotalStartup(unit, starttype)
= sum(ft_realizedNoReset(f, t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_startup(unit, starttype, f, t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
); // END sum(ft_realizedNoReset)
// Total sub-unit shutdowns over the simulation
r_uTotalShutdown(unit)
= sum(ft_realizedNoReset(f, t)$[ord(t) > mSettings(m, 'results_t_start')],
+ r_shutdown(unit, f, t)
* sum(msft_realizedNoReset(m, s, f, t), p_msProbability(m, s))
); // END sum(ft_realizedNoReset)
* --- Diagnostic Results ------------------------------------------------------
......
......@@ -48,13 +48,15 @@ loop((m, feature)$active(m, feature),
);
put /;
f_info.nd = 0; // Set number of decimals to zero
put "Start time: ", mSettings('schedule', 't_start')/;
put "Length of forecasts: ", mSettings('schedule', 't_forecastLengthUnchanging')/;
put "Model horizon: ", mSettings('schedule', 't_horizon')/;
put "Model jumps after solve: ", mSettings('schedule', 't_jump')/;
put "Last time period to solve: ", mSettings('schedule', 't_end')/;
*put "Length of each time period: ", mSettings('schedule', 'intervalLength')/;
put "Number of samples: ", mSettings('schedule', 'samples')/;
loop(m,
put "Start time: ", mSettings(m, 't_start')/;
put "Length of forecasts: ", mSettings(m, 't_forecastLengthUnchanging')/;
put "Model horizon: ", mSettings(m, 't_horizon')/;
put "Model jumps after solve: ", mSettings(m, 't_jump')/;
put "Last time period to solve: ", mSettings(m, 't_end')/;
* put "Length of each time period: ", mSettings(m, 'intervalLength')/;
put "Number of samples: ", mSettings(m, 'samples')/;
);
putclose;
* -----------------------------------------------------------------------------
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