GEKKOを使用して、世界を確定的な方法でモデリングする

'GEKKOを使って世界を確定的にモデリングする'

Iván Díaz氏による写真(Unsplash)

微分代数方程式の解決と動的最適化のソフトなガイド

私たちの世界はますますデジタル化しており、データ収集が急速に拡大しています。このデータにより、ビジネスやテクノロジーのさまざまな分野で問題を解決し、最適化された解を見つけるためのより正確なモデルを作成することができました。これらのモデルは実世界のデータに基づいて構築されているため、データセット内のランダム性、ノイズ、異常などは不可避なものです。モデルを適合させる前に、EDA(探索的データ解析)、データの前処理、外れ値の検出などの作業には多くの時間が費やされることがしばしばあります。ただし、そのようなデータを使用して構築されたモデルは常に実際の解の近似値に過ぎません。これは、データが再び確率的(アレアトリックな不確実性)であり、多くの未知の影響(ナイトの不確実性)にさらされるためです。これらに加えて、十分なデータがないか、バイアスのある不均衡なデータセットがある場合、モデルの精度がさらに低下する可能性があります(エピステミックな不確実性)。これらの困難にもかかわらず、このような方法で構築されたモデルは貴重であり、固有の確率性は時には実世界の複雑さをより良く理解するためのツールとなることがあります。しかし…別のアプローチも存在します:決定論的モデリングです。

決定論的モデリングは、ランダム性を持つモデリングの対極に位置しています。これは、現実世界に導入される複雑さを排除するためのモデリングプロセスの一部を単純化する方法です。これらのモデルは理想的な性質を持っており、特定の仮定に基づいた理想的な解を表します。これらの仮定は、意見に基づく、確率的な、または一般化されたルールのセットから派生することができ、入力と出力の間に明確に定義されたパターンが存在すると仮定します。これは、確率的データを使用したモデリングと似ているように聞こえるかもしれませんが、主な違いは、モデルがこれらの事前定義された仮定によって決定されるということです。あなたの頭に浮かぶ質問は、「データを使ってモデルをトレーニングしていないのなら、これらのモデルの仮定はどこから得るのですか?」というものかもしれません。これに対する答えは非常にシンプルですが、時に見落とされることもあります。それは、ドメイン知識です。ドメイン知識は、特定のトピックについてのルールや概念のセットです。これらの仮定は、ドメイン知識によって派生し、決定論的モデリングの基盤となります。任意のプログラミング言語では、カスタムコードを使用してこれらの決定論的モデルを記述することができますが、モデルがより複雑になるにつれて、このタスクに特化したライブラリが作成されました。Pythonでは、GEKKOという名前のライブラリがそのようなものの1つです。

GEKKOは、モデリング言語Advanced process monitor(APMonitor)の実行を容易にするためのPythonライブラリです。複雑なモデルの作成と分析を容易にするために、さまざまな機能と関数を提供しています。混合整数と微分代数方程式の両方を解くことができ、線形、二次、非線形、混合整数プログラミング用の大規模ソルバーと組み合わせて使用することができます。GEKKOには9つの問題タイプがあり、決定論的モデルのセットアップを定義するために使用することができます。ただし、この記事では、すべての方程式を同時に解く移動ホライゾン推定(MHE)のみを考慮します。MHEモードは、測定された出力と最適化問題によって定式化されたモデルの予測との間の不一致を最小化することにより、動的システムの状態を推定するために使用されます。これは、再帰的推定または移動ウィンドウ推定を適用することによって行われます。

フー!これはかなりの専門用語ですが、以下の実践的な例で全てが理解できるはずです。

