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.
This is an indicative list of the types of decisions and phenomena that Energia models:
- network design (with discrete choice)
- resource flows
- inventory balance
- emission and costing calculations
- environmental, social, and economic impact
- material and land use for infrastructure development
- nonlinear behavior modeling using piece-wise linear curves
- transportation
- failure and loss
Generally, any commodity or impact stream or decision can be optimized. Some examples are listed:
- minimizing cost
- minimizing impact
- maximizing resource discharge
Clustering submodules include:
- agglomerative hierarchial clustering (AHC)
- dynamic time warping (DTW)
- k-means
Other approaches to managing computational complexity include:
- Integer cuts
- Piece-wise linearization (PWL) for non-linear models
Printing functions all use latex strings, and the following can be displayed:
- The mathematical program in set notation, and also descriptively at each index
- The solution, which can also be compared across multiple objectives
The following can be visualized using line and bar plots:
- input data scenario, e.g. capacity limitations, demand, cost factors
- solution output: inventory, production, consumption, discharge/sales schedule; contribution towards costs (capital, variable and fixed operational), meeting demand.
energia.library has a variety of pre-loaded sets of:
- Components such as SI and miscellaneous units, currencies, time units, environmental indicators.
- Example and test problems across various applicative domains
- Recipes for decision-making, instructions for calculations, and attribute aliases.
Callable external packages are available for:
- Integration with high-fidelity process modeling modules such as
- Filling missing data (weekends, public holidays) for time-series data such as resource price
- Fetch weather data at an appropriate resolution from NREL NSRDB for any county in the US
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.
