| 開発者 | ローガン・ビールとジョン・D・ヘデングレン |
|---|---|
| 安定リリース | 1.2.1 / 2024年7月3日 |
| リポジトリ |
|
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | 技術計算 |
| ライセンス | マサチューセッツ工科大学 |
| Webサイト | gekko.readthedocs.io/en/latest/ |
GEKKO Pythonパッケージ[1]は、大規模な混合整数および微分代数方程式を非線形計画ソルバー(IPOPT、APOPT、BPOPT、SNOPT、MINOS)で解きます。動作モードには、機械学習、データ調整、リアルタイム最適化、動的シミュレーション、および非線形モデル予測制御が含まれます。さらに、このパッケージは線形計画法(LP)、二次計画法(QP)、二次制約二次計画法(QCQP)、非線形計画法(NLP)、混合整数計画法(MIP)、および混合整数線形計画法(MILP)を解きます。GEKKOはPythonで利用でき、Python Software FoundationのPyPIからpipを使用してインストールされます。
pip で gekkoをインストールします
GEKKO はすべてのプラットフォームで、Python 2.7 および 3+ で動作します。デフォルトでは、問題はパブリック サーバーに送信され、そこでソリューションが計算されて Python に返されます。インターネットに接続せずに解決するには、Windows、MacOS、Linux、および ARM (Raspberry Pi) プロセッサ オプションがあります。GEKKO はAPMonitor Optimization Suiteの拡張機能ですが、モデリングとソリューションの視覚化が Python 内に直接統合されています。数学モデルは、非線形計画法ソルバーのパフォーマンスをテストするために使用されるHock & Schittkowski ベンチマーク問題 #71 [2]などの変数と方程式で表現されます。この特定の最適化問題には目的関数があり、不等式制約と等式制約が適用されます。4 つの変数は、下限 1 から上限 5 までの範囲になければなりません。初期推定値は です。この最適化問題は、以下に示すように GEKKO を使用して解決されます。
gekko からインポート GEKKO
m = GEKKO () # gekko を初期化します
# 変数を初期化します
x1 = m . Var ( value = 1 , lb = 1 , ub = 5 )
x2 = m . Var ( value = 5 , lb = 1 , ub = 5 ) x3 = m . Var ( value = 5 , lb = 1 , ub = 5 ) x4 = m . Var ( value = 1 , lb = 1 , ub = 5 ) # 方程式m . Equation ( x1 * x2 * x3 * x4 >= 25 ) m . Equation ( x1 ** 2 + x2 ** 2 + x3 ** 2 + x4 ** 2 == 40 ) m . Minimize ( x1 * x4 * ( x1 + x2 + x3 ) + x3 ) m .解決する( disp = False ) # 解くprint ( "x1: " + str ( x1 . value )) print ( "x2: " + str ( x2 . value )) print ( "x3: " + str ( x3 . value )) print ( "x4: " + str ( x4 . value )) print ( "Objective: " + str ( m . options . objfcnval ))
GEKKOの応用
アプリケーションには、コジェネレーション(電力と熱)、[3] 掘削自動化、[4]重度のスラグ制御、[5]太陽熱エネルギー生産、[6] 固体酸化物形燃料電池、[7] [8]フロー保証、[9] 石油増進回収、[10] 精油抽出、[11]無人航空機(UAV)[12]などがあります。APMonitorとGEKKOは、解決できるアプリケーションの種類の例として他にも多数言及されています。GEKKOは、米国国立科学財団(NSF)研究助成金#1547110 [13] [14] [15] [16]から開発され、スケジューリングと制御の組み合わせに関する特別号コレクションで詳しく説明されています。[17] GEKKOに関するその他の注目すべき言及としては、最適化ソフトウェアの決定木への掲載、[18] APOPTおよびBPOPTソルバーのサポートの追加、 [19]国際的な参加者によるオンライン動的最適化コースのプロジェクトレポートなどがあります。[20] GEKKOは、ユーザーが最適化や最適制御の問題を解決しているオンラインフォーラムのトピックです。[21] [22] GEKKOは、20の大学のプロセス制御教育のための温度制御ラボ(TCLab)[23]での高度な制御に使用されています。[24] [25] [26] [27]
機械学習

