===============
PyROS CHANGELOG
===============


-------------------------------------------------------------------------------
PyROS 1.3.7    06 Mar 2025
-------------------------------------------------------------------------------
- Modify reformulation of state-variable independent second-stage
  equality constraints for problems with discrete uncertainty sets


-------------------------------------------------------------------------------
PyROS 1.3.6    06 Mar 2025
-------------------------------------------------------------------------------
- Add uncertain parameter reduction to preprocessor and subproblems


-------------------------------------------------------------------------------
PyROS 1.3.5    13 Feb 2025
-------------------------------------------------------------------------------
- Tweak online documentation, including solver logging output example
- Adjust UTC invocation time retrieval in PyROS logging to
  deprecation of `datetime.datetime.now()` in Python 3.12
- Suppress error message emitted to console when PyROS
  attempts to retrieve git commit hash of Pyomo installation that
  is not a git repository
- Add more information to solver output logging message emitted upon
  failure to solve deterministic (i.e., initial master) problem


-------------------------------------------------------------------------------
PyROS 1.3.4    22 Jan 2025
-------------------------------------------------------------------------------
- Fix typo that prevents fixed Vars from being included in model scope
- Fix typo that prevents proper initialization of auxiliary uncertain
  parameters in the separation problems
- Unit test method for initializing separation problems
- Add tests checking model scope determined by solver argument validation
  routine


-------------------------------------------------------------------------------
PyROS 1.3.3    03 Dec 2024
-------------------------------------------------------------------------------
- Add efficiency for handling PyROS separation problem sub-solver errors
- Add logger warnings to report sub-solver errors and inform that PyROS
  will continue to solve if a violation is found
- Add unit tests for new sub-solver error handling for continuous
  and discrete uncertainty sets


-------------------------------------------------------------------------------
PyROS 1.3.2    29 Nov 2024
-------------------------------------------------------------------------------
- Allow Var/VarData objects to be specified as uncertain parameters
  through the `uncertain_params` argument to `PyROS.solve()`


-------------------------------------------------------------------------------
PyROS 1.3.1    25 Nov 2024
-------------------------------------------------------------------------------
- Add new EllipsoidalSet attribute for specifying a
  confidence level in lieu of a (squared) scale factor


-------------------------------------------------------------------------------
PyROS 1.3.0    12 Aug 2024
-------------------------------------------------------------------------------
- Fix interactions between PyROS and NL writer-based solvers
- Overhaul the preprocessor
- Update subproblem formulations and modeling objects
- Update `UncertaintySet` class and pre-implemented subclasses to
  facilitate new changes to the subproblems
- Update documentation and logging system in light of new preprocessor
  and subproblem changes
- Make all tests more rigorous and extensive


-------------------------------------------------------------------------------
PyROS 1.2.11    17 Mar 2024
-------------------------------------------------------------------------------
- Standardize calls to subordinate solvers across all PyROS subproblem types
- Account for user-specified subsolver time limits when automatically
  adjusting subsolver time limits
- Add support for automatic adjustment of SCIP subsolver time limit
- Move start point of main PyROS solver timer to just before argument
  validation begins


-------------------------------------------------------------------------------
PyROS 1.2.10    07 Feb 2024
-------------------------------------------------------------------------------
- Update argument resolution and validation routines of `PyROS.solve()`
- Use methods of `common.config` for docstring of `PyROS.solve()`


-------------------------------------------------------------------------------
PyROS 1.2.9    15 Dec 2023
-------------------------------------------------------------------------------
- Fix DR polishing optimality constraint for case of nominal objective focus
- Use previous separation solution to initialize second-stage and state
  variables of new master block; simplify the master feasibility problem
- Use best known solution from master to initialize separation problems
  per performance constraint
- Refactor DR variable and constraint declaration routines.
- Refactor DR polishing routine; initialize auxiliary variables
  to values they are meant to represent


-------------------------------------------------------------------------------
PyROS 1.2.8    12 Oct 2023
-------------------------------------------------------------------------------
- Refactor PyROS separation routine, fix scenario selection heuristic
- Add efficiency for discrete uncertainty set separation
- Fix coefficient matching routine
- Fix subproblem timers and time accumulators
- Update and document PyROS solver logging system
- Fix iteration overcounting in event of `max_iter` termination status
- Fixes to (assembly of) PyROS `ROSolveResults` object


-------------------------------------------------------------------------------
PyROS 1.2.7    26 Apr 2023
-------------------------------------------------------------------------------
- Refurbish separation problem routines and data structures
- Ensure implementation of separation scenario selection heuristic
  is consistent with original intent
- Fix local and global separation solve time accumulators
- Prefer TicTocTimer for solve time accumulators


-------------------------------------------------------------------------------
PyROS 1.2.6    07 Dec 2022
-------------------------------------------------------------------------------
- Add more judicious enforcement of PyROS time limit.
- Update PyROS solver and webpage docs


-------------------------------------------------------------------------------
PyROS 1.2.5    06 Dec 2022
-------------------------------------------------------------------------------
- Add `config` argument to `UncertaintySet.bounding_model`


-------------------------------------------------------------------------------
PyROS 1.2.4    22 Nov 2022
-------------------------------------------------------------------------------
- Add origin attribute to BudgetSet.


-------------------------------------------------------------------------------
PyROS 1.2.3    22 Nov 2022
-------------------------------------------------------------------------------
- Generalize FactorModelSet.
- Resolve issues with FactorModelSet parameter bounds.
- Modularize construction of uncertainty set bounding problems.


-------------------------------------------------------------------------------
PyROS 1.2.2    09 Nov 2022
-------------------------------------------------------------------------------
- Rewrite PyROS `UncertaintySet` module, class, and attribute docstrings
  and make attribute validation more rigorous.


-------------------------------------------------------------------------------
PyROS 1.2.1    05 Oct 2022
-------------------------------------------------------------------------------
- Fix subordinate optimizer SolverResults solve time access routines.


-------------------------------------------------------------------------------
PyROS 1.2.0    09 Sep 2022
-------------------------------------------------------------------------------
- Ensure master feasibility problems initialized to a feasible point.
- Initialize master problems to master feasibility solution (if solved
  successfully), or to initial point (otherwise)
- Initialize separation problems to nominal polished master solution (if
  nominal objective focus), or to solution from most recently added block
  (if worst case focus).
- Extend documentation and handling of Exceptions and non-optimal subsolver
  terminations.


-------------------------------------------------------------------------------
PyROS 1.1.4    27 Jul 2022
-------------------------------------------------------------------------------
- Ensure `DiscreteScenarioSet` problems terminate successfully if there
  are no remaining scenarios to separate.


-------------------------------------------------------------------------------
PyROS 1.1.3    12 Jul 2022
-------------------------------------------------------------------------------
- Avoid master feasibiliity problem unit consistency checks.


-------------------------------------------------------------------------------
PyROS 1.1.2    31 May 2022
-------------------------------------------------------------------------------
- Fixes to PyROS ellipsoidal sets.
- Account for variable domains in PyROS model standardization.


-------------------------------------------------------------------------------
PyROS 1.1.1    25 Apr 2022
-------------------------------------------------------------------------------
- Fixes to Pyomo model objective validation.


-------------------------------------------------------------------------------
PyROS 1.1.0    04 Apr 2022
-------------------------------------------------------------------------------
- Change master feasibility problem formulation, initialization, and scaling


-------------------------------------------------------------------------------
PyROS 1.0.0    13 Jul 2021
-------------------------------------------------------------------------------
- Initial release
