代数モデリング言語(AML )は、大規模な数学的計算(つまり、大規模な最適化型の問題)に関する高複雑性の問題を記述および解決するための高水準コンピュータ プログラミング言語です。 [1] AIMMS、[1] AMPL、[2] GAMS、[1] Gekko、 MathProg、 Mosel、[1] [3] および OPLなどの代数モデリング言語の特定の利点の1つは 、構文が最適化問題の数学的表記法に類似していることです。これにより、セット、インデックス、代数式、強力なスパースインデックスとデータ処理変数、任意の名前を持つ制約などの特定の言語要素によってサポートされる、最適化ドメインの問題の非常に簡潔で読みやすい定義が可能になります。モデルの代数的定式化には、それを処理するためのヒントは含まれていません。
AML はこれらの問題を直接解決するのではなく、適切な外部アルゴリズムを呼び出して解決策を取得します。これらのアルゴリズムはソルバーと呼ばれ、次のような特定の種類の数学的問題を処理できます。
- 線形問題
- 整数問題
- (混合整数)二次方程式の問題
- 混合補完性問題
- 均衡制約を伴う数学プログラム
- 制約付き非線形システム
- 一般的な非線形問題
- 不連続導関数を持つ非線形計画法
- 非線形整数問題
- グローバル最適化問題
- 確率的最適化問題
コア要素
AML の中核となる要素は次のとおりです。
- モデリング言語インタープリタ(AML 自体)
- ソルバーリンク
- ユーザーインターフェース(UI)
- データ交換施設
設計原則
ほとんどの AML は特定の設計原則に従います。
- 宣言的要素と手続き的要素のバランスの取れた組み合わせ
- オープンアーキテクチャと他のシステムとのインターフェース
- 異なるレイヤーを分離:
- モデルとデータ
- モデルと解決方法
- モデルとオペレーティングシステム
- モデルとインターフェース
データ駆動型モデル生成
ほとんどのモデリング言語は、データベースアクセス層を提供することで構造化モデルとリレーショナルデータベース[4]の類似性を活用し、モデリングシステムが外部データソース(AMPLのこれらの[5]テーブルハンドラーなど)から直接データにアクセスできるようにします。ビジネスプロセスに適用される分析技術の改良により、最適化モデルは意思決定支援システムの不可欠な部分になりつつあります。最適化モデルは、複雑なビジネスプロセスを表現およびサポートするために構造化および階層化できます。このようなアプリケーションでは、OLAPシステムに典型的な多次元データ構造を最適化モデルに直接マッピングでき、典型的なMDDB操作を基礎となるモデルの集約および分解操作に変換できます[6]
歴史
代数モデリング言語は、1970 年代後半に開発されたマトリックス ジェネレーターおよびレポート ライター プログラム (MGRW) にそのルーツがあります。これらのプログラムには、MAGEN、MGRW (IBM)、GAMMA.3、DATAFORM、MGG/RWG などがあります。これらのシステムにより、問題インスタンスをソリューション アルゴリズムに伝達し、結果の読み取り可能なレポートを生成することが簡素化されました。
LP 用の初期の行列生成器は、1969 年頃にアムステルダムの Mathematisch Centrum (現在の CWI) で開発されました。[7] その構文は、下付き文字とシグマを使用した通常の数学表記法に非常に近いものでした。生成器への入力は、モデルとデータの別々のセクションで構成されていました。大学や産業界で使用されていました。主な産業界のユーザーは鉄鋼メーカーの Hoogovens (現在の Tata Steel) で、そこでは 25 年近く使用されていました。
現代のモデリング言語への大きな一歩はUIMP [8]にあります。UIMPでは、実生活から取られた数理計画モデルの構造が初めて分析され、そのようなモデルから生じる変数と制約の自然なグループ化が強調されました。これにより、構造化モデリングをサポートするデータ構造機能が生まれました。このパラダイムでは、すべての入力テーブルと出力テーブル、および決定変数は、添え字とセットの使用に匹敵する方法で、これらの構造に関して定義されます。これはおそらく、すべての現代のAMLに共通する最も注目すべき機能であり、やがてモデル構造とデータの分離、およびMPモデル内のエンティティとリレーショナルデータベースのデータとの対応を可能にしました。そのため、データセットを変更するだけで、モデルを最終的にインスタンス化して、さまざまなデータセットで解決できるようになりました。
モデリングエンティティとリレーショナルデータモデル間の対応により、[4]企業のデータベースからデータを取得してモデルインスタンスをシームレスに生成することが可能になりました。この機能は現在、実際のアプリケーションでの最適化の有用性の大部分を占めており、ほとんどの有名なモデリング言語でサポートされています。
代数モデリング言語は通常、孤立した特殊な商用言語でしたが、最近では、 PythonのGekkoやPyomo、Julia 言語のJuMPなど、汎用言語内のオープンソースの特殊なライブラリの形で代数モデリング言語が登場し始めています。
注目すべきAML
特殊なAML
汎用プログラミング言語の AML パッケージ
参考文献
- ^ abcd Kallrath, Joseph (2004). 数学的最適化におけるモデリング言語。Kluwer Academic Publishing。ISBN 978-1-4020-7547-6。
- ^ Robert Fourer、David M. Gay、Brian W. Kernighan (1990)。「数学プログラミングのためのモデリング言語」。経営科学。36 (5): 519–554–83。doi :10.1287/mnsc.36.5.519。
- ^ Gueret, Christelle; Prins, Christian; Sevaux, Marc (2002). Xpress-MP による最適化の応用。Dash Optimization Limited。ISBN 0-9543503-0-8。
- ^ ab Gautam Mitra; Cormac Lucas; Shirley Moody; Bjarni Kristjansson ( 1995). 「線形計画モデリングにおけるセットとインデックス、およびリレーショナルデータモデルとの統合」。計算最適化とアプリケーション。4 (3): 262–283。
- ^ [1] AMPL用データベースおよびスプレッドシートテーブルハンドラ
- ^ Koutsoukis, N.; Mitra, G. ; Lucas, C. (1999). 「意思決定モデリングのためのオンライン分析処理の適応:情報と意思決定技術の相互作用」.意思決定支援システム. 26 (1): 1–30. doi :10.1016/S0167-9236(99)00021-4 . 2017年11月22日閲覧。
- ^ Jac. M. Anthonisse、「線形計画問題のための入力システム」、Statistica Neerlandica 24 (1970)、143-153。
- ^ Francis D Ellison、Gautam Mitra (1982)。「UIMP: 数学プログラミングのユーザーインターフェイス」(PDF)。ACM Transactions on Mathematical Software。8 ( 3): 229–255。doi :10.1145/356004.356005。S2CID 3948431。 2014年1月18日に オリジナル(PDF)からアーカイブ。 2014年1月16日閲覧。
