ECLiPSe [1] es un sistema de software para el desarrollo y despliegue de aplicaciones de programación de restricciones , por ejemplo, en las áreas de optimización , planificación , programación , asignación de recursos , horarios, transporte, etc. También es adecuado para enseñar la mayoría de los aspectos de la resolución combinatoria de problemas. por ejemplo, el modelado problema , programación con restricciones , programación matemática y técnicas de búsqueda . Contiene bibliotecas de resolución de restricciones, un lenguaje de control y modelado de alto nivel (un superconjunto de Prolog), interfaces para solucionadores de terceros, un entorno de desarrollo integrado e interfaces para incrustar en entornos host.
Versión inicial | 1992 |
---|---|
Lanzamiento estable | 7.0 (22 de enero de 2018 ) |
Escrito en | C, prólogo |
Sistema operativo | Multiplataforma |
Disponible en | inglés |
Tipo | Programación lógica de restricciones |
Licencia | MPL |
Sitio web | eclipseclp |
ECLiPSe se desarrolló hasta 1995 en el Centro Europeo de Investigación de la Industria de la Computación (ECRC) en Munich y luego hasta 2005 en el Centro de Planificación y Control de Recursos del Imperial College London (IC-Parc). Fue comprado por Cisco Systems . En septiembre de 2006, fue lanzado como software de código abierto bajo un equivalente de la Licencia Pública de Mozilla y ahora está alojado en SourceForge .
Idioma
El lenguaje ECLiPSe [2] es en gran parte compatible con Prolog y admite diferentes dialectos, incluido ISO Prolog . Gracias a su naturaleza declarativa, se puede utilizar tanto como lenguaje de modelado para la descripción de problemas como como lenguaje de programación de propósito general .
Más allá de los tipos de datos básicos de Prolog, están disponibles los siguientes: cadenas , números enteros y racionales de precisión ilimitada e intervalos de punto flotante . La sintaxis de matrices y las estructuras con nombres de campo también son compatibles y son especialmente útiles en el modelado de restricciones.
Una construcción de iteración lógica [3] elimina la necesidad de patrones de recursividad más simples .
ECLiPSe proporciona instalaciones integrales [2] para implementar el comportamiento de control basado en datos . Estos incluyen cláusulas de demora declarativas, así como primitivas para el control metaprogramado, como suspensión explícita de objetivos, instalaciones de activación flexibles y prioridades de ejecución. Junto con el tipo de datos de variable atribuida , esta es la clave para muchas extensiones del lenguaje de programación lógica básica , incluida toda la funcionalidad basada en restricciones. El sistema llama a los manejadores de eventos definibles por el usuario cuando encuentra variables atribuidas en ciertos contextos, por ejemplo, unificación.
El sistema de módulos controla la visibilidad de predicados, almacenes no lógicos, transformaciones de fuente y configuraciones de sintaxis. Las interfaces de los módulos se pueden ampliar y restringir, y los módulos escritos en diferentes dialectos de idiomas se pueden mezclar dentro de una aplicación.
Los programas pueden contener comentarios estructurados a partir de los cuales se puede generar documentación de referencia.
Bibliotecas
ECLiPSe proporciona varias bibliotecas de solucionadores de restricciones que se pueden utilizar en programas de aplicación:
Restricciones aritméticas sobre dominios finitos, restricciones de conjuntos finitos, propagación generalizada, razonamiento de intervalo sobre restricciones no lineales, interfaces para solucionadores simples externos , reglas de manejo de restricciones (CHR) y más.
Otras bibliotecas implementan métodos como buscar -and-bound rama , búsqueda basada en la reparación, Búsqueda discrepancia limitada.
ECLiPSe interactúa con solucionadores externos, en particular los solucionadores de programación COIN-OR , CPLEX , Gurobi y Xpress-MP lineales y enteros mixtos, [4] y la biblioteca de solucionadores Gecode .
Las bibliotecas de compatibilidad para ISO Prolog [5] y otros dialectos de Prolog (C-Prolog, Quintus, SICStus , SWI-Prolog ) permiten la reutilización de bibliotecas escritas en esos dialectos.
Otras bibliotecas de utilidades, incluidas varias de dominio público populares , se incluyen en la distribución.
Arquitectura del sistema
El sistema incluye un compilador incremental que traduce el código fuente en código de máquina virtual . El compilador optimiza la selección de índices, el orden de unificación, la integración de las construcciones de control y puede tener en cuenta la información del modo.
El sistema de tiempo de ejecución implementa la máquina virtual , la administración automática de memoria con recolección de basura de pilas y diccionario, manejo de eventos y ejecución basada en datos. Las versiones de ECLiPSe implementan el paralelismo OR .
Los componentes de ECLiPSe se pueden integrar en el software a través de una interfaz C o C ++ de bajo nivel , o mediante interfaces de alto nivel para Java y Tcl .
enlaces externos
- Página web oficial
- ECLiPSe en SourceForge.net
- Programación lógica de restricciones usando ECLiPSe , libro de texto de Krzysztof Apt y Mark Wallace
- Una guía rápida y sencilla para la programación lógica de restricciones a través de ECLiPSe , libro de texto de Antoni Niederliński
- Sitio web de eLearning de ECLiPSE (con tutoriales en video)
Referencias
- ^ "Sitio web de ECLiPSe" . eclipseclp.org .
- ^ a b Schimpf, Joachim; Shen, Kish (2012). "ECLiPSe - de LP a CLP". Teoría y práctica de la programación lógica . 12 (1-2): 127-156. arXiv : 1012.4240 . doi : 10.1017 / S1471068411000469 . S2CID 11827081 .
- ^ Schimpf, Joachim (2002). Bucles lógicos (PDF) . Programación lógica, 18ª Conferencia Internacional, ICLP 2002, Copenhague, Dinamarca, 29 de julio - 1 de agosto de 2002 Actas: Springer-Verlag. págs. 224-238. ISBN 978-3-540-45619-3.Mantenimiento de CS1: ubicación ( enlace )
- ^ K. Shen; J. Schimpf (2005). "Eplex: aprovechar los solucionadores de programación matemática para la programación lógica de restricciones". Principios y práctica de la programación de restricciones - CP 2005 . Apuntes de conferencias en Ciencias de la Computación. 3709 . Principios y práctica de la programación de restricciones - CP 2005: XI Congreso Internacional, CP 2005, Sitges: Springer. págs. 622–636. doi : 10.1007 / 11564751_46 . ISBN 978-3-540-32050-0.Mantenimiento de CS1: ubicación ( enlace )
- ^ "Declaración de conformidad ECLiPSe ISO" . eclipseclp.org .