Metadata-Version: 2.4
Name: shipp
Version: 1.2.2
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/).

## [1.2.2]
- Changed class `Storage`: the depth-of-charge parameter `dod` is replaced by a minimum and maximum state-of-charge `soc_min` and `soc_max`.
- Changed functions `solve_lp_pyomo`, `solve_lp_sparse` and `solve_dispatch_pyomo`: the input `p_min` is now optional and default to 0.
- Changed function `solve_dispatch_pyomo` to take a single dictionary argument `options` for optional arguments like `fixed_cap` and the penalty factors (similar to  `solve_lp_pyomo` and `solve_lp_sparse`).
- Changed optimization problem implemented in `solve_dispatch_pyomo`
    - The ramp-limit is now characterized by separate up- and down- bounds `dp_min` and `dp_max`, with `dp_min` $\leq 0$.
    - Addition and renaming of tuning parameters `beta_obj` and `gamma_obj` in alignment with the optimization problems implemented in `solve_lp_sparse` and `solve_lp_pyomo`.
    - Addition of a slack variable to reduce deviations to the baseload constraint, similar to what was implemented for the ramp constraint.
    - Reformulation of the ramp-limit and baseload constraint at the first time step to combine a binary variable and a slack variable. 
    - Addition of tuning parameters `mu1_obj`, `mu2_obj` and `mu3_obj` for the total reliability and the slack variables of the baseload and ramp penalties, respectively.

## 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
