Decision-making with Energia#

Documentation Status PyPI PyPI - Python Version Downloads CI Codacy Badge codecov DOI

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).

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.

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.

Modeled Aspects#

This is an indicative list of the types of decisions and phenomena that Energia models:

  1. network design (with discrete choice)

  2. resource flows

  3. inventory balance

  4. emission and costing calculations

  5. environmental, social, and economic impact

  6. material and land use for infrastructure development

  7. nonlinear behavior modeling using piece-wise linear curves

  8. transportation

  9. failure and loss

Objective Criteria#

Generally, any commodity or impact stream or decision can be optimized. Some examples are listed:

  1. minimizing cost

  2. minimizing impact

  3. maximizing resource discharge

Managing Complexity#

Clustering submodules include:

  1. agglomerative hierarchial clustering (AHC)

  2. dynamic time warping (DTW)

  3. k-means

Other approaches to managing computational complexity include:

  1. Integer cuts

  2. Piece-wise linearization (PWL) for non-linear models

Printing#

Printing functions all use latex strings, and the following can be displayed:

  1. The mathematical program in set notation, and also descriptively at each index

  2. The solution, which can also be compared across multiple objectives

Visualization#

The following can be visualized using line and bar plots:

  1. input data scenario, e.g. capacity limitations, demand, cost factors

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

Library#

energia.library has a variety of 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.

External Packages#

Callable external packages are available for:

  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 for any county in the US

Interface#

Energia is optimized for use in jupyter notebooks. Note that some of these functionalities are available in Energia<2.0.0 and are being ported to the 2.0 interface.

Background and Theory#

For an overview on the state-of-the-art in energy systems modeling and optimization including key challenges and opportunities see 1R Kakodkar, G He, CD Demirhan, M Arbabzadeh, SG Baratsas, S Avraamidou, D Mallapragada, I Miller, RC Allen, E Gençer, and others. A review of analytical and optimization methodologies for transitions in multi-scale energy systems. Renewable and Sustainable Energy Reviews, 160:112277, 2022.. To understand the mathematical programming implementation, the resource task network (RTN) methodology 2A.P.F.D. Barbosa-Póvoa and C.C. Pantelides. Design of multipurpose plants using the resource-task network unified framework. Computers & Chemical Engineering, 21:S703–S708, 1997. doi:10.1016/s0098-1354(97)87585-0. is a great starting point. Energia’s 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.

Direct any queries regarding the implementation or theoretical background to Rahul Kakodkar.

See also

Gana, an Algebraic Modeling Language (AML) for Multiscale Modeling and Optimization which serves as the backend.

Dive into Energia#

The API#

Refer to the API documentation for a detailed description of the classes and methods available in Energia.

energia

Energia

Easy Navigation#

The search feature and indexes can be engaged to facilitate navigation: