概要
GEKKOは、方程式ベースおよびデータ駆動型のモデリングに用いるAPMonitor最適化スイートへのPythonインターフェースを提供します。ドキュメントで扱われている主な対象は、時系列および微分代数方程式系であり、シミュレーション、推定、プロセス最適化への応用が含まれます。GEKKOは事前学習済み予測モデルではなく、モデリングツールキットです。ユーザーは自身の問題に合わせて数学的関係と目的を定義します。
モデルは、定数、パラメータ、変数、中間式、方程式、目的関数から構成されます。シンボリックモデルは1つのデータ点または時点を表し、選択した解法モードによって、複数の観測値または時間範囲に拡張されます。APMonitorバックエンドはモデルをコンパイルし、その疎構造を解析して、最適化ソルバーに微分情報を提供します。微分代数系では、直交コロケーションにより動的問題を代数方程式に変換します。解の結果はresults.csvに書き込まれ、GEKKOのPython変数に読み込まれます。
ドキュメントに記載されたワークフローには、定常状態シミュレーション、パラメータ更新、リアルタイム最適化、移動ホライズン推定、非線形制御が含まれます。動的シミュレーション、推定、最適化では、同時法または逐次法を使用できます。GEKKOは線形、二次、非線形、混合整数計画法もサポートし、記載された問題クラスにおいて、離散的な意思決定と連続ダイナミクスを組み合わせることができます。
実行には、デフォルトのリモートサーバーを使用する方法と、remote=FalseオプションでローカルCPUを使用する方法があります。READMEには複数のプラットフォーム向け実行ファイルが同梱されていると記載されていますが、これらの抜粋からは、互換性がテスト済みであることも、性能を比較した結果も確認できません。モデルが収束しない場合があります。APMonitorは、初期化や方程式の不整合を調査するための不可解レポートと診断設定を提供します。
主な機能
- 定数、パラメータ、変数、中間式、方程式、および最大化または最小化の目的関数を用いたシンボリックモデルの構築。
- 線形、二次、非線形、混合整数最適化に加え、微分代数方程式および相補性制約問題をサポート。
- シミュレーション、パラメータ推定、リアルタイム最適化、非線形予測制御に対応する定常状態モードと動的モード。
- 動的シミュレーション、推定、最適化のための同時法および逐次法。
- バックエンドでのモデルコンパイル、自動微分による疎な微分情報の生成、および微分代数系向けの直交コロケーション。
- リモートまたはローカルで実行でき、結果はPython変数に返され、求解に失敗した場合は不可解レポートを利用可能。
用途
- 評価案:微分方程式と代数方程式を含むプロセスモデルを定式化し、シミュレーション軌跡を代表的なプロセス測定値と比較する。
- 評価案:測定時系列とユーザー定義モデルを使って、不確かなプロセスパラメータを適合させるか、移動ホライズン推定を評価する。
- 評価案:導入を検討する前に、プロセス制約と明示的な運転目的を設定して、非線形予測制御のプロトタイプを作成する。
- 評価案:混合整数最適化問題で、離散的な運転選択肢と連続的なプロセス変数を表現する。
使い方
- 公式ドキュメントとモデリング例を確認します。想定する問題に合ったシミュレーション、推定、最適化のワークフローを選びます。
- 提供されているpipインストール手順についてはリポジトリREADMEを参照し、パッケージ情報についてはPyPI掲載ページを確認します。パッケージ分類子を、互換性がテスト済みである証拠として扱わないでください。
- 定数、パラメータ、変数、方程式、目的関数を定義します。動的な問題では、ドキュメントに従って該当する時間範囲と観測値を準備し、測定入力と推定対象の量を区別します。
- 適切な解法モードと実行場所を選択します。ドキュメント上のデフォルトはリモート求解で、remote=Falseはローカル実行を選択します。入力データがリモート処理に適しているかを検討してください。
- 代表的な例を評価し、Pythonに返された値を確認して、想定される挙動と比較します。求解に失敗した場合はinfeasibilities.txtを調べ、モデルを拡張する前に、ドキュメントに記載された診断オプションと初期化オプションを確認します。