- Allow absolute paths for file inputs to
loadgenericdata()and the functions that call it, e.g.addstorage(),addwind(),getprofiles(),loadmd(),loadstoragedata(),loadxgendata().
- Release 1.3.1.
- Move examples from
lib/tto their ownexamplesdirectory.
- Fix issue caused by tiny non-zero values for commitment variables.
Don't count on MP-Opt-Model's
miqps_<solver>()functions to round integer variable solutions.
- Tweak tests (again) to avoid warnings and presolve bug with HiGHS-based
linprogandintlinprogin Optimization Toolbox R2024b.
- Fix issue with
most_summary()when ramp results are missing.
- Fix issue #45 where
most()does not properly handle cases with contingencies defined only in some periods/scenarios. Thanks to Stefano Nicolin. - Update
most_summary()to skip display of non-existent contingencies.
- Release 1.3.
- Tweak tests to avoid warnings and presolve bug with new HiGHS-based
linprogandintlinprogin Optimization Toolbox R2024a.
- Add Sphinx-based Reference documentation.
- Speed up building unit commitment (min up/down time) constraints. Improvement can be quite substantial on large problems.
- Reduce memory requirements for long horizon cases with storage by forming/storing transposes of matrices for storage constraints. Requires MP-Opt-Model version > 4.1.
- Fix issue #39 in which the value of
mdi.Delta_T, the number of hours represented by each period, was not being accounted for in most of the terms in the objective function. Thanks to Stefano Nicolin.
- Fix issue #37 which caused a fatal error in storage input checks with multiple storage units under some circumstances. Thanks to Keir Steegstra.
- Remove extra column in mdo.results.ExpectedRampCost and ignore for single period.
- Release 1.2.
- Update
addgen2mpc()to expand fixed reserve parameters to keep sizes compatible.
- Silence near singular matrix warnings in some tests that began with MATLAB R2022b.
- Fix issue #29, where a typo caused a check on
md.UC.MinDown>= 1 to be skipped. Thanks to Talha Iqbal.
- Add TLMP (temporal locational marginal price) for storage units
based on work by Chen, Tong in [Chen2022] and returned in
mdo.results.StorageTLMPc,mdo.results.StorageTLMPd,mdo.results.CondStorageTLMPc,mdo.results.CondStorageTLMPd. See Table 5-13 in the User's Manual. - Add tests for TLMP in
t_most_tlmpbased on toy examples from Cong Chen, including both ramping and storage.
- For deterministic cases with storage where
ForceCyclicStorageis 0, ensure that initial storage bounds are equal to initial storage and output a warning if they are modified. Fix deterministic UC tests where this was causing results to change depending on value ofrho.
- Add calculation of expected TLMP (temporal locational marginal price)
based on work by Guo, Chen, Tong in [Guo2021] and [Chen2021]
and returned in
mdo.results.GenTLMPandmdo.results.CondGenTLMP. See Table 5-13 in the User's Manual.
- Ramping reserves and constraints are now included for the transition from the initial state into period 1, except for single-period problems.
- INCOMPATIBLE CHANGE: Modified definition of ramping reserves for
period t (and all corresponding input and output parameters) to refer
to the transition from t-1 to t, not t to t+1. This means that
the ramping reserves for the transition into the first period are now
optimization variables and the corresponding constraints are explicit.
This is for multiperiod problems only. Ramping reserves and contraints
are explicitly excluded for single-period problems.
Note: This change also corrects an error in (4.11) in the manual. The superscript t on gamma is now correct. Previously it should have been t+1, as it was in the code.
- Fix tests that were failing under Octave 7.x.
- Fix bug in
plot_uc()that prevented it from working properly in a subplot, such as int_most_uc(). Thanks to Lim Han.
Requires MATPOWER with 7.1 or later (for MP-Opt-Model 3.0 or later).
- Release 1.1.
- Use
opt_model.get_soln()to extract variable and shadow price results, rather than doing the indexing manually.
- Convert to using
opt_model.solve()method rather than callingmiqps_matpower()orqps_matpower()directly. - INCOMPATIBLE CHANGE: Update objective function value returned in
mdo.QP.fto include the previously missing constant term.
- Fix issue #16, where the
omfield of the output MOST data struct (mdo) was a handle to the same object as as theomfield of the input MOST data struct (mdi), meaning that changing one would modify the other. Thanks to Baraa Mohandes.
- Update
most_summaryto include sections for fixed loads and storage expected stored energy. Thanks to Baraa Mohandes. - Move assembly of constraints and variable bounds inside the
build_modelconditional. Thanks to Baraa Mohandes.
- Fix bug #6 where building a model without solving it, or solving a previously built model resulted in a fatal error. Thanks to Baraa Mohandes.
- Fix bug #11 where storage constraints were not correct for
t=1 and
rho ~= 1. Thanks to Baraa Mohandes.
- Release 1.0.2.
- Add
CITATIONfile. - Other miscellaneous documentation updates, e.g. MATPOWER website links updated to https://matpower.org, separate references for MATPOWER software and User's Manual, with DOIs.
- Fix selection of default solver for
t_most_w_dsand add option to specify solver directly in optional input arg.
- Release 1.0.1.
- INCOMPATIBLE CHANGE: Failure of the optimization no longer halts execution and jumps to the debugger.
- Add
successflag tomd.resultsoutput MOST Data struct to indicate success or failure of optimization.
- Fix bugs in
plot_uc_data()resulting in incorrect legends.
- Replace
clock()/etime()withtic()/toc()for timing.
- Fix bug #1 in
loadmd()where profiles that modify xGenData or StorageData resulted in a fatal error.
- Update for
opt_modelAPI cleanup.
- Use MATPOWER's new quadratic costs in
opt_modelin place of the legacy cost model.
- Switch to OOP notation everywhere for
opt_modelobject, e.g.om.method(). - Use
om.init_indexed_name()instead of deprecated form of calls toadd_vars(),add_constraints()oradd_costs(). - Use
om.add_lin_constraint()in place of deprecatedadd_constraints().
- Fix dimension of
RampWearcost indexing ifmdi.OpenEndedis true. - Add missing constant term to objective function value reported
by
most_summary.
- Add MOST User's Manual to
docsand sources todocs/src.
- Add Travis-CI integration. Thanks to Richard Lincoln.
- Released 1.0.
- Moved development to GitHub: https://github.com/MATPOWER/most.
- no changes from v1.0b2
- Silence some warnings during tests on Octave 4.2.
- Released 1.0b2.
- Fixed some MOSEK related issues in tests and tutorial examples.
- Released 1.0b1.
- Put checks in
loadmd()andmost()to require internal bus ordering formpc, plus explicit notes in documentation.
- Rename example files in
most/tto start withex_instead ofeg_.
- Add MATPOWER option
most.fixed_reswith default of -1 (depends on presence ofmd.FixedReserves) to controlmd.IncludeFixedReserves. - Move fixed zonal reserve output fields (
R,prc,mu.l,m.u,m.Pmax,totalcost) frommdo.FixedReserves(t,j,k)tomdo.flow(t,j,k).mpc.reserves.
- Add
most_summary()function to summarize and print some summary results. Moved from some of the test files into its own public function. (Still very incomplete). - For consistency, rename MOST data struct variables everywhere to
mdi(input) fromIstr,md_in, andmdin, and tomdo(output) fromOstr,md_out, andmdout. - Rename
md.idxfields for dimensions of dynamic system constraints.nyo-->nydsnzd-->nzdsnyt-->ntds
- (Tentatively) modify
md_init()to initialize only what is needed to runloadmd()andmost().
- Renamed
mopstomost, and re-wrote history below accordingly.
- Fixed fatal crash triggered by failed solve with
verboseoption off.
- Added
ExpectedTerminalStorageMax,ExpectedTerminalStorageMintomd.StorageandStorageDatastructs. If presentExpectedTerminalStorageAimnow simply overwrites both.
- Renamed
apply_contingency()toapply_changes()and moved from sopf to matpower.
- Fixed bug preventing proper printing of exit flag on failed solve.
- Added
mpoptas optional second argument tomost().
- Removed all of the old indexing fields from
md_init(). - Added
mosttohave_fcn(). - Added
mostoptions tompoption(), addedmpoption_info_most().
- Renamed
loadmpsd()toloadmd(),mpsd_init()tomd_init(),mpsdtomd.
- Added
plot_uc()function for plotting unit commitment schedules.
- Moved lots of
mpsopfrelated files tomatpower/dist/mosttemporarily. - Commented out call to
oldidx().
- In
loadmpsd()xgd.CommitKeymust be non-empty (in addition to just being present) in order to process unit commitment fields.
- Added
fixed_gencostfield to flow-specificmpcfields to save the fixed cost portion that is removed fromgencost, to allow for computation of full flow-specific generator costs from solution.
- Modified
filter_ramp_transitions()to multiply conditional probability of transition by conditional probability of being in source state (assuming we've made it to that period) before applying cutoff threshold. This will typically cut off more transitions for the same threshold value. - Minor fixes, updates to
plot_gen().
- Forked development from
mpsopfl_fixed_res(), which is currently identical except for function names in error messages.