МиниЦинк
Парадигма | Программирование ограничений / Логическое программирование |
---|---|
Разработчик | Университет Монаша |
Впервые появился | 2 мая 2009 г |
Стабильная версия | 2.8.5 / 3 июня 2024 г |
Язык реализации | С++ |
ТЫ | Linux , MacOS и Windows |
Лицензия | МПЛв2 |
Расширения имен файлов | .mzn, .dzn, .fzn |
Веб-сайт | www |
Под влиянием | |
Цинк |
МиниЦинк [1] — это язык моделирования ограничений (или язык алгебраического моделирования ) для описания и решения задач высокой сложности с использованием множества известных парадигм решения комбинаторных задач, включая программирование в ограничениях , целочисленное программирование , генерацию отложенных предложений, SAT и SMT .
Следуя парадигме программирования с ограничениями , в MiniZinc проблема определяется с точки зрения известных значений (параметров), неизвестных значений (переменных решения) и отношений (ограничений) между этими значениями. MiniZinc продвигает использование глобальных ограничений для моделирования известных структур в задачах. Эти глобальные ограничения повышают ясность модели и позволяют решателям использовать наиболее эффективный метод использования структуры. Экземпляр задачи MiniZinc транслируется (или сглаживается ) до уровня, на котором он поддерживает только ограничения, поддерживаемые целевым решателем, а затем передается решателю в предпочтительном формате. В настоящее время MiniZinc может взаимодействовать с решателем, используя собственный формат FlatZinc или .nl файлы .
Большим преимуществом MiniZinc является возможность использовать разные решатели и даже разные решатели из одного и того же экземпляра MiniZinc. MiniZinc поддерживает множество решателей, как с открытым исходным кодом , так и с коммерческим программным обеспечением , включая CBC, [2] Чоко, [3] Раздраженный, [4] CPLEX , FICO Xpress , кодированный, [5] Гуроби , IPOPT и OR-Tools .
MiniZinc совместим с другими языками, такими R. как [6]
Язык
[ редактировать ]Следующая модель MiniZinc может быть использована для решения знаменитой о n головоломки -ферзях :
include "all_different.mzn"; % Include all_different globalint: n = 8; % The number of queens. (parameter)array [1..n] of var 1..n: q; % The height of the queens on the board. (decision variable)% No queen can be in a position where it can capture another queen. (constraints)constraint all_different(q);constraint all_different(i in 1..n)(q[i] + i);constraint all_different(i in 1..n)(q[i] - i);
Ссылки
[ редактировать ]- ^ Нетеркот, Николас; Стаки, Питер Дж.; Беккет, Ральф; Бранд, Себастьян; Дак, Грегори Дж.; Тэк, Гвидо (2007). Бессьер, Кристиан (ред.). «MiniZinc: на пути к стандартному языку CP-моделирования» . Принципы и практика программирования с ограничениями – CP 2007 . Конспекты лекций по информатике. Берлин, Гейдельберг: Springer: 529–543. дои : 10.1007/978-3-540-74970-7_38 . ISBN 978-3-540-74970-7 .
- ^ «МОНЕТА-ИЛИ MIP-решатель ветвей и разрезов» . project.coin-or.org . Проверено 14 сентября 2020 г.
- ^ «Шоколадница» . Шоколадник . Проверено 14 сентября 2020 г.
- ^ chuffed/chuffed , Chuffed, 11 сентября 2020 г. , получено 14 сентября 2020 г.
- ^ «GECODE — открытый, бесплатный и эффективный набор инструментов для решения ограничений» . www.gecode.org . Проверено 14 сентября 2020 г.
- ^ https://cran.r-project.org/web/packages/rminizinc/vignettes/R_MiniZinc.html
Внешние ссылки
[ редактировать ]- Официальный сайт
- МиниЦинк на GitHub
- МиниЦинк на X
- Языки числового программирования
- Программное обеспечение для математической оптимизации
- Числовое программное обеспечение
- Системы компьютерной алгебры
- Математическое моделирование
- Языки сценариев
- Текстоориентированные языки программирования
- Алгебраические языки моделирования
- Аналитика цепочки поставок
- Управление цепочками поставок