BYU-PRISM/GEKKO
GEKKO Python for Machine Learning and Dynamic Optimization
What it solves
GEKKO is designed to solve complex mathematical optimization and machine learning problems, specifically those involving time series and differential algebraic equations (DAE) systems. It provides a high-level abstraction for defining models based on physics-based or data-driven approaches, allowing users to solve for optimal values, estimate parameters, and simulate dynamic systems.
How it works
GEKKO acts as a Python interface to the APMonitor optimization suite. It uses a system of Constants, Parameters, and Variables related by Equations or Intermediates to define a model. The back-end (APMonitor) compiles this model into byte-code and performs model reduction based on sparsity structure. For differential equations, it uses orthogonal collocation on finite elements to convert the problem into an algebraic system. It then passes the necessary gradients, Hessians, and constraints to large-scale solvers (such as IPOPT, APOPT, and SNOPT) to find a solution.
Who it’s for
This tool is for engineers, scientists, and data analysts who need to perform nonlinear predictive control, real-time optimization, and dynamic simulation of physical or mathematical systems.
Highlights
- Multi-mode operation: Supports 9 different modes, including steady-state simulation, moving horizon estimation, and nonlinear control.
- Broad solver support: Coupled with solvers for linear, quadratic, nonlinear, and mixed-integer programming (LP, QP, NLP, MILP, MINLP).
- Flexible deployment: Runs either on a local CPU or a remote high-performance server.
- Comprehensive debugging: Includes convergence reports and diagnostic levels to identify infeasible equations or initialize models.
Related
- Project
- Project
- Project
- Project
- Project