Antares-Simulator is an Open Source power system simulator to quantify the adequacy or the economic performance of interconnected energy systems, at short or remote time horizons.
[x] randomly generate "Days since last maintenance" per each unit per each cluster
[x] create ini file structure in Maintenance and read/write functions
[x] add somewhere user input for number of scenarios and length of scenarios
[x] create basic backbone
[x] if maintenance-planning = randomized do nothing. if maintenance-planning = optimized - do not generate thermal TS at all
[x] if maintenance-planning = optimized -
For each "ENABLED" cluster
that has "generate-outage-switch" = TRUE
and is inside area that belongs to ACTIVE mnt group
generate Time series.
ts number = sc-num x sc-length
ts values = all "777"
for other clusters do not generate TS-s.
[x] create pre-check if the maintenance-planning = yes and stochastic TS gen thermal = yes -> then Stochastic TS gen for load, hydro and renewable need to be = False
[x] calculate residual load time series (separate function)- rest of the parameters can be given in optimization problem formulation
[x] test residual load time series functions - really complicated cannot let this go without tests
[x] refactor - prepare optimization problem formulation structure
[x] Create a small problem and solve it using cbc-milp-solver - log input - log output - test results
problem:
minimize:
3x - y
subject to:
1.5 x + 2 y >= 12
0 <= x <= 3
0 <= y <= 5
x - linear variable
y - integer variable
*/
[x] Start creating the real optimization problem - first variables - see how to store pointers to MPVariables classes so I can define problem in separate files
[x] wait for the progress meeting
[x] create objective function
[x] store all daily data per cluster inside a new structure (daily output powers and prices) - no need to re-calculate them in a day, timeStep, and scenarioNumber loop. They are set once. And after that, the values are just collected with getters
[x] start creating optimization problem constraints - start with the easy ones. That can pass as corrected boundaries.
[x] load balance constraints
[x] Maximum output of the units constraints
[x] start vs end logical constraints
[x] check results - logic - on small test example
[x] test results with the example Nikola created - see Nikola can help
[x] create method and struct to collect and append maintenance start results after each timeStep_
[x] generate random maintenance duration for each maintenance start
[x] re-caclulate daysSinceLastMaintenance after first time step [WIP]
[x] calculate unit availability - and store it in Unit struct
[x] sum up Unit availability to get Cluster availability
[x] test new solutions with new formulas - timeHorizon / numberOfMaintenances
[x] after implementation of new formulas for re-calculation. Crashed when we have cluster not used for maintenance - trying to re-calculate parameters and has no originalRandomlyGeneratedDaysSinceLastMaintenance.
Fix this
[x] exclude edge cases - add while loop - just to be sure - no while loop - found better solution
[x] test edge cases !
[x] make small manual for Elia so they know how to use it
[x] phase-II - see how to avoid crash when Thermal TS num in the Simulation tab does not match sc.length*sc.num.
for now, explain to Elia to be careful about this. The issue is the random number are chosen before ts-gen and higher numbers can appear there if rand is used. - pre-chek added
[x] REMOVE PRINTING BEFORE MAKING EXE !!!!!!!!!!!!!
This PR is opened in order to implement RTE-I CR 27 - Maintenance Planning spec: https://rteinternational.sharepoint.com/:w:/s/AntaresUser'sClub-Interne/Edzy10UZURFJp-d76Xc8jZ0Bx1PJAvE_3scnh1UguzES9w?e=p7ocmy
Next:
"ENABLED"cluster that has "generate-outage-switch" = TRUE and is inside area that belongs to ACTIVE mnt group generate Time series. ts number = sc-num x sc-length ts values = all "777" for other clusters do not generate TS-s.problem: minimize: