Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Язык [ править ]

Язык ECLiPSe [2] в значительной степени обратно совместим с Prolog и поддерживает различные диалекты, включая 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 реализуют OR- параллелизм .

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

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • ECLiPSe на SourceForge.net
  • Программирование логических ограничений с использованием ECLiPSe , учебник Кшиштофа Апта и Марка Уоллеса
  • Краткое и мягкое руководство по программированию логики в ограничениях с помощью ECLiPSe , учебник Антони Нидерлински
  • Веб-сайт электронного обучения ECLiPSE (с видеоуроками)

Ссылки [ править ]

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