OpenUtility
OpenUtility is an alpha-stage Python package for Pyomo-based utility-system optimization. It focuses on investment selection, dispatch, thermal and electric balances, operating-cost reporting, and solver orchestration for industrial utility systems.
The package is intended to sit beside process-integration and thermodynamic tools rather than replace them. OpenPinch, TESPy workflows, manufacturer data, or other upstream tools can generate plain input data; OpenUtility consumes that data without importing those packages at runtime.
Package Scope
OpenUtility currently includes:
- typed input data classes for utility-system candidates, costs, thermal nodes, operating periods, and HPR performance maps;
- Pyomo MILP model construction for utility investment and dispatch decisions;
- HiGHS solving through Pyomo
SolverFactory("appsi_highs")and the requiredhighspypackage; - HPR investment and dispatch modeling, where HPR means heat pump and refrigeration;
- generic reporting helpers for model results, benchmarks, operating costs, and fuel consumption;
- generic bilevel decomposition bookkeeping, no-good cut helpers, and utility-system decomposition wrappers;
- thermal interval helpers for stream-like plain Python objects.
OpenUtility does not currently include:
- OpenPinch or TESPy as runtime dependencies;
- HPR thermodynamic cycle design, refrigerant screening, or performance-map generation;
- continuous HPR sizing; first-release HPR sizing is represented by selecting among fixed-capacity candidates;
- global interpolation across unrelated HPR temperature points;
- a full public case-study replication package in the distributed wheel;
- a public API named
BEELINE, although generic bilevel decomposition utilities are included.
OpenUtility/ is the reusable public package. Private replication workflows and
large study-specific artifacts are intentionally outside the package boundary
and are not included in release tests or built wheels.
OpenUtility targets Python >=3.14.2.
Academic Basis
OpenUtility began as a Python/Pyomo implementation of utility-system optimization methods developed by Julia Jimenez Romero, Adisa Azapagic, and Robin Smith:
- Julia Jimenez Romero, "Reduction of Industrial Energy Demand through Sustainable Integration of Distributed Energy Hubs," PhD thesis, The University of Manchester, 2022.
- Jimenez Romero, J., Azapagic, A., and Smith, R., Computers and Chemical Engineering, 170, Article 108060, 2023. https://doi.org/10.1016/j.compchemeng.2022.108060
- Jimenez Romero, J., Azapagic, A., and Smith, R., "BEELINE: BilevEl dEcomposition aLgorithm for synthesis of Industrial eNergy systEms," Computers and Chemical Engineering, 180, Article 108406, 2024. https://doi.org/10.1016/j.compchemeng.2023.108406
The package has since been generalized beyond the original replication workflows and extended with HPR optimization. In OpenUtility, HPR means heat pump and refrigeration: fixed-capacity HPR candidates can be selected and dispatched against multi-period thermal-node and electricity balances using versioned plain performance maps. The current HPR implementation is an optimization-layer model; thermodynamic map generation remains outside OpenUtility.
Install
From a checkout:
python -m pip install -e ".[dev,docs,release]"
For normal package use:
python -m pip install .
Quick Start
from OpenUtility import (
SteamLevelCandidate,
UtilitySystemModelData,
build_utility_system_model,
pyomo_utility_system_solver,
)
data = UtilitySystemModelData(
steam_mains=("MP",),
steam_levels=(
SteamLevelCandidate(
name="MP_100",
steam_main="MP",
temperature=100.0,
source_heat_available=5.0,
sink_heat_demand=5.0,
generation_enthalpy_delta=1.0,
use_enthalpy_delta=1.0,
source_heat_upper_bound=5.0,
sink_heat_upper_bound=5.0,
),
),
power_demand=0.0,
grid_import_limit=0.0,
grid_export_limit=0.0,
)
model = build_utility_system_model(data)
status = pyomo_utility_system_solver("appsi_highs")(model)
Verification
Run the full release gate:
python tools/release_check.py
The gate runs linting, formatting, type checking, tests with coverage, Sphinx,
source/wheel build, wheel inspection, twine check, dependency audit, and a
fresh wheel-install smoke test.
For offline local triage only:
python tools/release_check.py --skip-audit --skip-smoke-install
Documentation
Build docs locally:
python -m sphinx -W -b html docs /tmp/openutility-docs-html
OpenUtility 0.1.0 is an alpha release. Public reusable APIs are exposed
through OpenUtility.__all__ and OpenUtility.utility_system.__all__.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openutility-0.1.0.tar.gz.
File metadata
- Download URL: openutility-0.1.0.tar.gz
- Upload date:
- Size: 195.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e8f440fd4889f3364e41012318f37a8a82f9b80d781faaaddc07517c8b452b4
|
|
| MD5 |
1e875963a3abb409b0864211b21a8406
|
|
| BLAKE2b-256 |
b8e4bf14f3f79db6f4e50e90ae19fec921587f9559120accf498932fa436661e
|
Provenance
The following attestation bundles were made for openutility-0.1.0.tar.gz:
Publisher:
release.yml on waikato-ahuora-smart-energy-systems/OpenUtility
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openutility-0.1.0.tar.gz -
Subject digest:
8e8f440fd4889f3364e41012318f37a8a82f9b80d781faaaddc07517c8b452b4 - Sigstore transparency entry: 2703515842
- Sigstore integration time:
-
Permalink:
waikato-ahuora-smart-energy-systems/OpenUtility@125a8ff67873ce18357b323b8d1018987e6c8f83 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/waikato-ahuora-smart-energy-systems
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@125a8ff67873ce18357b323b8d1018987e6c8f83 -
Trigger Event:
push
-
Statement type:
File details
Details for the file openutility-0.1.0-py3-none-any.whl.
File metadata
- Download URL: openutility-0.1.0-py3-none-any.whl
- Upload date:
- Size: 66.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb1ee88abdcf026fe8350f83b2209cf2dc12c98ecbc269ddc11c5496f3ecb0f6
|
|
| MD5 |
c0c63ed3557d7ac774560f264a6f3e22
|
|
| BLAKE2b-256 |
5cae42b920d9f291c96566ff155dbd5ae614ff0455f949acf7558faaaae83bb5
|
Provenance
The following attestation bundles were made for openutility-0.1.0-py3-none-any.whl:
Publisher:
release.yml on waikato-ahuora-smart-energy-systems/OpenUtility
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openutility-0.1.0-py3-none-any.whl -
Subject digest:
cb1ee88abdcf026fe8350f83b2209cf2dc12c98ecbc269ddc11c5496f3ecb0f6 - Sigstore transparency entry: 2703516092
- Sigstore integration time:
-
Permalink:
waikato-ahuora-smart-energy-systems/OpenUtility@125a8ff67873ce18357b323b8d1018987e6c8f83 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/waikato-ahuora-smart-energy-systems
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@125a8ff67873ce18357b323b8d1018987e6c8f83 -
Trigger Event:
push
-
Statement type: