ツールの紹介

Prologの拡張・それ以外・非論理型言語のライブラリに分類して紹介します。 分類はあくまで便宜的なものです。(例えば関数論理型言語に分類される言語が Prolog的なシンタクスを持つかどうかで別々に分類されてしまったりしています。 またどこまでがProlog的かも明らかに程度の問題です。) 詳細な利用条件・機能については、各言語のサイトにて確認していただけますようお願いします。

また特定の応用分野に特化した制約ベースのシステムやライブラリについては、 応用分野をご覧ください。

言語(Prologの拡張)

The Ciao programming language

http://ciao-lang.org

GNU Prolog

http://gprolog.univ-paris1.fr

SICStus Prolog

30日の評価用ライセンスで評価が可能。

http://sicstus.sics.se

B-Prolog – Prologの拡張。

最近は更新されていないようです。アカデミックライセンスは無料。

http://www.probp.com

言語(上記以外)・システム

Picat

B-Prologエンジンをベースに実装されたマルチパラダイム言語

http://www.picat-lang.org

MiniZinc and FlatZinc (NICTA)

制約充足問題のモデリング言語および制約処理系。このモデリング言語を使用した競技会 MiniZinc Challenge も行われています。

https://www.minizinc.org

ECLiPSe

https://eclipseclp.org

Minion

https://constraintmodelling.org

The Mozart Programming System(DFKI/SICS/ルーヴァンカトリック大学)

Oz言語の開発環境。

http://mozart2.org

MiniCP

制約プログラミングのソルバがどのように動くのかを理解することを助けるために作られたシンプルな Java製のソルバ。

http://www.minicp.org

Curry

関数論理型言語。シンタックスは関数型言語Haskellのものがベース。インタプリタ・コンパイラとりまぜ、幾つかの実装が存在する。

https://www-ps.informatik.uni-kiel.de/currywiki/

ライブラリ

Choco

Java のライブラリ。

http://www.emn.fr/z-info/choco-solver/

Gecode

C++ のライブラリ。制約処理の研究では比較的広く利用されているようです。

http://www.gecode.org/

JaCoP

Java のライブラリ。

http://www.jacop.eu/

OR-Tools (Google)

制約プログラミングの機能に加え、他のLPライブラリとのインタフェースも備える。Python, Java, .Netから使用可能。

https://developers.google.com/optimization

OptaPlanner

スケジューリング問題のための Java のライブラリ。

http://www.optaplanner.org/

iZ-C

Cの制約ライブラリ

このサイトからダウンロード可能

Cream (神戸大学)

Javaの制約プログラミングライブラリ。

http://bach.istc.kobe-u.ac.jp/cream/

Screamer

Lispの制約ライブラリ

http://nikodemus.github.io/screamer/

DragonBreath

An Optimization Engine based on Constraint Programming and Local Search – in AI-CENTER

http://www.ai-center.com/projects/dragonbreath/

EXCALIBUR

Adaptive Constraint-Based Agents in Artificial Environments – in AI-CENTER

http://www.ai-center.com/projects/excalibur/

FaCiLe

数型言語OCaml用の制約ライブラリ(ENAC:フランス)

http://facile.recherche.enac.fr/index.html.en

Cassowary Constraint Solving Toolkit(ワシントン大学)

https://constraints.cs.washington.edu/cassowary/

開発ツール

IBM CPLEX Optimizer

制約プログラミングに限らず、MIPを含む最適化のためのツールを包括的に用いるためのシステム。

https://www.ibm.com/jp-ja/analytics/cplex-optimizer

JSR-331

Java で制約処理系を扱うための標準仕様。

http://jcp.org/en/jsr/detail?id=331

特定領域向けのライブラリ・パッケージ

Strasheela

音楽理論を制約として用いる作曲システム

http://strasheela.sourceforge.net/

Sced

Constraint Based Scene Design – by Stephen Chenney

http://www.cs.wisc.edu/~schenney/sced/sced.html

Garnet (カーネギーメロン大学)

LISPでユーザインタフェースを作成するためのライブラリ。

http://www.cs.cmu.edu/afs/cs.cmu.edu/project/garnet/www/garnet-home.html

Amulet(カーネギーメロン大学

C++でユーザインタフェースを作成するためのライブラリ。

http://www.cs.cmu.edu/~amulet/

その他

Constraint Programming Solvers

CP2013 に合わせて作成された制約プログラミング用ソフトウェアのカタログ。

http://openjvm.jvmhost.net/CPSolvers/

CSPLib: a problem library for constraints

CSP(制約充足問題)の標準問題集

http://www.csplib.org/

PROJECT SCHEDULING PROBLEM LIBRARY - PSPLIB

スケジューリング問題の標準問題集

http://www.om-db.wi.tum.de/psplib/

Global Constraint Catalog

グローバル制約のカタログ。制約の意味、各種処理系での呼び方、論文等へのリンクなど。

http://sofdem.github.io/gccat/

https://github.com/hakank/hakank

ブログ My Constraint Programming Blog の著者によるモデル集。