機械学習の応用例の 1 つは、トレーニング データから回帰を実行して相関関係を構築することです。この例では、ディープラーニングによって、関数 で生成されたトレーニング データからモデルが生成されます。この例では、3 層の人工ニューラル ネットワークが使用されています。最初の層は線形、2 番目の層は双曲正接活性化関数、3 番目の層は線形です。プログラムは、測定されたデータ ポイントとそれらのポイントでのニューラル ネットワーク予測との間の二乗誤差の合計を最小化するパラメーターの重みを生成します。GEKKO は、バックプロパゲーションなどの標準的な方法の代わりに、勾配ベースのオプティマイザーを使用して最適な重み値を決定します。勾配は、他の一般的なパッケージと同様に、自動微分によって決定されます。この問題は制約付き最適化問題として解決され、ソルバーがKarush–Kuhn–Tucker 条件 を満たすと収束します。勾配ベースのオプティマイザーを使用すると、データまたはシステムのドメイン知識によって課される可能性のある追加の制約が可能になります。
gekko からbrain をimport numpyとしてnpにインポートします
b = brain.Brain ( ) b.input_layer ( 1 ) b.layer ( linear = 3 ) b.layer ( tanh = 3 ) b.layer ( linear = 3 ) b.output_layer ( 1 ) x = np.linspace ( -np.pi , 3 * np.pi , 20 ) y = 1 - np.cos ( x ) b.learn ( x , y )
ニューラル ネットワーク モデルは、トレーニング データの範囲全体にわたってテストされ、トレーニング データ以外では予測が不十分であることを示すために外挿も行われます。トレーニング データ セット外の予測は、基本原理 (使用可能な場合) を使用して、より広範囲の条件で有効な構造を適用するハイブリッド マシン ラーニングによって改善されます。上記の例では、双曲正接活性化関数 (隠しレイヤー 2) を正弦関数または余弦関数に置き換えて外挿を改善できます。スクリプトの最後の部分には、ニューラル ネットワーク モデル、元の関数、およびフィッティングに使用されたサンプリングされたデータ ポイントが表示されます。
matplotlib.pyplot を pltとして インポートします。
xp = np.linspace ( - 2 * np.pi , 4 * np.pi , 100 ) yp = b.think ( xp )
plt.figure ( ) plt.plot ( x , y , " bo " ) plt.plot ( xp , yp [ 0 ] , " r- " ) plt.show ( )
最適な制御

