Skip to content

PowNet v2.3 (JOSS Review)

Latest
Compare
Choose a tag to compare
@phumthep phumthep released this 03 Jun 01:10
· 8 commits to master since this release
f82b8ec

This version 3.3 release significantly enhances the framework's capabilities, focusing on improved model accuracy, expanded functionalities, and greater user flexibility. This release is also the version described in our JOSS publication.

Key Features

  • Addressed issues in the DC Optimal Power Flow (DC-OPF) model. Both the angle formulation and the Kirchhoff formulation are now functioning correctly and have been validated with a toy system to ensure sensible outputs. The two formulations also produce the same model outputs.
  • Refactored the Reservoir module: (1) Ensured the Reservoir module is now compatible with the current codebase (2) Corrected the logic within functions in solve_release.py (3) Improved the computational efficiency of the power-water reoperation algorithm.
  • Revised modeling the upper bounds of non-dispatchable units (hydropower, solar, wind, and import). Instead of enforcing their hourly availabilities as constraints with binary variables (p <= xP), hourly availabilities are now enforced as upper bounds of variables. This approach remove binary variables, leading to faster model building and solving times.
  • Users can now add custom constraints using the UserConstraint class. However, the custom constraints are currently limited to variables already present in the base unit commitment problem.
  • Implemented a comprehensive set of unit tests that cover all constraints in the unit commitment problem.
  • Comprehensively revised the documentation. These changes include adding and modifying docstrings and comments within the codebase.
  • Refactored the ModelBuilder class. The class is now more modular, supporting future developments, such as introducing new generator types and new mathematical formulations for existing components of a power system.

Other improvements

  • Changed the default line loss factor from zero to 0.0001. A factor of zero poses a problem in the current mathematical formulation.
  • Included energy storage as part of meeting the spinning reserve requirement. The state-of-charge of a storage unit is considered a spinning reserve.
  • Added power flow visualization via Visualizer.plot_power_flow.
  • Added evaluation plots for time series modeling via TimeSeriesModel.plot_residuals.
  • Fixed a bug in Visualizer.plot_thermal_units.
  • Added weekly hydropower formulation. Hydropower can now be modeled with a weekly energy budget.
  • Fixed PowerSystemModel.print_added_constraints. The method now correctly searches for actual constraints instead of returning constraints that match a pre-defined list.
  • Fixed a bug in OutputProcessor when processing of flow variables.
  • Updated dependency requirements so PowNet can support the latest versions of its dependencies.
  • Introduced minor changes and type hints for various functions, classes, and methods.