ミニジンク

ミニジンク
パラダイム
開発者モナッシュ大学
初登場2009年5月2日 (2009年5月2日
安定版リリース
2.9.2 / 2025年3月6日 (2025年3月6日
タイピングの規律強い
実装言語C++
OSLinuxmacOSWindows
ライセンスMozilla パブリックライセンス 2.0
ファイル名拡張子.mzn、.dzn、.fzn
Webサイトwww.minizinc.org
影響を受けた
亜鉛

MiniZinc [ 1 ]は、制約プログラミング整数プログラミングSATSMTなど、さまざまな組み合わせ問題に対するよく知られた解決パラダイムを使用して、高複雑度の問題を記述および解決するための制約モデリング言語または代数モデリング言語)です。

MiniZincでは、制約プログラミングパラダイムに従い、既知の値(パラメータ)、未知の値(決定変数)、そしてこれらの値間の関係(制約)に基づいて問題が指定されます。MiniZincは、問題における既知の構造をモデル化するために、グローバル制約の使用を促進します。これらのグローバル制約はモデルの明瞭性を向上させ、ソルバーが構造を最も効果的に活用する方法を使用できるようにします。MiniZincの問題インスタンスは、対象のソルバーがサポートする制約のみをサポートするレベルに変換(またはフラット化)され、その後、ソルバーの推奨形式で渡されます。現在、MiniZincは独自の形式である「FlatZinc」または.nlファイルを使用してソルバーと通信できます。

MiniZincの大きな利点は、同じMiniZincインスタンスから異なるソルバーを使用できることです。MiniZincは、CBC、[ 2 ] Choco、[ 3 ] Chuffed、HiGHSGurobiIPOPTOR-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); 

参考文献

  1. ^ニコラス・ネザーコート、ピーター・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
  2. ^ 「COIN-OR Branch-and-Cut MIPソルバー」 . projects.coin-or.org . 2020年9月14日閲覧
  3. ^ "Choco-solver" . Choco-solver . 2020年9月14日閲覧
  4. ^ 「はじめに」 .
  5. ^ 「ミニジンクパイソン」