最適制御とは、数学的最適化を使用して、微分方程式、等式方程式、または不等式方程式によって制約され、目的関数/報酬関数を最小化するポリシーを取得することです。基本的な最適制御は、目的関数を積分し、有限要素上の直交コロケーションを使用して微分方程式を代数形式に書き写すことによって、GEKKO で解決されます。
gekko からGEKKOをインポートし、 numpy をnpとしてインポートし、 matplotlib.pyplot をpltとしてインポートします。
m = GEKKO () # gekko を初期化
nt = 101
m . time = np . linspace ( 0 , 2 , nt )
# 変数
x1 = m . Var ( value = 1 )
x2 = m . Var ( value = 0 )
u = m . Var ( value = 0 , lb =- 1 , ub = 1 )
p = np . zeros ( nt ) # 最終時点をマーク
p [ - 1 ] = 1.0
final = m . Param ( value = p )
# 方程式
m . Equation ( x1 . dt () == u )
m . Equation ( x2 . dt () == 0.5 * x1 ** 2 )
m . Minimize ( x2 * final )
m . options . IMODE = 6 # 最適制御モード
m .解決する() # 解く
plt . figure ( 1 ) # 結果をプロットする
plt . plot ( m . time , x1 . value , "k-" , label = r "$x_1$" )
plt . plot ( m . time , x2 . value , "b-" , label = r "$x_2$" )
plt . plot ( m . time , u . value , "r--", label = r "$u$" )
plt . legend ( loc = "best" )
plt . xlabel ( "時間" )
plt . ylabel ( "値" )
plt . show ()
参照
参考文献
- ^ Beal, L. (2018). 「GEKKO 最適化スイート」.プロセス. 6 (8): 106. doi : 10.3390/pr6080106 .
- ^ W. Hock および K. Schittkowski、「非線形計画コードのテスト例」、経済学および数学システムの講義ノート、第 187 巻、Springer 1981 年。
- ^ Mojica, J. (2017). 「CHP容量投資のための最適な長期施設設計と短期運用戦略の組み合わせ」.エネルギー. 118 : 97–115. doi :10.1016/j.energy.2016.12.009.
- ^ Eaton, A. (2017). 「管理された圧力掘削におけるマルチフィデリティモデルを使用したリアルタイムモデル識別」。Computers & Chemical Engineering。97 : 76–84。doi : 10.1016/j.compchemeng.2016.11.008 。
- ^ Eaton, A. (2015). 「深刻なスラグ制御のための海底生産ライザーへの後付け光ファイバー圧力センサー」(PDF)。OMAE 2015 Proceedings、セントジョンズ、カナダ。
- ^ Powell, K. (2014). 「太陽熱と化石燃料のハイブリッドシステムの動的最適化」.太陽エネルギー. 108 : 210–218. Bibcode :2014SoEn..108..210P. doi :10.1016/j.solener.2014.07.004.
- ^ Spivey, B. (2010). 「固体酸化物燃料電池の信頼性制約の動的モデリングと高度な制御への影響」(PDF)。AIChE年次会議議事録、ユタ州ソルトレイクシティ。
- ^ Spivey, B. (2012). 「管状固体酸化物燃料電池の動的モデリング、シミュレーション、および MIMO 予測制御」。Journal of Process Control . 22 (8): 1502–1520. doi :10.1016/j.jprocont.2012.01.015.
- ^ Hedengren, J. (2018). 圧力と温度の高速海中光ファイバー監視を備えた新しいフロー保証システム。ASME 37th International Conference on Ocean, Offshore and Arctic Engineering、OMAE2018/78079、マドリード、スペイン。pp. V005T04A034。doi : 10.1115 /OMAE2018-78079。ISBN 978-0-7918-5124-1。
- ^ Udy, J. (2017). 「貯留層注入の最適化と予測のための低次元モデリング」(PDF) . FOCAPO / CPC 2017、アリゾナ州ツーソン。
- ^ Valderrama, F. (2018). 「芳香植物からのエッセンシャルオイルの蒸気蒸留に対する最適制御アプローチ」.コンピューター&化学工学. 117 : 25–31. doi :10.1016/j.compchemeng.2018.05.009.
- ^ Sun, L. (2013). 「空中曳航ケーブルシステムにおけるモデル予測制御を用いた最適軌道生成」(PDF) . Journal of Guidance, Control, and Dynamics . 37 (2): 525–539. Bibcode :2014JGCD...37..525S. doi :10.2514/1.60820.
- ^ Beal, L. (2018). 「動的なパラメータと制約を伴う離散時間での統合スケジューリングと制御」. Computers & Chemical Engineering . 115 :361–376. doi : 10.1016/j.compchemeng.2018.04.010 .
- ^ Beal, L. (2017). 「支配的な時定数補償を備えたモデル予測制御とスケジューリングの結合」. Computers & Chemical Engineering . 104 : 271–282. doi :10.1016/j.compchemeng.2017.04.024.
- ^ Beal, L. (2017). 「連続化学プロセスのスケジュールと制御の段階的統合による経済的利益」(PDF) .プロセス. 5 (4): 84. doi : 10.3390/pr5040084 .
- ^ Petersen, D. (2017). 「連続化学プロセスのための非周期的スケジューリングと高度な制御の組み合わせ」(PDF) .プロセス. 5 (4): 83. doi : 10.3390/pr5040083 . S2CID 3354604.
- ^ Hedengren, J. (2018). 「特集:スケジューリングと制御の組み合わせ」.プロセス. 6 (3): 24. doi : 10.3390/pr6030024 .
- ^ Mittleman, Hans (2018 年 5 月 1 日)。「最適化ソフトウェアの決定木」。Plato 。アリゾナ州立大学。2018 年5 月 1 日閲覧。
混合整数および微分代数方程式用のオブジェクト指向 Python ライブラリ
- ^ 「ソルバーソリューション」。Advanced Process Solutions, LLC 。 2018年5月1日閲覧。APOPT
またはBPOPTソルバーを備えたGEKKO Python
- ^ エバートン、コリング。「動的最適化プロジェクト」。ペトロブラス。ペトロブラス、スタトイル、フェイスブック。 2018年5月1日閲覧。
プレゼンテーション例:ペトロブラスのエバートン・コリングが、蒸留のモデリングと非線形制御にGEKKOを使用した経験を共有します。
- ^ 「APMonitor Google グループ: GEKKO」。Google。2018年5 月 1 日閲覧。
- ^ 「計算科学: Python用の高品質な非線形計画ソルバーは存在するか?」SciComp . 2018年5月1日閲覧。
- ^ Kantor, Jeff (2018 年 5 月 2 日). 「TCLab ドキュメント」(PDF) . ReadTheDocs . ノートルダム大学. 2018 年5 月 2 日閲覧.
pip install tclab
- ^ Kantor, Jeff (2018 年 5 月 2 日)。「化学プロセス制御」。GitHub。ノートルダム大学。2018年5 月 2 日閲覧。
温度制御ラボ (TCLab) の使用
- ^ Hedengren, John (2018 年 5 月 2 日)。「Advanced Temperature Control Lab」。動的最適化コース。ブリガムヤング大学。2018年5 月 2 日閲覧。
高度な温度制御の実践的なアプリケーション
- ^ Sandrock, Carl (2018 年 5 月 2 日)。「ダイナミクスと制御のための Jupyter ノートブック」。GitHub。南アフリカのプレトリア大学。2018 年5 月 2 日閲覧。
プレトリア大学化学工学部の CPN321 (プロセスダイナミクス) および CPB421 (プロセス制御)
- ^ 「CACHE ニュース (2018 年冬): 化学工学カリキュラムへの動的シミュレーションの組み込み」(PDF)。CACHE : 化学工学のためのコンピュータ支援。テキサス大学オースティン校。2018 年 5 月 2 日。2018 年 5 月 3 日時点のオリジナル(PDF)からアーカイブ。2018年5 月 2 日に取得。SCSU
で Hedengren (BYU)、Grover (Georgia Tech)、Badgwell (ExxonMobil) が主催した ASEE 2017 サマー スクールの短期コース
外部リンク
- 機械学習と最適化によるGEKKOの概要
- GEKKO ドキュメント
- GEKKO ソースコード
- Python 用の PyPI 上の GEKKO pip install
- GEKKOは、国立科学財団(NSF)研究助成金1547110のオープンソース製品です。
- 文献におけるAPMonitorとGEKKOへの言及
- GEKKO の 18 の例: 機械学習、最適制御、データ回帰
- Gekko ダウンロード統計
