Introduction
Welcome to the documentation of ExaModelsPower.jl
Please help us improve ExaModelsPower and this documentation! ExaModelsPower is in the early stage of development, and you may encounter unintended behaviors or missing documentations. If you find anything is not working as intended or documentation is missing, please open issues or pull requests or start discussions.
What is ExaModelsPower.jl?
ExaModelsPower.jl is a Julia package for creating optimal power flow (OPF) models. Unlike other OPF modeling frameworks, ExaModelsPower.jl leverages the capabilities of ExaModels.jl in order to solve more complex, large-scale versions of the OPF. ExaModels.jl employs what we call SIMD abstraction for nonlinear programs (NLPs), which allows for the preservation of the parallelizable structure within the model equations, facilitating efficient automatic differentiation either on the single-thread CPUs, multi-threaded CPUs, as well as GPU accelerators. More details about SIMD abstraction can be found here. ExaModels.jl compiles (via Julia's compiler) derivative evaluation codes tailored to each computation pattern. Through reverse-mode automatic differentiation using these tailored codes, ExaModels.jl achieves significantly faster derivative evaluation speeds, even when using CPU.
Recent benchmark results demonstrate that derivative evaluation using ExaModels.jl on GPU can be up to two orders of magnitude faster compared to JuMP or AMPL [1]. This enables us to implement more complex versions of the OPF without needing any relaxations. Currently, ExaModelsPower.jl supports developing models for static OPF, multi-period OPF with or without storage, and security constrained OPF. ExaModelsPower.jl also supports a number of flexible options for the user to specify model coordinate system, setup of time-varying demand profiles, and handling of complementarity constraints for storage models.
Supported Solvers
ExaModelsPower can be used with any solver that can handle NLPModel
data type, but several callbacks are not currently implemented, and cause some errors. Currently, it is tested with the following solvers:
Documentation Structure
This documentation is structured in the following way.
- This page provides some introductory information about ExaModelsPower.jl
- The step-by-step tutorials of using ExaModelsPower.jl can be found in OPF tutorial and MPOPF tutorial.
- The API Manual provides information on functions provided within ExaModelsPower.jl, as well as information on the constraints and variables implemented in the static and multi-period OPFs
Supporting ExaModelsPower.jl
- Please report issues and feature requests via the GitHub issue tracker.
- Questions are welcome at GitHub discussion forum.