MiniZinc est un langage de modélisation de contraintes (ou langage de modélisation algébrique ) permettant de décrire et de résoudre des problèmes de haute complexité en utilisant une variété de paradigmes de résolution bien connus pour les problèmes combinatoires, notamment la programmation par contraintes, la programmation en nombres entiers, SAT et SMT.

Suivant le paradigme de la programmation par contraintes, dans MiniZinc, un problème est spécifié en termes de valeurs connues (paramètres), de valeurs inconnues (variables de décision) et de la relation (contraintes) entre ces valeurs. MiniZinc promeut l'utilisation de contraintes globales pour modéliser des structures connues. Ces contraintes globales améliorent la clarté du modèle et permettent aux solveurs d'utiliser la méthode la plus efficace pour exploiter la structure. Une instance de problème MiniZinc est traduite (ou aplatie ) à un niveau où elle ne prend en charge que les contraintes prises en charge par le solveur cible, puis transmise à ce dernier dans son format préféré. Actuellement, MiniZinc peut communiquer avec les solveurs via son propre format « FlatZinc » ou des fichiers .nl.

Un des principaux avantages de MiniZinc est la possibilité d'utiliser différents solveurs, même partir de la même instance MiniZinc. MiniZinc prend en charge de nombreux solveurs, open source et commerciaux, notamment CBC, Choco, Chuffed, HiGHS, Gurobi, IPOPT et OR-Tools.

MiniZinc est interopérable avec d'autres langages tels que R et Python.

Langage Le modèle MiniZinc suivant peut être utilisé pour résoudre le célèbre puzzle des n -reines :include "all_different.mzn"; % Include all_different global

int: n = 8; % The number of queens. (parameter)

array [1..n] of var 1..n: q; % La hauteur des reines sur l'échiquier. (variable de décision)

% Aucune reine ne peut être dans une position où elle peut capturer une autre reine. (contraintes) constraint all_different(q); constraint all_different(i in 1..n)(q[i] + i); constraint all_different(i in 1..n)(q[i] - i);

Références

Liens externes

Catégorie:Langage de script Catégorie:Logiciel de calcul formel Catégorie:Logiciel de calcul numérique