| ミニジンク | |
|---|---|
| パラダイム | |
| 開発者 | モナッシュ大学 |
| 初登場 | 2009年5月2日 (2009年5月2日) |
| 安定版リリース | 2.9.2 / 2025年3月6日 (2025年3月6日) |
| タイピングの規律 | 強い |
| 実装言語 | C++ |
| OS | Linux、macOS、Windows |
| ライセンス | Mozilla パブリックライセンス 2.0 |
| ファイル名拡張子 | .mzn、.dzn、.fzn |
| Webサイト | www.minizinc.org |
| 影響を受けた | |
| 亜鉛 | |
MiniZinc [ 1 ]は、制約プログラミング、整数プログラミング、SAT、SMTなど、さまざまな組み合わせ問題に対するよく知られた解決パラダイムを使用して、高複雑度の問題を記述および解決するための制約モデリング言語(または代数モデリング言語)です。
MiniZincでは、制約プログラミングパラダイムに従い、既知の値(パラメータ)、未知の値(決定変数)、そしてこれらの値間の関係(制約)に基づいて問題が指定されます。MiniZincは、問題における既知の構造をモデル化するために、グローバル制約の使用を促進します。これらのグローバル制約はモデルの明瞭性を向上させ、ソルバーが構造を最も効果的に活用する方法を使用できるようにします。MiniZincの問題インスタンスは、対象のソルバーがサポートする制約のみをサポートするレベルに変換(またはフラット化)され、その後、ソルバーの推奨形式で渡されます。現在、MiniZincは独自の形式である「FlatZinc」または.nlファイルを使用してソルバーと通信できます。
MiniZincの大きな利点は、同じMiniZincインスタンスから異なるソルバーを使用できることです。MiniZincは、CBC、[ 2 ] Choco、[ 3 ] Chuffed、HiGHS、Gurobi、IPOPT、OR-Toolsなど、オープンソースおよび商用ソフトウェアを含む多くのソルバーをサポートしています。
MiniZincはR [ 4 ]やPython [ 5 ]などの他の言語と相互運用可能です。
言語
次の MiniZinc モデルは、有名なnクイーン パズルを解くのに使用できます。
include "all _ different.mzn"; % all_differentグローバルをインクルードするint: n = 8; % クイーンの数。(パラメータ)変数1..nの配列[1..n]: q; % 盤上のクイーンの高さ。(決定変数)% クイーンは他のクイーンを捕獲できる位置にいられません。(制約)制約 all _ different(q); 制約 all _ different(i in 1..n)(q[i] + i); 制約 all _ different(i in 1..n)(q[i] - i); 参考文献
- ^ニコラス・ネザーコート、ピーター・J・スタッキー、ラルフ・ベケット、セバスチャン・ブランド、グレゴリー・J・ダック、グイド・タック (2007). 「MiniZinc: 標準的なCPモデリング言語に向けて」 . クリスチャン・ベシエール編著.制約プログラミングの原理と実践 – CP 2007 . コンピュータサイエンス講義ノート. ベルリン、ハイデルベルク: シュプリンガー. pp. 529– 543. doi : 10.1007/978-3-540-74970-7_38 . ISBN 978-3-540-74970-7。
- ^ 「COIN-OR Branch-and-Cut MIPソルバー」 . projects.coin-or.org . 2020年9月14日閲覧。
- ^ "Choco-solver" . Choco-solver . 2020年9月14日閲覧。
- ^ 「はじめに」 .
- ^ 「ミニジンクパイソン」。