Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 25 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,34 +5,28 @@

[![Documentation Status](https://readthedocs.org/projects/energiapy/badge/)](https://energiapy.readthedocs.io/en/latest/)
[![PyPI](https://img.shields.io/pypi/v/energiapy.svg)](https://pypi.org/project/energiapy)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/energiapy.svg)](https://pypi.org/project/energiapy/)
[![Downloads](https://static.pepy.tech/personalized-badge/energiapy?period=total&units=international_system&left_color=grey&right_color=orange&left_text=Downloads)](https://pepy.tech/project/energiapy)
[![Python package](https://github.com/TAMUparametric/energiapy/actions/workflows/energia.yml/badge.svg)](https://github.com/TAMUparametric/energiapy/actions/workflows/energia.yml)
[![CI](https://github.com/TAMUparametric/energiapy/actions/workflows/energia.yml/badge.svg)](https://github.com/TAMUparametric/energiapy/actions/workflows/energia.yml)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/994d46ab40ac4f0ead5ed9d1ea1b0fab)](https://app.codacy.com/gh/TAMUparametric/energiapy/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[![DOI](https://zenodo.org/badge/600269309.svg)](https://doi.org/10.5281/zenodo.17478608)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/energiapy.svg)](https://pypi.org/project/energiapy/)
[![codecov](https://codecov.io/gh/TAMUparametric/energiapy/branch/main/graph/badge.svg)](https://codecov.io/gh/TAMUparamteric/energiapy)
[![DOI](https://zenodo.org/badge/600269309.svg)](https://doi.org/10.5281/zenodo.17478608)

Energia is a tool for the data-driven multiscale modeling and optimization of energy systems under uncertainty. Users are directed to {cite}`kakodkar2022review` for an overview of the state-of-the-art in the field.
The component-driven methodology is inspired by the resource task network (RTN) methodology {cite}`barbosa_povoa_pantelides_1997` and constituent functionalities developed through the research conducted in
the [Multiparameteric Optimization and Control (Pistikopoulos) Group](https://parametric.tamu.edu/). The Tutorials and Examples sections are a good starting point.


Energia is a decision-making tool. Models can be constructed by providing data regarding bounds on commodity streams and operations. Spatial specificity and time-series input of varying sizes renders multiscale models. Their analysis yields insight into the interactions between different decisions. The term 'streams' is applied broadly. pre-categorized streams are broadly classified into commodities (resource, currency, emission, land, material, land, etc.) and impact (economic, environmental, social).

<!-- ![alt text](https://github.com/TAMUparametric/energiapy/blob/main/docs/hierarchy.png?raw=true) -->
Operation types current include process, storage, and transportation. A process is a catch-all for power generation, dense energy carrier (DEC) or chemical production. Storage involves charging and discharging which can both be configured individually. Transportation networks can involve multiple linkages between locations. Operational parameters include material and land use, impact, conversion efficiency. Construction can also be modeled as capacity sizing problems.

Broadly, Energia can be applied towards the multiscale modeling and optimization of energy systems under uncertainty. Risk analysis can be performed using various approaches such as scenario analysis, stochastic and robust programming, and multiparametric programming. The general class of problems is currently multiparametric mixed integer non-linear programming (mpMILP). Non-linear programs (mpMINLPs) can be modeled using piece-wise linearization. The multiscale nature of models affords simultaneous design and scheduling. Further Comprehensive resource balances allow cost optimization, carbon accounting, social life cycle analysis, and other forms of impact analysis.

# Applications
Notably, impact is ascertained as a function of decisions. The trade-offs between minimizing or maximizing different impact streams can be determined as pareto fronts. Outputs such as stream contributions, production levels, capacities as a function of time and space can also be exported and illustrated. Additionally, scenario reduction via clustering, and integer cuts can be utilized to manage computational tractability.

Models can also simultaneously perform the following analyses under an integrated paradigm:

- Multiperiod Multiscale Design and Scheduling {cite}`kakodkar2023hydrogen,kakodkar2024multiperiod`
- Modeling the Material-Energy-Mobility Nexus {cite}`montano2025modeling,flores2025integrating`
- Carbon Accounting and Life Cycle Assessment Under Uncertainty {cite}`sousa2025integrating,de2025integrated`
- Robust Scheduling Using Multiparametric Programming {cite}`kakodkar2024robust`
- Resilience Analysis of Distributed Energy and Manufacturing Systems {cite}`vedant2024information`
<!-- ![alt text](https://github.com/TAMUparametric/energiapy/blob/main/docs/hierarchy.png?raw=true) -->


# Select Features
# Features

Available constraints are able to model:

Expand All @@ -52,24 +46,33 @@ Examples of objectives towards which the model can be optimized include:
2. minimizing impact
3. maximizing resource discharge

Large scenarios can be aggregated using the following available techniques:
Clustering submodules include:

1. agglomerative hierarchial clustering (AHC)
2. dynamic time warping (DTW)
3. k-means

Both the input data and solution output can be illustrated, examples include:

1. input data: capacity, demand, cost factors
2. solution output: inventory, production, consumption, discharge/sales schedule; contribution towards costs (capital,
variable and fixed operational), meeting demand.

Other (and optional) features include:
Callable external packages are available for:

1. math utilities for calculating euclidean distances, generation connectivity matrices, etc.
2. generating dataframes with missing data fixed (weekends, public holidays) for time-series data such as resource price
3. function to fetch weather data at an appropriate resolution from [NREL NSRDB](https://nsrdb.nrel.gov/) for any county
1. Integration with high-fidelity process modeling modules such as
2. Filling missing data (weekends, public holidays) for time-series data such as resource price
3. Fetch weather data at an appropriate resolution from [NREL NSRDB](https://nsrdb.nrel.gov/) for any county
in the US
4. latex constraints writer for model documentation

Direct any communication to Rahul Kakodkar (cacodcar@gmail.com)
Libraries have pre-loaded sets of:

1. Components such as SI and miscellaneous units, currencies, time units, environmental indicators.
2. Example and test problems across various applicative domains
3. Recipes for decision-making, instructions for calculations, and attribute aliases.


Note that some of these functionalities are available in [Energia<2.0.0](https://github.com/TAMUparametric/energiapy/tree/v1.0.7) and are being ported to the 2.0 interface.



21 changes: 21 additions & 0 deletions background.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
Background and Theory
=====================

For an overview on the state-of-the-art in energy systems modeling and optimization
including key challenges and opportunities see :cite:`kakodkar2022review`.
To understand the mathematical programming implementation, the resource task network (RTN)
methodology :cite:`barbosa_povoa_pantelides_1997` is a great starting point.
Energia's :ref:`publication_history` is indicative of key capabilities and applicative
domains. For more research on advancing computational methods in modeling and optimization
see `Multiparameteric Optimization and Control (Pistikopoulos) Group <https://parametric.tamu.edu>`_.


Direct any queries regarding the implementation or theoretical background to Rahul Kakodkar (cacodcar@gmail.com).


.. seealso::

`Gana <https://gana.readthedocs.io/en/latest/>`_, an Algebraic Modeling Language (AML)
for Multiscale Modeling and Optimization which serves as the backend.


Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
energia.components.operations.process
energia.components.operations.process
=====================================

.. automodule:: energia.components.operations.process
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
energia.components.operations.transport
energia.components.operations.transport
=======================================

.. automodule:: energia.components.operations.transport
Expand Down
2 changes: 1 addition & 1 deletion docs/_autosummary/energia.components.temporal.modes.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
energia.components.temporal.modes
energia.components.temporal.modes
=================================

.. automodule:: energia.components.temporal.modes
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
energia.library.processes
=========================
energia.library.external
========================

.. automodule:: energia.library.processes
.. automodule:: energia.library.external


.. rubric:: Functions

.. autosummary::

pv
pvlib
retrieve_sam
wf
windpowerlib

.. rubric:: Classes

Expand Down
2 changes: 1 addition & 1 deletion docs/_autosummary/energia.library.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ energia.library
aliases
components
examples
external
instructions
processes
recipes
2 changes: 1 addition & 1 deletion docs/_autosummary/energia.modeling.constraints.bind.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
energia.modeling.constraints.bind
energia.modeling.constraints.bind
=================================

.. automodule:: energia.modeling.constraints.bind
Expand Down
2 changes: 1 addition & 1 deletion docs/_autosummary/energia.modeling.variables.aspect.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
energia.modeling.variables.aspect
energia.modeling.variables.aspect
=================================

.. automodule:: energia.modeling.variables.aspect
Expand Down
2 changes: 1 addition & 1 deletion docs/_autosummary/energia.modeling.variables.control.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
energia.modeling.variables.control
energia.modeling.variables.control
==================================

.. automodule:: energia.modeling.variables.control
Expand Down
2 changes: 1 addition & 1 deletion docs/_autosummary/energia.represent.ations.scenario.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
energia.represent.ations.scenario
energia.represent.ations.scenario
=================================

.. automodule:: energia.represent.ations.scenario
Expand Down
7 changes: 3 additions & 4 deletions docs/_autosummary/energia.represent.model.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
energia.represent.model
energia.represent.model
=======================

.. automodule:: energia.represent.model
Expand Down Expand Up @@ -34,19 +34,18 @@
Economic
Emission
Environ
Game
Graph
Idx
Impact
Instruction
Interact
Lag
Land
Linkage
Location
MParam
Material
Model
Modes
Param
Periods
Player
Problem
Expand Down
7 changes: 7 additions & 0 deletions docs/_static/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,10 @@ code, pre {
:root {
--sb-width: 320px; /* or whatever width you like */
}

/* Justify all normal text in Book Theme */
.bd-content p,
.bd-content li {
text-align: justify;
text-justify: inter-word;
}
2 changes: 1 addition & 1 deletion docs/changelog.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
New Features and Updates
New Features & Updates
=========================

This lists recent changes to the project. If there are features you would like to see added,
Expand Down
Loading