Python-GEKKO從入門到精通(一)介紹

1.GEKKO是什么?
GEKKO是一個面向?qū)ο蟮?Python優(yōu)化庫。作為一種微分和代數(shù)建模語言,它的編寫格式簡單直觀,通過后臺的APMonitor與用于線性、二次、非線性和混合整數(shù)規(guī)劃(LP、QP、NLP、MILP、MINLP)的大型求解器相結合,提供模型構建、分析工具以及模擬和優(yōu)化求解功能。
2.GEKKO能干什么?
內(nèi)置有九種運作模型(本質(zhì)都是非線性模型):
? ? ? ? 參數(shù)估計:模型參數(shù)更新(MPU)、滾動時域估計 (EST)、動態(tài)序列估計 (SQE)
? ? ? ? 模擬:穩(wěn)態(tài)模擬 (SS)、動態(tài)模擬?(SIM)、動態(tài)序列模擬(SQS)
? ? ? ? 優(yōu)化:實時優(yōu)化 (RTO)、非線性控制/動態(tài)優(yōu)化(CTL)、動態(tài)序列優(yōu)化 (SQO)
其中各行中的第一列均屬于導數(shù)為0的穩(wěn)態(tài)模式,第二列是動態(tài)模式,第三列在求解時,在動態(tài)性之上又新增了序列的概念。
通過使用GEKKO,能調(diào)用Linear programming (LP)、Quadratic programming (QP)、Quadratically constrained quadratic program (QPQC)、Nonlinear programming (NLP)、Mixed integer linear programming (MILP)、Mixed integer nonlinear programming (MINLP)等諸多求解算法對上述類型的問題進行求解,并可通過調(diào)節(jié)?DIAGLEVEL?的取值(0-10)來決定輸出求解結果內(nèi)容的多少。
3.為什么要用GEKKO?
免費使用,功能強大
在農(nóng)業(yè)、電力、能源、交通、化工、機械、自動化等領域有著廣泛的應用
4.怎么使用GEKKO?
安裝:
pip install gekko
測試代碼:
from gekko import GEKKO
m = GEKKO()
eq = m.Param(value=40)
x1,x2,x3,x4 = [m.Var(lb=1, ub=5) for i in range(4)]
x1.value = 1
x2.value = 5
x3.value = 5
x4.value = 1
m.Equation(x1*x2*x3*x4>=25)
m.Equation(x1**2+x2**2+x3**2+x4**2==eq)
m.Minimize(x1*x4*(x1+x2+x3)+x3)
m.options.IMODE = 3
m.solve()
print('')
print('Results')
print('x1: ' + str(x1.value))
print('x2: ' + str(x2.value))
print('x3: ' + str(x3.value))
print('x4: ' + str(x4.value))
5.GEKKO代碼入門教學?
敬請期待下一期~