ECLiPSe
ECLiPSe초기 릴리즈 | 전( |
---|---|
안정된 릴리스 | 7.0(2018년 1월 , 전( |
기입처 | C, 프롤로그 |
운영 체제 | 크로스 플랫폼 |
이용가능기간: | 영어 |
유형 | 제약 로직 프로그래밍 |
면허증. | MPL |
웹 사이트 | eclipseclp |
ECLiPSe는[1] 최적화, 계획, 스케줄링, 자원 할당, 시간표 설정, 전송 등의 분야에서 제약 프로그래밍 애플리케이션의 개발과 배치를 위한 소프트웨어 시스템입니다.또한 문제 모델링, 제약 조건 프로그래밍, 수학적 프로그래밍 및 검색 기술과 같은 조합 문제 해결의 대부분의 측면을 가르치는 데 적합합니다.제약 해결사 라이브러리, 고급 모델링 및 제어 언어(Prolog의 상위 집합), 타사 해결사와의 인터페이스, 통합 개발 환경 및 호스트 환경에 내장하기 위한 인터페이스를 포함합니다.
ECLiPSe는 1995년까지 European Computer에서 개발되었습니다.뮌헨에 있는 산업연구센터(ECRC)를 거쳐 2005년까지 임페리얼 칼리지 런던(IC-Parc)의 계획 및 자원 관리 센터(Centre for Planning and Resource Control)를 운영했습니다.시스코 시스템즈가 구입했습니다.2006년 9월에는 Mozilla Public License와 동등한 오픈소스 소프트웨어로 출시되어 현재 Source Forge에서 호스팅되고 있습니다.
언어
그 ECLiPSe language[2] 크게 프롤로그와 ISO프롤로그를 포함한 사투리를 지지하고 호환이 가능한 있다.는 선언적 본성에 고마워, 문제의 설명을 위한 모델링 언어 및 범용 프로그래밍 언어로 사용할 수 있다.
기본적인 프롤로그 데이터 형식을 넘어, 다음:문자열, 무한한 정수하고 합리적인 숫자 및 부동 소수 점의 간격으로 이용할 수 있다.필드의 이름과 배열 문장론 및 구조 또한 특히 제약 약품에 의한 모델업에 유용한 지지를 받고 있다.
논리 반복 구성을[3] 사용하면 가장 단순한 재귀 패턴이 필요하지 않습니다.
ECLiPSe는 데이터 중심 제어 동작을 구현하기 위한 포괄적인[2] 기능을 제공합니다.여기에는 명시적 목표 보류, 유연한 트리거 기능 및 실행 우선 순위와 같은 메타 프로그램 제어에 대한 기본 요소뿐만 아니라 선언적 지연 조항이 포함된다.속성 변수 데이터 유형과 함께, 이것은 모든 제약 조건 기반 기능을 포함하여 기본 논리 프로그래밍 언어에 대한 많은 확장의 핵심입니다.시스템은 특정 컨텍스트(예: 통일)에서 속성 변수를 발견하면 사용자 정의 가능한 이벤트 핸들러를 호출합니다.
모듈 시스템은 술어, 비논리 저장소, 소스 변환 및 구문 설정의 가시성을 제어합니다.모듈 인터페이스는 확장 및 제한할 수 있으며 다른 언어 방언으로 작성된 모듈을 하나의 애플리케이션 내에서 혼재시킬 수 있습니다.
프로그램에는 참조 문서를 생성할 수 있는 구조화된 코멘트가 포함될 수 있습니다.
라이브러리
ECLiPSe는 응용 프로그램에서 사용할 수 있는 제약 해결사의 여러 라이브러리를 제공합니다.
유한 도메인에 대한 산술적 제약, 유한 집합 제약, 일반화 전파, 비선형 제약에 대한 간격 추론, 외부 심플렉스 솔버에 대한 인터페이스, 제약 처리 규칙(CHR) 등.
다른 라이브러리에서는 분기 및 경계, 복구 기반 검색, 제한된 불일치 검색과 같은 검색 방법을 구현합니다.
ECLiPSe는 외부 솔버, 특히 COIN-OR, CPLEX 및 Xpress-MP 선형 및 혼합 정수 프로그래밍 [4]솔버 및 Gecode 솔버 라이브러리에 인터페이스합니다.
ISO Prolog[5] 및 기타 Prolog 방언(C-Prolog, Quintus, SICStus, SWI-Prolog) 호환성 라이브러리를 통해 해당 방언으로 작성된 라이브러리를 재사용할 수 있습니다.
다수의 인기 있는 퍼블릭도메인 라이브러리를 포함한 기타 유틸리티 라이브러리가 배포에 포함됩니다.
시스템 건축
시스템에는 소스 코드를 가상 시스템 코드로 변환하는 증분 컴파일러가 포함되어 있습니다.컴파일러는 인덱스 선택, 통합 순서, 제어구조의 인라인화를 최적화하고 모드 정보를 고려할 수 있습니다.
런타임 시스템은 가상 시스템, 스택 및 사전 가비지 수집을 통한 자동 메모리 관리, 이벤트 처리 및 데이터 기반 실행을 구현합니다.ECLiPSe 버전은 OR 병렬주의를 구현합니다.
ECLiPSe 컴포넌트는 저레벨 C 또는 C++ 인터페이스 또는 Java 및 Tcl에 대한 고레벨 인터페이스를 통해 소프트웨어에 통합할 수 있습니다.
외부 링크
- 공식 웹사이트
- 소스 포지의 ECLiPSe
- Krzystof Apt와 Mark Wallace의 교과서 ECLiPSe를 이용한 구속 논리 프로그래밍
- Antoni Niederliskiski의 교과서 ECLiPSe를 통한 구속 논리 프로그래밍의 빠르고 부드러운 가이드
- ECLiPSE 이러닝 웹 사이트(비디오 튜토리얼 포함)
레퍼런스
- ^ "ECLiPSe Web Site". eclipseclp.org.
- ^ a b Schimpf, Joachim; Shen, Kish (2012). "ECLiPSe - from LP to CLP". Theory and Practice of Logic Programming. 12 (1–2): 127–156. arXiv:1012.4240. doi:10.1017/S1471068411000469. S2CID 11827081.
- ^ Schimpf, Joachim (2002). Logical Loops (PDF). Logic Programming, 18th International Conference, ICLP 2002, Copenhagen, Denmark, July 29 - August 1, 2002 Proceedings: Springer-Verlag. pp. 224–238. ISBN 978-3-540-45619-3.
{{cite book}}
: CS1 유지보수: 위치(링크) - ^ K. Shen; J. Schimpf (2005). "Eplex: Harnessing Mathematical Programming Solvers for Constraint Logic Programming". Principles and Practice of Constraint Programming - CP 2005. Lecture Notes in Computer Science. Vol. 3709. Principles and Practice of Constraint Programming - CP 2005: 11th International Conference, CP 2005, Sitges: Springer. pp. 622–636. doi:10.1007/11564751_46. ISBN 978-3-540-32050-0.
{{cite book}}
: CS1 유지보수: 위치(링크) - ^ "ECLiPSe ISO conformity declaration". eclipseclp.org.