宇宙飛行は素晴らしい人類の業績です。人工物を宇宙に送るという偉業は、エンジニアリングと創造力の驚異です。しかし、宇宙に何かを送ることはかなり高額です。したがって、将来のロケットのパフォーマンスを向上させるためには、期待通りに動作する能力に自信を持ったロケットを建造することが重要です。実際の生の打ち上げデータを収集することは、将来のロケットのパフォーマンスを向上させるのに役立ちます。しかし、データを得るためにはロケットを打ち上げる必要があり、その中に問題があります。確率的データは確率ベースのモデルがないため、決定論的モデルとGEKKOが登場します。ロケットの決定論的モデルの仮定は非常にシンプルですが、それがロケット科学であることは言うまでもありません!つまり、地上1インチも浮かげずに、物理法則を使用して特定のロケット設定が理想的なシナリオでどのように機能するかを決定することができます。たとえば、GEKKOを使用してSpaceXのFalcon 1 Stage 1ロケットの設定を再現してみましょう。

始めに、公に知られている情報[1][2]を使用して、Falcon 1 Stage 1ロケットのセットアップについて定数と既知の値を定義しましょう。

さて、GEKKOで本当に面白いことを始めることができます。時間に基づいたシミュレーションを行うため、まず時間要素を定義しましょう:

  • ロケットの飛行時間は200秒です
  • 燃料の燃焼時間は161.6秒です
  • そして、後で使用するための追加の時間要素

時間配列が設定されたら、GEKKOモデルを初期化し、モデルの時間要素を設定します。次のステップは、各時間ステップで解かなければならない変数を定義することです。これらの変数は、ロケットの仮定によって決まりますが、シミュレーションの最後に評価したい変数も含めることができます。このシミュレーションでは、変数は次のようになります:

  • 質量
  • 距離
  • 速度
  • 推力によって生成される力
  • 後で使用するための追加のダミー時間変数

これらの変数のそれぞれに開始値を設定し、それらを制約するための下限と上限を設定することができます。GEKKOの変数は、興味のある変数を定義するための最も一般的な方法です。ただし、Fixed、Controlled、Manipulatedなどの他のオプションもあり、ユーザーが進化を許可される方法についてより多くの制御を提供します。ぜひ確認してみてください!

続行する前に、あなたの読み時間を考慮し、数学的に重くなりすぎないようにするために、このロケットモデルではロケット物理学に関するいくつかの既知の仮定が無視されることが重要です。これには、ロケットが上昇するにつれて空気密度や重力の変化、コリオリス力の影響、および多くの機械工学の要素が含まれます。ただし、行われる仮定により、ロケットの飛行とダイナミクスに影響を与える主な力がカバーされます。そして、それらを適用する方法と共に、それらを紹介するのにも良い時期です。

任意の古典的な移動物体と同様に、ニュートンの運動の法則が適用されます。つまり、このロケットの動き方はすでによくわかっています。しかし、これを行うために必要な微分方程式を簡単に振り返ってみましょう。心配しないで、それらは本当に簡単です。まず、ロケットがどのように移動し、距離をカバーするかを定義する方程式を定義しましょう。

わぁ!これは基本的な物理学ですね、物体の速度は単に時間の変化に対する距離の変化です。次に、ロケットが空気を通過する際に経験する抗力を追加しましょう。ちなみに、それはかなり遅いです。

それによって、力と速度の関係を作ることができます。覚えておいてください、

これにより、ロケットが経験するすべての力(前方推力、抗力、そしてもちろん重力)と速度を関連付けることができます。ここにあります。

このシミュレーションでは、これが最も難しい方程式でした。ロケットが発射される前に、2つの仮定をさらに行います。1つはロケットの燃料に関係しています。ロケットが推進剤として燃料を消費している場合、ロケットの質量がどのように変化するかを説明するのは良い考えです。これを行うために、質量の減少は最大推力と燃焼時間との線形関係を持つと仮定しましょう。

最後の仮定は、燃料が完全に使い果たされた場合に起こることです。これは論理的な文であり、GEKKOにもそれに対応するものがあります。

これで、すべての作業が完了したので、すべての要素をまとめて決定論的モデルを構築することができます。

