All notable changes to this project will be documented in this file.
- The format is based on Keep a Changelog.
- This project adheres to Semantic Versioning.
- For versions before 1.0, we follow the Pkg.jl convention
that
0.a.b
is compatible with0.a.c
.
- Add support for two-stage stochastic problems
- Add support for day-ahead and real-time market clearing simulation
- Add time decomposition methods
- Add scenario decomposition methods (progressive hedging)
- Add support for energy storage units
- Rewrite documentation with runnable examples
- Add support for multiple reserve products and zonal reserves.
- Add flexiramp reserve products, following WanHob2016's formulation (@oyurdakul, #21).
- Add 365 variations for each MATPOWER instance, corresponding to each day of the year.
- To support multiple/zonal reserves, the input data format has been modified as follows:
- In
Generators
, replaceProvides spinning reserves?
byReserve eligibility
- In
Parameters
, removeReserve shortfall penalty
- Revise
Reserves
section
- In
- To allow new versions of UnitCommitment.jl to read old instance files, a new required field
Version
has been added to theParameters
section. To load v0.2 files in v0.3, please add{"Parameters":{"Version":"0.2"}}
to the file. - Benchmark test cases are now downloaded on-the-fly as needed, instead of being stored in our GitHub repository. Test cases can also be directly downloaded from: https://axavier.org/UnitCommitment.jl/
- Fix small bug in validation scripts related to startup costs
- Fix duplicated startup constraints (@mtanneau, #12)
- Add multiple ramping formulations (ArrCon2000, MorLatRam2013, DamKucRajAta2016, PanGua2016)
- Add multiple piecewise-linear costs formulations (Garver1962, CarArr2006, KnuOstWat2018)
- Allow benchmark scripts to compare multiple formulations
- Add sub-hourly unit commitment.
- Add
UnitCommitment.write(filename, solution)
. - Add current mathematical formulation to the documentation.
- Rename "Time (h)" parameter to "Time horizon (h)".
- Rename
UnitCommitment.get_solution
toUnitCommitment.solution
, for better consistency with JuMP style. - Add an underscore to the name of all functions that do not appear in the
documentation (e.g.
something
becomes_something
) These functions are not part of the public API and may change without notice, even in PATCH releases. - The function
UnitCommitment.build_model
now returns a plain JuMP model. The structUnitCommitmentModel
has been completely removed. Accessing model elements can now be accomplished as follows:model.vars.x[idx]
becomesmodel[:x][idx]
model.eqs.y[idx]
becomesmodel[:eq_y][idx]
model.expr.z[idx]
becomesmodel[:expr_z][idx]
model.obj
becomesmodel[:obj]
model.isf
becomesmodel[:isf]
model.lodf
becomesmodel[:lodf]
- Properly validate solutions with price-sensitive loads.
- Add OR-LIB and Tejada19 instances.
- Improve documentation.
- Fixes to MATLAB and PGLIB-UC instances.
- Initial public release.