トップ > 数理計画用語集 > SIMPLE

数理計画用語集

SIMPLE

読み:しんぷる
関連自動微分

1990年代中盤に開発されたモデリング言語.(株)NTT データ数理システムの自社製品であり,Numerical Optimizer に付属して販売されている.数式記述を意識した文法規則となっているのが言語仕様としての特色であり,「変数」や「定数」に付属する「添字」をその宣言時から「集合」に対応付け,特に指定しなくても自律的に動くとしたことで,手続き的な記述に頻発する「ループ」を排除している.

C++ の演算子オーバーロード機能を用いたクラスライブラリとして実装されており,いわゆる「パーザー」がないことも特色の一つである.モデル記述そのものを C++ のコンパイラによってコンパイルして実行することで,数式の情報を「計算グラフ」という形でメモリ上に構成する.コンパイルしたオブジェクトコードを数理計画法アルゴリズムの実装とリンクすることで,モデル記述の解釈とデータの入力,アルゴリズムの実行および結果の出力を一括して行うロードモジュール(Windows環境では.exe)を作成することができる.

機能的な特色としては,「計算グラフ」を用いた自動微分を当時のモデリング言語処理系としてはいち早く実装したことが挙げられる.SIMPLE が二階微分の情報を簡便に供給する環境を整えたことで,Numerical Optimizer に組み込まれた信頼領域法のような高精度な非線形最適化アルゴリズムを回路設計や生産,フィッティングなどに現れる複雑で大規模な問題に対して適用する余地が生まれた.

SIMPLE は演算子オーバーロード機能がある言語であれば移植が可能であり,対象としては S-PLUS,R,Python などが検討されている.そのうち S-PLUS と R については実現し,S+NUOPTRNUOPT という製品に組み込まれている.これら移植版の SIMPLE はインタプリタから動作するという点を除けば機能的にほぼ同一である(言語仕様そのものの制約のため,文法は一部異なる).数式に近い仕様を持つことを利用して,数式エディタからのモデル記述を可能とした製品 MP.doc も存在する.

SIMPLE の仕様そのものは,広く一般的な数理モデルを記述することを意図して設計されており,今後は数理計画問題のみならず,離散化された偏微分方程式系の記述などへの広がりが期待される.