上記のコードには、言及されていないいくつかの追加事項があることに注意してください。まず、ダミーの時間方程式が呼び出されました。これは、燃料が切れる時間を追跡するためです。次に、最適化目的が使用されました。なぜこれを行ったのでしょうか?MHEは目的を解決しますが、この場合はロケットが各時間ステップで地面から最大の高さに到達することを目指します。最適化するために他の目的関数を試すこともできます(たとえば、m.fix_final(h, 50e3)を使用してm.Obj(thrust*v)を試すと、ロケットの燃料を節約しようとします)。最後のことは、GEKKOがシミュレーションで最適な解を見つけることができたかどうかを表示することです。このシミュレーションでは、実際には自由度がマイナスでした。これはm.if3を使用することの特異性であり、通常、シミュレーションの解決に影響を与える場合があります。したがって、より複雑なことを試したい場合は、m.if2を使用してみることをお勧めします。

最後に、シミュレーションの成果物を見てみましょう。シミュレーションが解決した結果を良く見るために、結果をプロットすることは素晴らしい視覚化手法です。

ロケットの性能を分析すると、興味深い洞察が得られます。まず、最大高度73.83 kmと最大速度802.15 m/sに達しました。さらに、ロケットの飛行中には平均推力322.68 kNを持ち、19.59 GJのエネルギーを消費しました。

これらの結果は、実際にロケットを建設する前でも、ロケットの能力とパフォーマンスについて重要な情報を提供してくれます。さらに、パラメータを調整して微調整することが容易であり、ますます複雑な要素を追加することで、決定論的モデリングが持つ信じられないほどの潜在能力を実際に示すことができます。このような情報が利用可能であることで、そのような費用のかかるプロジェクトの設計最適化や予算立案にエンジニアを支援するためにさらに利用することができます。

ロケットはかっこいいですが、決定論的モデリングのより現実的な応用例には、さまざまなタイプのシステムの最適化が含まれます。そのようなシステムの例としては、製造工場の処理ライン、交通制御と経路計画、感染症や疾病の複雑な拡散のシミュレーション、気候変動とその影響のモデリング、そして金融分野での決定論的なゲーム理論モデルの使用などがあります。

まとめると、決定論的モデリングは、ドメイン知識によってよく説明される理想的なシナリオの解決策を見つけるための優れたオプションです。非線形の複雑なシステムをモデル化し、現実のデータが利用可能になる前に強力な予測的および確率的な結果を提供します。全体として、決定論的モデリングは、それをマスターしたい人々にとって強力なツールです。

[1] Propulsion Falcon-I ( http://www.b14643.de/Spacerockets_2/United_States_2/Falcon-I/Propulsion/engines.htm )

[2] Falcon 1 ( https://en.wikipedia.org/wiki/Falcon_1 )

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AIテクノロジー

アンソニー・グーネティレケ氏は、Amdocsのグループ社長であり、テクノロジー部門および戦略部門の責任者です- インタビューシリーズ

アンソニー・グーネティレーケは、Amdocsでグループ社長、テクノロジーと戦略担当です彼と企業戦略チームは、会社の戦略を策...

データサイエンス

「3つの質問:ロボットの認識とマッピングの研磨」

MIT LIDSのLuca CarloneさんとJonathan Howさんは、将来のロボットが環境をどのように知覚し、相互作用するかについて議論し...

人工知能

アーティスの創設者兼CEO、ウィリアム・ウーによるインタビューシリーズ

ウィリアム・ウーは、Artisseの創設者兼CEOであり、ユーザーの好みに基づいて写真を精密に変更する技術を提供していますそれ...

データサイエンス

2023年にAmazonのデータサイエンティストになる方法は?

ほとんどのビジネスは現在、膨大な量のデータを生成し、編集し、管理しています。しかし、ほとんどのビジネスは、収集したデ...

人工知能

「トリントの創設者兼CEO、ジェフ・コフマンへのインタビューシリーズ」

ジェフ・コーフマンは、ABC、CBS、CBCニュースで30年のキャリアを持った後、Trintの創設者兼CEOとなりましたジェフは手作業の...

機械学習

もし芸術が私たちの人間性を表現する方法であるなら、人工知能はどこに適合するのでしょうか?

MITのポストドクターであるジヴ・エプスタイン氏(SM '19、PhD '23)は、芸術やその他のメディアを作成するために生成的AIを...