Skip to main content

A simple production cost model of framework for power systems

Project description

license MIT CI Tests Coverage GitHub Release Read the Docs status

PowNet: A Production Cost Modeling Framework for Large-scale Power Systems

PowNet is an open-source production cost model (PCM) framework written in Python, designed to simulate the operational scheduling of large-scale (regional or national) power systems. It determines the least-cost schedule for power generation by solving the unit commitment (UC) and economic dispatch (ED) problems – a process commonly used for applications like day-ahead market simulation. Designed for users focused on power system analysis rather than complex model development, PowNet uses simple spreadsheet files for data inputs, significantly simplifying model setup and modification. As for advanced users, the framework's modular design provides modeling flexibility to implement customized analysis or explore complex modeling algorithms.

Key functionalities

  • Models power systems including generator techno-economic constraints and network limits
  • Uses computationally efficient linearized DC power flow for network analysis
  • Supports variable renewable energy (VRE) sources, such as hydro, wind, and solar
  • Built for computational speed using the high-performance Gurobipy modeling framework with support for the open-source HiGHS solver
  • Includes features allowing the analysis of water-energy nexus impacts (e.g., drought effects on thermal units)

PowNet enables analysts to readily study grid operations, VRE integration, and water-energy interactions in a low-code environment. For advanced users, it retains the flexibility needed to explore complex model configurations and research modeling algorithms.

Read the Documentation for more information at https://pownet.readthedocs.io/en/latest.

Using PowNet

To use PowNet, a user needs to supply it with CSV files. For guidance on creating these CSV files, please see examples provided here. Please ensure that column names matches with those from the examples. Details on preparing some input files can be found here.

As for installing PowNet, there are multiple options depending on whether we want to modify the source code. However, the following step is highly recommended for any user: creating a virtual environment to manage dependencies. If using Conda, we can create an envrionment with the following command

conda create --name your_env_name_here
conda activate your_env_name_here

If deciding on a name for the environment takes too long, please feel free to name the environment as "pownet".

Option 1: Regular user

A regular user is someone who has created their input files and wish to just run PowNet. In this case, it is best to simply install PowNet as a package from PyPI. We can achieve this with the following command:

pip install pownet

Once the package has been installed, we can now go to our working directory. In this example, we assume the following folder structure:

working_directory/
├── scripts/
│   └── run_quickstart.py
├── model_library/
│   └── dummy/
│       ├── demand_export.csv
│       ├── thermal_unit.csv
│       ├── nondispatch_unit.csv
│       ├── hydropower.csv
│       ├── import.csv
│       ├── contract_cost.csv
│       └── transmission.csv
└── outputs/

A tutorial "quickstart.py" provides an example on running a simulation, saving the simulation outputs, and visualizing the outputs.

Option 2: Power user (no pun intended)

In case we wish to modify the source code, PowNet should be installed as an editable package. First, download or clone the PowNet repository to your local machine. For example: if we want to clone to "C://user/pownet",

git clone https://github.com/your-username/pownet.git C://user/pownet

Next, open a terminal and navigate to the directory where we cloned the repository:

cd C://user/pownet

Now, we can install this PowNet package using pip, which is a manager for Python packages:

pip install -e .

This command installs the package in "editable" mode (-e) using pyproject.toml that is located in the root directory of PowNet. The editable mode allows us to edit PowNet codebase when we need to modify or implement new features. The pyproject.toml file specifies the dependencies required to run PowNet.

Overview of PowNet

overview_pownet

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pownet-2.3.0.tar.gz (2.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pownet-2.3.0-py3-none-any.whl (305.5 kB view details)

Uploaded Python 3

File details

Details for the file pownet-2.3.0.tar.gz.

File metadata

  • Download URL: pownet-2.3.0.tar.gz
  • Upload date:
  • Size: 2.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for pownet-2.3.0.tar.gz
Algorithm Hash digest
SHA256 fc78622ed5ae6697a7e0f212e8ec8878e7812d64df1b8cd12c91ac4ee67a2064
MD5 c784d9e54eb4c329bcadd65769363260
BLAKE2b-256 e0af7ec4a435a72f05fc41df6ff9a9ec6721029e7e158e20619f7caaadf9f0ce

See more details on using hashes here.

File details

Details for the file pownet-2.3.0-py3-none-any.whl.

File metadata

  • Download URL: pownet-2.3.0-py3-none-any.whl
  • Upload date:
  • Size: 305.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for pownet-2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bd3df3926f71cc9e8c1ca6d8c6bf5a83a4250229cb09737be48fee9511f699d4
MD5 83b84b7efbc636acebc68f79710c594b
BLAKE2b-256 052c108f8ca7efb33517531b2d06f41cf017e4187a9c0bd3c765198ac9158a26

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page