Metadata-Version: 2.4
Name: shipp
Version: 1.2.1
Summary: A design optimization software for hybrid power plants
Author: Jenna Iori
Author-email: Jenna Iori <j.iori@tudelft.nl>
Maintainer-email: Jenna Iori <j.iori@tudelft.nl>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/jennaiori/shipp
Project-URL: Source, https://github.com/jennaiori/shipp
Project-URL: Documentation, https://jennaiori.github.io/shipp/
Keywords: hybrid power plants,renewable energy,sizing optimization,solar energy,storage sizing,wind energy,wind farm,wind power
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.22
Requires-Dist: numpy-financial
Requires-Dist: pandas>=2.0
Requires-Dist: scipy
Requires-Dist: matplotlib
Requires-Dist: requests
Requires-Dist: pyomo
Requires-Dist: entsoe-py
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Dynamic: author
Dynamic: license-file

# SHIPP: Sizing optimization for HybrId Power Plants

[![CI/CD test suite](https://github.com/jennaiori/shipp/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/jennaiori/shipp/actions/workflows/main.yml)
[![DOI](https://img.shields.io/badge/DOI-10.4121%2F2EE36148--369F--4E1F--B770--C86752D7DCA4-yellow.svg)](https://doi.org/10.4121/2EE36148-369F-4E1F-B770-C86752D7DCA4)
[![PyPi](https://img.shields.io/pypi/v/shipp)](https://pypi.org/project/shipp/)
[![License](https://img.shields.io/pypi/l/shipp)](https://github.com/jennaiori/shipp/blob/main/LICENSE)


<picture>
  <source media="(prefers-color-scheme: dark)" srcset="docs/images/shipp_extended_dark_small.png">
  <source media="(prefers-color-scheme: light)" srcset="docs/images/shipp_extended_small.png">
  <img alt="SHIPP logo">
</picture>

## Description
SHIPP is used for studying the design and operation of hybrid power plants, i.e. power plants combining one or more renewable energy production with energy storage systems.

Documentation is available at [https://jennaiori.github.io/shipp/](https://jennaiori.github.io/shipp/)

## Installation
The package can be installed using pip.

```python
pip install shipp
```

## Usage

Examples are given in the folder `examples/`. 

The folder `experiments/` contains scripts to reproduce the results presented in the following publications:
- **`hyb24_bl_hpp/`**: Iori, J., Zaaijer, M., von Terzi, D., & Watson, S. (2024). Design drivers for the storage system of baseload hybrid power plants. In 8th International Hybrid Power Plants and Systems Workshop, HYB 2024 (2 ed., Vol. 2024, pp. 245-250) https://doi.org/10.1049/icp.2024.1844
- **`we25_robust_dispatch/`**: Iori, J., Zaaijer, M., Kreeft, J., von Terzi, D., Watson, S. (2025) _Reliable operation of wind-storage systems for baseload power production_, WindEurope Annual Event 2025 Copenhagen, Denmark. https://doi.org/10.1088/1742-6596/3025/1/012023  

## Dependencies
A valid access or license to a solver compatible with pyomo (MOSEK, CPLEX, Gurobi, etc.) is recommended to solve large problems (see more information here: https://www.pyomo.org/).

## Latest changes [1.2.1]
- Added CHANGELOG.md
- Added documentation on the implementation of the dispatch optimization problems and mathematical background: [https://jennaiori.github.io/shipp/](https://jennaiori.github.io/shipp/)
- Added API reference in the documentation
- Added function `financial_metrics` in `kernel.py` to compute LCOE, NPV, IRR, CAPEX and cashflow
- Changed functions `solve_lp_pyomo` and `solve_lp_sparse`:
    - Both functions now take a single dictionary argument `options` for optional arguments like `fixed_cap` and the penalty factors.
    - The constraint on the first and last state-of-charge is now an inequality constraint $e_0 \leq e_{n+1}$
    - Addition of the constraint on maximum combined storage power in `solve_lp_sparse` to match `solve_lp_pyomo`
    - Addition of a penalty on total curtailed energy with factor `beta_obj`
- Added two problem formulations (`lp` and `milp`) in `solve_lp_sparse`
- Added function `curtail` in `Production` object to copy the object and curtail the power production by a given `np.ndarray`
- Added tests to check conservation of energy between energy produced, curtailed energy, storage losses and energy delivered
- Fixed [issue #4](https://github.com/jennaiori/shipp/issues/4)
- Fixed lack of storage model check / storage losses check in `solve_lp_sparse`

## Authors and acknowledgment
This project is developed by Jenna Iori at Delft University of Technology and was initially part of the Hollandse Kust Noord wind farm innovation program, with funding from CrossWind C.V.

The code is release under the Apache 2.0 License (see License.md).

## Copyright notice: 

Technische Universiteit Delft hereby disclaims all copyright interest in the program “SHIPP” (a design optimization software for hybrid power plants) written by the Author(s). 

Henri Werij, Faculty of Aerospace Engineering, Technische Universiteit Delft.

© 2024-2026, Jenna Iori
