Затмение - ECLiPSe
изначальный выпуск | 1992 |
---|---|
Стабильный выпуск | 7.0 (22 января 2018 г. ) |
Написано в | C, Пролог |
Операционная система | Кроссплатформенность |
Доступно в | английский |
Тип | Программирование логики ограничений |
Лицензия | MPL |
Интернет сайт | затмение |
Затмение[1] программная система для разработки и развертывания Программирование ограничений приложения, например в областях оптимизация, планирование, планирование, распределение ресурсов, расписание, транспорт и т. д. он также подходит для обучения большинству аспектов комбинаторный решение проблем, напримермоделирование проблемы, программирование в ограничениях, математическое программирование, и методы поиска. Он содержит библиотеки решателя ограничений, высокоуровневый язык моделирования и управления (надмножество Пролог ), интерфейсы со сторонними решателями, интегрированная среда разработки и интерфейсы для встраивания в среду хоста.
ECLiPSe разрабатывался до 1995 г. Европейский центр исследований компьютерной индустрии (ECRC) в Мюнхен а затем до 2005 г. в Центре планирования и управления ресурсами на ул. Имперский колледж Лондон (IC-Parc). Он был куплен Cisco Systems. В сентябре 2006 года он был выпущен как программное обеспечение с открытым исходным кодом под эквивалентом Общественная лицензия Mozilla, и теперь размещается на SourceForge.
Язык
Язык ECLiPSe[2] в значительной степени обратно совместим с Пролог и поддерживает разные диалекты, в том числе ISO Prolog. Благодаря декларативному характеру его можно использовать как язык моделирования для описания проблем и общего назначения язык программирования.
Помимо основных типов данных Пролога, доступны следующие: струны,целое число неограниченной точности и рациональный числа и интервалы с плавающей запятой.Множество синтаксис и структуры с именами полей также поддерживаются и особенно полезны при моделировании ограничений.
А логическая итерационная конструкция[3] устраняет необходимость в самых простых рекурсия узоры.
ECLiPSe предоставляет комплексные возможности[2] реализовать управляемый данными контролировать поведение. К ним относятся декларативные предложения задержки, а также примитивы для метапрограммированного управления, такие как явная приостановка цели, гибкие средства запуска и приоритеты выполнения. приписанная переменная тип данных, это ключ ко многим расширениям базовогологическое программирование язык, включая всю функциональность на основе ограничений. система вызывает определяемые пользователем обработчики событий, когда встречает приписанные переменные в определенных контекстах, например объединение.
В модульная система управляет видимостью предикатов, нелогических хранилищ, преобразований источников и настроек синтаксиса. Интерфейсы модулей могут быть расширены и ограничены, а модули, написанные на разных диалектах языка, могут быть смешаны в одном приложении.
Программы могут содержать структурированные комментарии, на основе которых может быть создана справочная документация.
Библиотеки
ECLiPSe предоставляет несколько библиотек ограничение решатели, которые можно использовать в прикладных программах:
Арифметические ограничения в конечных областях, ограничения конечного множества, обобщенное распространение, интервальное рассуждение по нелинейным ограничениям, интерфейсы с внешними симплекс решатели, правила обработки ограничений (CHR) и многое другое.
Другие библиотеки реализуют такие методы поиска, как разветвленный, поиск по ремонту, поиск ограниченного несоответствия.
ECLiPSe взаимодействует с внешними решателями, в частности с МОНЕТА-ИЛИ, CPLEX, Гуроби и Xpress-MP решатели линейного и смешанно-целочисленного программирования,[4]и Gecode библиотека решателя.
Библиотеки совместимости для ISO Prolog[5] и другие Пролог диалекты (C-Prolog, Quintus, SICStus, SWI-Prolog ) позволяют повторно использовать библиотеки, написанные на этих диалектах.
Другие служебные библиотеки, включая ряд популярных всеобщее достояние единицы, включены в дистрибутив.
Архитектура системы
Система включает инкрементный компилятор, который переводит исходный код в виртуальная машина кода. Компилятор оптимизирует выбор индекса, порядок унификации, встраивание управляющие конструкции и учитывать информацию о режиме.
Система времени выполнения реализует виртуальная машина, автоматическое управление памятью с вывоз мусора стеков и словарей, обработки событий и выполнения на основе данных. Версии ECLiPSe реализуют OR-параллелизм.
Компоненты ECLiPSe могут быть интегрированы в программное обеспечение через низкоуровневую C или же C ++ интерфейс или через высокоуровневые интерфейсы к Ява и Tcl.
внешняя ссылка
- Официальный веб-сайт
- Затмение на SourceForge.net
- Программирование логики ограничений с использованием ECLiPSe, учебник Кшиштофа Апта и Марка Уоллеса
- Краткое и мягкое руководство по программированию логики ограничений с помощью ECLiPSe, учебник Антония Недерлинского
- Веб-сайт электронного обучения ECLiPSE (с видеоуроками)
Рекомендации
- ^ «Веб-сайт ECLiPSe». eclipseclp.org.
- ^ а б Шимпф, Иоахим; Шен, Киш. «ECLiPSe - от LP до CLP». Теория и практика логического программирования. 12: 127–156. arXiv:1012.4240. Дои:10.1017 / S1471068411000469.
- ^ Шимпф, Иоахим (2002). Логические циклы (PDF). Логическое программирование, 18-я Международная конференция, ICLP 2002, Копенгаген, Дания, 29 июля - 1 августа 2002 г. Материалы: Springer-Verlag. С. 224–238. ISBN 978-3-540-45619-3.CS1 maint: location (связь)
- ^ К. Шен; J. Schimpf. Eplex: Использование решателей математического программирования для программирования логики в ограничениях. Принципы и практика программирования ограничений - CP 2005: 11-я международная конференция, CP 2005, Ситжес: Springer. С. 622–636. Дои:10.1007/11564751_46. ISBN 978-3-540-32050-0.CS1 maint: location (связь)
- ^ «Декларация соответствия ECLiPSe ISO». eclipseclp.org.