AMPL数学的プログラミング言語)は、大規模な数学的計算(大規模な最適化やスケジューリング型の問題など)のための高複雑性問題を記述および解決するための代数モデリング言語です。 [1]ベル研究所ロバート・フーラー、デビッド・ゲイ、ブライアン・カーニガン によって開発されました。AMPLは、CBC、CPLEXFortMPMOSEKMINOSIPOPTSNOPTKNITRO 、LGOなど、オープンソースおよび商用ソフトウェアの両方を含む数十のソルバーをサポートしています。問題はnlファイルとしてソルバーに渡されます。AMPLは、100社を超える企業顧客、政府機関、学術機関で使用されています。[2]

AMPLの利点の一つは、その構文が最適化問題の数学的記法と類似していることです。これにより、最適化分野における問題を非常に簡潔かつ読みやすく定義できます。NEOSサーバー(以前はアルゴンヌ国立研究所でホストされていましたが、現在はウィスコンシン大学マディソン校[3]でホストされています)で利用可能な多くの最新のソルバーは、AMPL入力を受け付けます。NEOSの統計によると、AMPLは数理計画問題を表現する最も一般的な形式です。

特徴

AMPLは宣言型命令型のプログラミングスタイルを融合しています。最適化モデルの定式化は、集合、スカラーおよび多次元パラメータ、決定変数、目的関数、制約といった宣言型言語要素を介して行われ、数理最適化の分野におけるほとんどの問題を簡潔に記述できます。

AMPLでは、 手続きと制御フロー文が利用可能です。

  • スプレッドシートデータベースXML、テキストファイルなどの外部データソースとのデータ交換
  • 最適化モデルに関するデータの前処理および後処理タスク
  • 直接的に効率的な解決策が存在しない問題タイプに対するハイブリッド アルゴリズムの構築。

再利用をサポートし、大規模な最適化問題の構築を簡素化するために、AMPL ではモデルとデータの分離が可能です。

AMPL は、次のような幅広い問題タイプをサポートしています。

AMPL は別のプロセスでソルバーを呼び出しますが、これには次のような利点があります。

  • ユーザーはいつでも解決プロセスを中断できる
  • ソルバーエラーはインタープリターには影響しません
  • AMPLの32ビット版は64ビットソルバーで使用でき、その逆も同様です。

ソルバーとのやり取りは、明確に定義されたnl インターフェースを通じて行われます。

可用性

AMPLは、 LinuxmacOSSolarisAIXWindowsなど、多くの一般的な32ビットおよび64ビットオペレーティングシステムで利用可能です。[5] このトランスレータはAMPL Optimization LLCによって保守されているプロプライエタリソフトウェアです。ただし、AMPLを使用したモデリングとソルバー機能を無料で提供するオンラインサービスもいくつか存在します。[6] [7]機能が制限された無料の学生版と、学術コース向けの無料のフル機能版も提供されています。[8]

AMPLは、汎用プログラミング言語との統合を可能にするオープンソースAPIも提供しています。Python、R、C++、C#、MATLAB、Java向けの公式APIが用意されており、ユーザーはプログラムでモデルを生成、更新、そして解くことができます。[9]

AMPL は、 SolverStudio Excel アドインを 介してMicrosoft Excel内から使用できます。

AMPLソルバーライブラリ(ASL)は、NLファイルの読み込みと自動微分機能を提供するオープンソースライブラリです。AMPL接続を実装するために多くのソルバーで使用されています。

AMPL/MPは、自動微分を必要としないASLの代わりに、線形、混合整数、制約プログラミングソルバーを構築するためのオープンソースライブラリを提供します。 [10]

ステータス履歴

この表は AMPL の歴史における重要なステップを示しています。

サンプルモデル

ジョージ・ダンツィグの輸送問題をAMPLモデルの例として用います。この問題は、市場の需要を満たし、工場への供給も満たす、最小費用の輸送スケジュールを求めます。[17]

プラントを設定します市場を設定します 
 

# ケース内の植物の容量 p 
param Capacity { p in Plants };   

# ケースごとの市場 m での需要
param Demand { m in Markets };   

# 距離(千マイル単位)
param Distance { Plants , Markets };  

# 1,000マイルあたりケースあたりのドル単位の運賃
param Freight ; 

# ケースあたりの輸送コスト(千ドル単位)
param TransportCost { p in Plants , m in Markets } : = Freight * Distance [ p , m ] / 1000 ;       
         

# ケース単位の出荷数量
var shipment { Plants , Markets } >= 0 ;    

