Articulo de referencia

MiniZinc

MiniZinc [ 1 ] es un lenguaje de modelado de restricciones (o lenguaje de modelado algebraico ) para describir y resolver problemas de alta complejidad utilizando una variedad d...

MiniZinc [ 1 ] es un lenguaje de modelado de restricciones (o lenguaje de modelado algebraico ) para describir y resolver problemas de alta complejidad utilizando una variedad de paradigmas de resolución bien conocidos para problemas combinatorios, incluidos la programación de restricciones , la programación entera , SAT y SMT .

Siguiendo el paradigma de programación con restricciones , en MiniZinc un problema se especifica en términos de valores conocidos (parámetros), valores desconocidos (variables de decisión) y la relación (restricciones) entre estos valores. MiniZinc promueve el uso de restricciones globales para modelar estructuras bien conocidas en los problemas. Estas restricciones globales mejoran la claridad del modelo y permiten a los solucionadores utilizar el método más eficaz para explotar la estructura. Una instancia de problema de MiniZinc se traduce (o aplana ) a un nivel en el que solo admite restricciones compatibles con el solucionador de destino y, a continuación, se le proporciona al solucionador utilizando su formato preferido. Actualmente, MiniZinc puede comunicarse con los solucionadores utilizando su propio formato "FlatZinc" o archivos .nl .

Una gran ventaja de MiniZinc es la posibilidad de usar diferentes solucionadores desde la misma instancia de MiniZinc. MiniZinc admite muchos solucionadores, tanto de código abierto como software comercial , incluidos CBC, [ 2 ] Choco, [ 3 ] Chuffed, HiGHS , Gurobi , IPOPT y OR-Tools .

MiniZinc es interoperable con otros lenguajes como R [ 4 ] y Python . [ 5 ]

Idioma

El siguiente modelo de MiniZinc se puede utilizar para resolver el famoso rompecabezas de las n reinas :

include "all_different.mzn"; % Incluir la variable global all_different int: n = 8; % El número de reinas. (parámetro) matriz [1..n] de var 1..n: q; % La altura de las reinas en el tablero. (variable de decisión) Ninguna reina puede estar en una posición desde la que pueda capturar a otra reina. (restricciones) restricción all_different(q); restricción all_different(i en 1..n)(q[i] + i); restricción all_different(i en 1..n)(q[i] - i); 

Referencias

  1. Nethercote, Nicholas; Stuckey, Peter J.; Becket, Ralph; Brand, Sebastian; Duck, Gregory J.; Tack, Guido (2007). "MiniZinc: Hacia un lenguaje de modelado CP estándar" . En Bessière, Christian (ed.). Principios y práctica de la programación con restricciones – CP 2007. Lecture Notes in Computer Science. Berlín, Heidelberg: Springer. 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 Solver" . projects.coin-or.org . Consultado el 14 de septiembre de 2020 .
  3. "Choco-solver" . Choco-solver . Consultado el 14 de septiembre de 2020 .
  4. "Introducción" .
  5. "Minizinc Python" .
  • Sitio web oficialEdita esto en Wikidata
  • MiniZinc en GitHub
Obtenido de " https://en.wikipedia.org/w/index.php?title=MiniZinc&oldid=1344248528 "