stringtranslate.com

Затмение

ECLiPSe — это программная система для разработки и внедрения приложений программирования логики ограничений , например, в областях оптимизации , планирования , составления графиков , распределения ресурсов , расписания, транспорта и т. д. Она также подходит для обучения большинству аспектов комбинаторного решения задач, например, моделирование проблем , программирование в ограничениях , математическое программирование и методы поиска . [1] Он содержит библиотеки решателей ограничений , высокоуровневый язык моделирования и управления (расширение Пролога ), интерфейсы для сторонних решателей, интегрированную среду разработки и интерфейсы для встраивания в хост-среды.

ECLiPSe разрабатывался до 1995 года в Европейском исследовательском центре компьютерной индустрии (ECRC) в Мюнхене , а затем до 2005 года в Центре планирования и управления ресурсами Имперского колледжа Лондона (IC-Parc). Его приобрела компания Cisco Systems . В сентябре 2006 года оно было выпущено как программное обеспечение с открытым исходным кодом под эквивалентом общественной лицензии Mozilla и теперь размещено на SourceForge .

Язык

Язык ECLiPSe [2] в значительной степени обратно совместим с Прологом и поддерживает различные диалекты, включая ISO Prolog . Благодаря своей декларативности его можно использовать как в качестве языка моделирования для описания проблем, так и в качестве языка программирования общего назначения .

Помимо основных типов данных Пролога, доступны следующие: строки , целые и рациональные числа неограниченной точности , а также интервалы с плавающей запятой . Синтаксис массивов и структуры с именами полей также поддерживаются и особенно полезны при моделировании ограничений.

Логическая итерационная конструкция [3] устраняет необходимость в большинстве простых шаблонов рекурсии .

ECLiPSe предоставляет комплексные возможности [2] для реализации управления , управляемого данными . К ним относятся декларативные условия задержки, а также примитивы метапрограммного управления, такие как явная приостановка достижения цели, гибкие средства запуска и приоритеты выполнения. Вместе с атрибутивным переменным типом данных это ключ ко многим расширениям базового языка логического программирования , включая все функциональные возможности, основанные на ограничениях. Система вызывает определяемые пользователем обработчики событий, когда она встречает атрибутированные переменные в определенных контекстах, например при унификации.

Система модулей контролирует видимость предикатов, нелогических хранилищ, преобразований источника и настроек синтаксиса. Интерфейсы модулей можно расширять и ограничивать, а модули, написанные на разных диалектах языков, можно смешивать в одном приложении.

Программы могут содержать структурированные комментарии, на основе которых можно создавать справочную документацию.

Библиотеки

ECLiPSe предоставляет несколько библиотек решателей ограничений , которые можно использовать в прикладных программах:

Арифметические ограничения для конечных областей, ограничения конечного множества, обобщенное распространение, интервальные рассуждения над нелинейными ограничениями, интерфейсы для внешних симплексных решателей, правила обработки ограничений (CHR) и многое другое.

Другие библиотеки реализуют такие методы поиска, как поиск по ветвям и границам , поиск на основе восстановления, поиск с ограниченным несоответствием.

ECLiPSe взаимодействует с внешними решателями, в частности с решателями COIN-OR , CPLEX , Gurobi и Xpress-MP для линейного и смешанно-целочисленного программирования [4] и библиотекой решателей Gecode .

Библиотеки совместимости для ISO Prolog [5] и других диалектов Пролога (C-Prolog, Quintus , SICStus , SWI-Prolog ) позволяют повторно использовать библиотеки, написанные на этих диалектах.

В дистрибутив включены и другие служебные библиотеки, в том числе ряд популярных общедоступных .

Архитектура системы

Система включает в себя инкрементный компилятор, который преобразует исходный код в код виртуальной машины . Компилятор оптимизирует выбор индекса, порядок унификации, встраивание управляющих конструкций и может учитывать информацию о режиме.

Система времени выполнения реализует виртуальную машину , автоматическое управление памятью со сборкой мусора стеков и словаря, обработку событий и выполнение, управляемое данными. Версии ECLiPSe реализуют ИЛИ- параллелизм .

Компоненты ECLiPSe можно интегрировать в программное обеспечение через низкоуровневый интерфейс C или C++ или через высокоуровневые интерфейсы для Java и Tcl .

Внешние ссылки

Рекомендации

  1. ^ "Веб-сайт ECLiPSe" . eclipseclp.org .
  2. ^ аб Шимпф, Иоахим; Шен, Киш (2012). «ECLiPSe - от LP к CLP». Теория и практика логического программирования . 12 (1–2): 127–156. arXiv : 1012.4240 . дои : 10.1017/S1471068411000469. S2CID  11827081.
  3. ^ Шимпф, Иоахим (1 августа 2002 г.). Логические циклы (PDF) . Логическое программирование, 18-я Международная конференция, ICLP 2002, Копенгаген, Дания, 29 июля - 1 августа 2002 г. Труды: Springer-Verlag. стр. 224–238. ISBN 978-3-540-45619-3.{{cite book}}: CS1 maint: местоположение ( ссылка )
  4. ^ Шен, К.; Шимпф, Дж. (2005). «Eplex: использование решателей математического программирования для программирования логики с ограничениями». Принципы и практика программирования с ограничениями - CP 2005 . Конспекты лекций по информатике. Том. 3709. Принципы и практика программирования с ограничениями - CP 2005: 11-я Международная конференция, CP 2005, Ситжес: Springer. стр. 622–636. дои : 10.1007/11564751_46. ISBN 978-3-540-32050-0.{{cite book}}: CS1 maint: местоположение ( ссылка )
  5. ^ «Декларация соответствия ECLiPSe ISO» . eclipseclp.org .