# 総輸送コスト(千ドル単位)
minimize cost : sum { p in Plants , m in Markets } TransportCost [ p , m ] * shipment [ p , m ]; 
              


# 工場 p での供給制限を観察します。supply { p in Plants }: sum { m in Markets } shipment [ p , m ] <= Capacity [ p ];          

# 市場 m での需要を満たす
s.t. demand { m in Markets }: sum { p in Plants } shipment [ p , m ] >= Demand [ m ];          

データ;

植物設定: =シアトルサンディエゴ;市場設定: =ニューヨークシカゴトピカ;    
     

パラメータ容量: =シアトル350サンディエゴ600 ;  
       
     

パラメータ需要: =ニューヨーク325シカゴ300トピーカ275 ;  
     
      
       

パラメータ距離:ニューヨークシカゴトピカ: =シアトル2.5 1.7 1.8サンディエゴ2.5 1.8 1.4 ;      
                       
                     

パラメータ運賃: = 90 ;   

ソルバー

AMPLでサポートされているソルバーの一部を以下に示します。 [18]

参照

参考文献

  1. ^ ab Fourer, Robert ; Gay, David M; Kernighan, Brian W (2003). AMPL: 数理計画法のためのモデリング言語. 米国: Duxbury Press/Brooks/Cole Publishing Company. ISBN  978-0-534-38809-6
  2. ^ “Position Available”. 2011年9月11日時点のオリジナルよりアーカイブ2011年7月29日閲覧。
  3. ^ 「About」 . 2015年8月11日閲覧
  4. ^ ab Fourer, Robert ; Gay, David M. (2002). 「制約プログラミングをサポートするための代数モデリング言語の拡張」INFORMS Journal on Computing . 14 (4): 322– 344. CiteSeerX 10.1.1.8.9699 . doi :10.1287/ijoc.14.4.322.2825.  
  5. ^ “プラットフォーム”. AMPL Optimizations Inc. 2022年5月14日時点のオリジナルよりアーカイブ2019年11月1日閲覧。
  6. ^ 「NEOS Server for Optimization」 。 2015年8月11日閲覧
  7. ^ 「AMPLを試してみよう!」2015年8月11日閲覧
  8. ^ “AMPL Downloads”. 2015年5月26日時点のオリジナルよりアーカイブ2015年8月11日閲覧。
  9. ^ ab "AMPL APIs". AMPL最適化. 2025年9月11日閲覧。
  10. ^ ab "AMPL/MP". AMPL最適化. 2025年9月11日閲覧。
  11. ^ Fourer, Robert ; Gay, David M.; Kernighan, Brian W. (1990). 「数理計画のためのモデリング言語」(PDF) . Management Science . 36 (5): 519–554–83. doi :10.1287/mnsc.36.5.519.
  12. ^ INFORMS. 「ICS - INFORMS」(PDF) . 2006年10月7日時点のオリジナル(PDF)からアーカイブ。 2015年8月11日閲覧
  13. ^ 「Google グループ」。
  14. ^ INFORMS. 「INFORMS Impact Prize」. 2013年10月22日時点のオリジナルよりアーカイブ2015年8月11日閲覧。
  15. ^ 「AMPLブック:初心者から経験豊富なユーザーまで、最適化モデルを構築するための包括的なガイド」 。 2021年3月5日閲覧
  16. ^ 「Google グループ」 。 2015年8月11日閲覧
  17. ^ Dantzig, George (2016) [1963]. 「3. 線形計画モデルの定式化」.線形計画法とその拡張. プリンストン大学出版局. pp.  32– 62. ISBN  978-1-4008-8417-9
  18. ^ “Solvers - AMPL”. 2014年2月27日時点のオリジナルよりアーカイブ2018年1月21日閲覧。
  19. ^ “Couenne”. 2013年10月29日時点のオリジナルよりアーカイブ2013年10月27日閲覧。
  20. ^ "mp/solvers/ilogcp at master · ampl/mp · GitHub". GitHub . 2015年8月11日閲覧
  21. ^ "mp/solvers/gecode at master · ampl/mp · GitHub". GitHub . 2015年8月11日閲覧
  22. ^ "mp/solvers/jacop at master · ampl/mp · GitHub". GitHub . 2015年8月11日閲覧
  23. ^ 「LGO - AMPL」 . 2015年8月11日閲覧
  24. ^ 「AMPLのlpsolveの使用」2015年8月11日閲覧。
  25. ^ "mp/solvers/sulum at master · ampl/mp · GitHub". GitHub . 2015年8月11日閲覧
  26. ^ 「GLPK公式サイト」 。 2020年9月17日閲覧