日食

ECLiPSe 制約論理プログラミングシステム
開発者欧州コンピュータ産業研究センター(ECRC)、ミュンヘンインペリアル・カレッジ・ロンドン計画・資源管理センター(IC-Parc)、シスコシステムズ
初回リリース1992 (1992年
安定版リリース
7.0 / 2018年1月22日 ( 2018-01-22 )
書かれたCプロローグ
オペレーティング·システムクロスプラットフォーム
入手可能な英語
タイプ制約論理プログラミング
ライセンスMozilla パブリック(MPL)
Webサイトeclipseclp.org
リポジトリsf .net /p /eclipse-clp /git /

ECLiPSeは、最適化、計画スケジュール資源割り当て、時間割作成、輸送などの分野での制約論理プログラミングアプリケーションの開発と展開のためのソフトウェアシステムです。また問題モデリング、制約プログラミング数学的プログラミング検索テクニックなど、組み合わせ問題解決のほとんどの側面の指導にも適しています。[ 1 ]制約ソルバーライブラリ、高水準モデリングおよび制御言語(Prologのスーパーセット)、サードパーティソルバーへのインターフェイス、統合開発環境、ホスト環境に埋め込むためのインターフェイスが含まれています。

ECLiPSeは、1995年までミュンヘンの欧州コンピュータ産業研究センター(ECRC)で開発され、その後2005年までインペリアル・カレッジ・ロンドンの計画・資源管理センター(IC-Parc)で開発されました。その後、シスコシステムズに買収されました。2006年9月、 Mozilla Public Licenseと同等のライセンスの下でオープンソースソフトウェアとしてリリースされ、現在はSourceForgeでホストされています。

言語

ECLiPSe言語[ 2 ]はPrologとほぼ後方互換性があり、ISO Prologを含む様々な方言をサポートしています。宣言型であるため、問題を記述するためのモデリング言語としても、汎用プログラミング言語としても使用できます。

基本的なPrologデータ型に加えて、文字列精度無制限の整数および有理数浮動小数点区間も利用可能です。配列構文とフィールド名を持つ構造体もサポートされており、特に制約モデリングに役立ちます。

論理的な反復構造[ 3 ]により、ほとんどの単純な再帰パターンは不要になります。

ECLiPSeは、データ駆動型制御動作を実装するための包括的な機能[ 2 ]を提供します。これには、宣言的な遅延節に加え、明示的なゴール停止、柔軟なトリガー機能、実行優先度といったメタプログラム制御のためのプリミティブが含まれます。属性変数データ型と組み合わせることで、これは制約ベースの機能を含む、基本論理型プログラミング言語の多くの拡張の鍵となります。システムは、特定のコンテキスト(例えば、ユニフィケーション)で属性変数に遭遇すると、ユーザー定義可能なイベントハンドラーを呼び出します。

モジュールシステムは、述語、非論理ストア、ソース変換、構文設定の可視性を制御します。モジュールインターフェースは拡張および制限可能であり、異なる言語方言で記述されたモジュールを1つのアプリケーション内に混在させることができます。

プログラムには、参照ドキュメントを生成できる構造化されたコメントが含まれている場合があります。

図書館

ECLiPSe は、アプリケーション プログラムで使用できる 制約ソルバーのライブラリをいくつか提供します。

有限領域での算術制約、有限集合制約、一般化伝播、非線形制約での区間推論、外部単体ソルバーへのインターフェース、制約処理ルール(CHR) など。

他のライブラリは、分岐限定法、修復ベースの検索、限定不一致検索 などの検索方法を実装しています。

ECLiPSeは外部ソルバー、特にCOIN-ORCPLEX、Gurobi、Xpress-MP線形および混合整数計画ソルバー[ 4 ]およびGecodeソルバーライブラリとのインターフェースを備えています。

ISO Prolog [ 5 ]や他のProlog方言(C-Prolog、QuintusSICStusSWI-Prolog )の互換性ライブラリにより、それらの方言で書かれたライブラリの再利用が可能になります。

多数の一般的なパブリック ドメインライブラリを含むその他のユーティリティ ライブラリも、このディストリビューションに含まれています。

システムアーキテクチャ

このシステムには、ソースコードを仮想マシンコードに変換する増分コンパイラが含まれています。このコンパイラは、インデックス選択、ユニフィケーション順序、制御構造のインライン展開を最適化し、モード情報も考慮します。

ランタイムシステムは、仮想マシン、スタックと辞書のガベージコレクションによる自動メモリ管理、イベント処理、データ駆動型実行を実装します。ECLiPSeの各バージョンはOR並列処理を実装しています。

ECLiPSe コンポーネントは、低レベルのCまたはC++インターフェイス、あるいはJavaおよびTclへの高レベルのインターフェイスを介してソフトウェアに統合できます。

参照

参考文献

  1. ^ 「ECLiPSe Web サイト」 . eclipseclp.org .
  2. ^ a b Schimpf, Joachim; Shen, Kish (2012). 「ECLiPSe - LPからCLPへ」.論理プログラミングの理論と実践. 12 ( 1–2 ): 127–156 . arXiv : 1012.4240 . doi : 10.1017/S1471068411000469 . S2CID 11827081 . 
  3. ^ Schimpf, Joachim (2002年8月1日).論理ループ(PDF) . 論理プログラミング, 第18回国際会議, ICLP 2002, コペンハーゲン, デンマーク, 2002年7月29日 - 8月1日 Proceedings: Springer-Verlag. pp.  224– 238. ISBN 978-3-540-45619-3{{cite book}}: CS1 メンテナンス: 場所 (リンク)
  4. ^ Shen, K.; Schimpf, J. (2005). 「Eplex: 制約論理プログラミングのための数理計画法ソルバーの活用」.制約プログラミングの原理と実践 - CP 2005.コンピュータサイエンス講義ノート. 第3709巻. 制約プログラミングの原理と実践 - CP 2005: 第11回国際会議, CP 2005, シッチェス: Springer. pp.  622– 636. doi : 10.1007/11564751_46 . ISBN 978-3-540-32050-0{{cite book}}: CS1 メンテナンス: 場所 (リンク)
  5. ^ 「ECLiPSe ISO適合宣言」 . eclipseclp.org .