Changelog

Here, you'll find notable changes for each version of PREP-SHOT.

Version 0.1.0 - Jun 24, 2024

  • PREP-SHOT model is released with basic functionality for energy expansion planning.

  • Linear programming optimization model for energy systems with multiple zones.

  • Support for solvers such as Gurobi, CPLEX, MOSEK, and GLPK via Pyomo.

  • Input and output handling with pandas and Xarray.

Version 0.1.1 - Jul 11, 2024

Added

  • Add an example, expansion of Southeast Asia Mainland power system considering hydropower of Lower Mekong River.

  • Update the documentation with a docstring for each function and class.

  • Add the Semantic Versioning Specification.

Fixed

Changed

  • Support for solvers such as GUROBI (Commercial), COPT (Commercial), MOSEK (Commercial), and HiGHS (Open source) via PyOptInterface.

  • Change default solver to HiGHS.

  • Change the code comment style to NumPy.

  • Change the code style to PEP8.

  • Categorize constraint definitions based on type (co2, cost, demand, generation, hydro, investment, nondispatchable, storage, transmission) for better organization.

  • Split rule.py class into serveral smaller, focused classes according to categorized constraint definitions.

  • Simplify model by replacing intermediate constraints with direct expressions.

  • Extract new modules solver.py, output_data.py, and set_up.py from run.py and utils.py.

  • Remove parameters.py into set_up.py.

  • Refactor and improve comments and function names for clarity and conciseness.

Deprecated

  • Removed dependency on Pyomo due to high memory usage and slow performance for large-scale models. For you reference.

Version 0.1.2 - Jul 22, 2024

Added

  • Added mathematical notations to the constraint module.

  • Added a test script for prepshot.utils.

Fixed

  • Fixed the format of the API reference.

  • Fix code blocks of documentation.

  • Updated Contribution.rst to include context on running tests and code style checks.

  • Defined explicit data types for inputs and outputs of functions for better type checking and readability.

  • Added pyoptinterface._src.core_ext to Pylint's extension package allow list to resolve cpp-extension-no-member warning.

Changed

  • Updated model.py to keep necessary decision variables and use expressions for intermediate variables instead of direct determination.

  • Refactored extract_results_non_hydro in output_data.py to extract common features for different variables, simplifying the code.

  • Removed definitions of complex sets and opted for simple sets wherever possible to streamline the code.

  • Refactor: Organize import order of modules according to PEP 8 guidelines: (1) Grouped standard library imports at the top; (2) Followed by third-party library imports; (3) Local application/library imports at the bottom.