CPLEX
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
- 1. 개요
- 2. 역사
- 3. 주요 기능
- 4. 버전별 릴리스 기록
- 4.1. 버전 22.1.1 (2022년 12월)
- 4.2. 버전 22.1.0 (2022년 3월)
- 4.3. 버전 20.1 (2020년 12월)
- 4.4. 버전 12.10 (2019년 12월)
- 4.5. 버전 12.9 (2019년 3월)
- 4.6. 버전 12.8 (2017년 12월)
- 4.7. 버전 12.7 (2016년 11월)
- 4.8. 버전 12.6.2 (2015년 6월)
- 4.9. 버전 12.6 (2013년 12월)
- 4.10. 버전 12.5 (2012년 10월)
- 4.11. 버전 12.4 (2011년 11월)
- 4.12. 버전 12.3 (2011년 6월)
- 4.13. 버전 12.2 (2010년 6월)
- 4.14. 버전 12.0 (2009년 4월)
- 4.15. 버전 11.0 (2007년 10월)
- 4.16. 버전 10.0 (2006년 1월)
- 4.17. 버전 9.0 (2003년 12월)
- 4.18. 버전 8.0 (2002년 7월)
- 4.19. 버전 7.5 (2001년 12월)
- 4.20. 버전 7.0 (2000년 10월)
- 4.21. 버전 6.5 (1999년 3월)
- 4.22. 버전 6.0 (1998년 4월)
- 4.23. 버전 5.0 (1997년 9월)
- 4.24. 버전 4.0.5 (1996년 3월)
- 4.25. 버전 4.0 (1995년 12월)
- 4.26. 버전 3.0.8 (1995년 3월)
- 4.27. 버전 3.0 (1994년 4월)
- 4.28. 버전 2.1 (1993년 3월)
- 4.29. 버전 2.0 (1992년 4월)
- 4.30. 버전 1.2 (1991)
- 4.31. 버전 1.0 (1988)
- 참조
1. 개요
CPLEX는 C 언어로 구현된 최적화 프로그램으로, 선형 계획법 문제를 해결하기 위해 개발되었다. 1988년 로버트 E. 빅스비에 의해 개발되었고, CPLEX Optimization Inc.를 통해 상업적으로 판매되었다. 이후 ILOG에 인수되었다가 2009년 IBM에 인수되었으며, 현재까지 IBM에서 개발을 이어가고 있다. CPLEX는 정수 계획법, 선형 계획법, 이차 계획법 등 다양한 최적화 문제 유형을 지원하며, C++, C#, Java, Python 등 여러 프로그래밍 언어 인터페이스를 제공한다. 또한, AIMMS, AMPL, GAMS, OptimJ, TOMLAB 등 다양한 모델링 시스템과 연동하여 사용할 수 있다.
더 읽어볼만한 페이지
CPLEX - [IT 관련 정보]에 관한 문서 | |
---|---|
CPLEX 정보 | |
개발사 | IBM |
최신 릴리스 버전 | 20.1.0 |
장르 | 기술 컴퓨팅 |
라이선스 | 사유 |
웹사이트 | CPLEX 공식 웹사이트 |
2. 역사
CPLEX Optimizer는 C 프로그래밍 언어로 구현된 단순 방법에서 이름을 따왔다. 오늘날에는 다른 유형의 수학적 최적화도 지원하며 C 외에도 다른 인터페이스를 제공한다. CPLEX는 원래 로버트 E. 빅스비가 개발하였으며 1988년 그가 설립한 CPLEX Optimization Inc.에서 상업적으로 판매되었다. 1997년 ILOG에 인수되었고, 2009년 1월 ILOG가 IBM에 인수되면서[2] IBM의 제품이 되었다. CPLEX는 현재도 IBM에서 활발히 개발하고 있다.
2. 1. 초기 개발 (1988-1997)
로버트 E. 빅스비는 C 프로그래밍 언어를 기반으로 CPLEX Optimizer를 개발하고, 1988년 CPLEX Optimization Inc.를 설립하여 상용화하였다.[2] 1997년 ILOG에 인수되었으며, ILOG는 2009년 1월 IBM에 인수되었다.[2] CPLEX는 IBM에 의해 계속 활발히 개발되고 있다.2. 2. ILOG 인수 (1997-2009)
ILOG는 1997년에 CPLEX Optimization Inc.를 인수했으며,[2] 2009년 1월에 IBM에 인수되었다.[2]2. 3. IBM 인수 (2009-현재)
IBM은 2009년 1월 ILOG를 인수했으며,[2] CPLEX는 계속해서 IBM에 의해 활발히 개발되고 있다.3. 주요 기능
IBM ILOG CPLEX Optimizer는 다음과 같은 다양한 최적화 문제들을 해결하는 기능을 제공한다.[3]
- 선형 계획법 문제: 주/쌍대 단순법, 배리어 내점법 등을 사용하여 매우 큰 규모의 문제를 해결한다.[3]
- 정수 계획법 문제 해결[3]
- 이차 계획법 문제: 볼록 및 비볼록 이차 계획법 문제를 해결한다.[3]
- 이차 제약 문제: 볼록 이차 제약 문제 (이차 원뿔 계획법 또는 SOCP)를 해결한다.[3]
CPLEX Optimizer는 C++, C#, 자바, 파이썬 등 다양한 프로그래밍 언어를 지원하며, AIMMS, AMPL, GAMS 등과 같은 독립적인 모델링 시스템을 통해 접근할 수 있다. 또한, 디버깅 및 기타 목적을 위한 독립 실행형 Interactive Optimizer 실행 파일도 제공된다.[3]
3. 1. 지원하는 최적화 문제 유형
CPLEX는 다음과 같은 최적화 문제 유형들을 지원한다.- 선형 계획법(Linear Programming, LP): 주/쌍대 단순법, 배리어 내점법 등을 사용하여 매우 큰 규모의 LP 문제를 해결한다.[3]
- 정수 계획법(Integer Programming, IP): 정수 계획법 문제를 해결한다.
- 이차 계획법(Quadratic Programming, QP): 볼록 및 비볼록 이차 계획법 문제를 해결한다.
- 이차 제약 계획법(Quadratically Constrained Programming, QCP): 볼록 이차 제약 문제 (이차 원뿔 계획법, SOCP)를 해결한다.[3]
3. 2. 모델링 인터페이스
Concert Technology는 C++, C#, 자바 언어에 대한 인터페이스를 제공하는 모델링 레이어이다. C 인터페이스를 기반으로 하는 파이썬 언어 인터페이스도 있다. 마지막으로, 디버깅 및 기타 목적을 위한 독립 실행형 Interactive Optimizer 실행 파일이 제공된다.[3]3. 3. 모델링 시스템 지원
AIMMS, AMPL, GAMS, OptimJ, TOMLAB과 같은 독립적인 모델링 시스템을 통해 CPLEX Optimizer를 사용할 수 있다.[3] AMPL은 CPLEX CP Optimizer에 대한 인터페이스도 제공한다.[3]3. 4. 기타 기능
IBM ILOG CPLEX Optimization Studio는 수학적 프로그래밍을 위한 CPLEX Optimizer, 제약 프로그래밍을 위한 CP Optimizer[4], 최적화 프로그래밍 언어(OPL), 그리고 긴밀하게 통합된 IDE로 구성된다.4. 버전별 릴리스 기록
IBM이 ILOG를 인수하기 전, CPLEX 팀은 CPLEX의 릴리스 이력을 발표했다.[5] 다음은 CPLEX Optimizer의 주요 버전별 출시일과 주요 기능 개선 사항을 요약한 표이다.
버전 | 릴리스 날짜 | 주요 기능 |
---|---|---|
1.0 | 1988년 | 프라이멀 심플렉스 방법 |
1.2 | 1991년 | 듀얼 심플렉스 방법 및 CPLEX 혼합 정수 최적화기 지원 |
2.0 | 1992년 4월 | 성능 개선 |
2.1 | 1993년 3월 | CPLEX Presolve 알고리즘 도입 |
3.0 | 1994년 4월 | CPLEX 배리어 솔버 도입 |
3.0.8 | 1995년 3월 | 병렬 CPLEX 배리어 솔버 도입 |
4.0 | 1995년 12월 | 스레드 안전 애플리케이션을 허용하도록 고급 프로그래밍 인터페이스(API) 재설계 |
4.0.5 | 1996년 3월 | 병렬 CPLEX 혼합 정수 솔버 도입 |
5.0 | 1997년 9월 | 쉬운 C++ 통합을 위한 새로운 메모리 모델 도입 |
6.0 | 1998년 4월 | 프라이멀 및 듀얼 심플렉스 방법 및 CPLEX 배리어 최적화기에서 상당한 성능 개선 |
6.5 | 1999년 3월 | 프라이멀 및 듀얼 심플렉스 방법과 ILOG CPLEX 혼합 정수 최적화기에서 상당한 성능 개선 |
7.0 | 2000년 10월 | C++ 사용자를 위한 ILOG Concert Technology 추가 |
7.5 | 2001년 12월 | Java 사용자를 위한 ILOG Concert Technology 추가 |
8.0 | 2002년 7월 | MIP 성능 개선 및 혼합 정수 2차 프로그램 지원 |
9.0 | 2003년 12월 | 프라이멀 및 듀얼 심플렉스 방법 및 MIP 최적화기에서 성능 개선. .NET 사용자를 위한 ILOG Concert Technology와 2차 제약 프로그램 지원 |
10.0 | 2006년 1월 | 프라이멀 심플렉스 및 배리어 방법, MIP 최적화기에서 성능 개선. 지표 제약 조건 및 솔루션 연마 휴리스틱 도입, 비가용성 분석 개선 |
11.0 | 2007년 10월 | 혼합 정수 프로그래밍(MIP) 모델 성능 향상 및 병렬 MIP 최적화 개선. MIP 솔루션 풀 기능 및 성능 튜닝 유틸리티 도입 |
12.0 | 2009년 4월 | IBM이 ILOG를 인수한 후 첫 번째 버전. Python, MATLAB, 엑셀용 커넥터 포함, 결정적 병렬 배리어 포함 |
12.2 | 2010년 6월 | 루트 노드에서 더 많은 병렬 처리, 결정적 병렬 동시 LP 최적화, 일부 추가 배리어 성능 개선 및 MIP에서 조건이 불량한 기본 행렬을 진단하기 위한 추가 도구 도입 |
12.3 | 2011년 6월 | 64비트 인덱싱이 필요한 큰 비제로 개수 지원, 비볼록 QP의 지역 최적값 및 전역화 |
12.4 | 2011년 11월 | 결정적 시간 제한 지원, SOCP의 듀얼, Concert의 2차식 API, 모든 알고리즘에서 성능 개선 (특히 MIP) |
12.5 | 2012년 10월 | MIP 성능 개선, 성능 가변성을 해결하기 위한 임의 시드 매개변수, 원격 객체, QCP의 듀얼, 결정적 튜닝 도구 도입 |
12.6 | 2013년 12월 | 비볼록 QP 및 MIQP 지원, 분산 병렬 MIP 및 MIP의 루트 노드에서 더 많은 병렬 처리 |
12.6.2 | 2015년 6월 | 성능 개선 (주로 SOCP, MISOCP, 비볼록 QP), 클라우드 기반 최적화 지원 |
12.7 | 2016년 11월 | 자동화된 벤더스 분해, 모델링 지원 도구, 성능 가변성을 더 잘 평가하기 위한 runseeds 명령 도입 |
12.8 | 2017년 12월 | 일반 콜백, 디버깅을 용이하게 하는 API 레코더, subMIP 제어 매개변수, Download and Go 제공 |
12.9 | 2019년 3월 | 다목적 최적화 직접 지원, 콜백 기능 개선 |
12.10 | 2019년 12월 | MIP 성능 개선 및 버전 12.8에서 도입된 다른 일반 콜백에 대한 일반 브랜칭 콜백 추가 |
20.1 | 2020년 12월 | MIP 성능 개선, 새로운 emphasis MIP 5 모드 등 도입 |
22.1.0 | 2022년 3월 | Python 3.9 및 3.10 지원 추가, 새로운 솔버 매개변수 추가 |
22.1.1 | 2022년 12월 | Python 3.7 지원 중단, 새로운 솔버 매개변수 추가 |
4. 1. 버전 22.1.1 (2022년 12월)
2022년 12월에 CPLEX 버전 22.1.1이 릴리스되었다. 이 버전에서는 Python 3.7 지원이 중단되었고, 새로운 솔버 매개변수가 추가되었다.[6]4. 2. 버전 22.1.0 (2022년 3월)
CPLEX 버전 22.1.0은 2022년 3월에 릴리스되었다.[7] 이 버전에서는 Python 3.9 및 3.10 지원이 추가되었고, 새로운 솔버 매개변수가 추가되었다.[7]4. 3. 버전 20.1 (2020년 12월)
2020년 12월에 CPLEX 버전 20.1이 릴리스되었다.[8] 이 버전에서는 MIP(혼합 정수 계획법) 성능이 개선되었고, 'emphasis MIP 5' 모드가 새롭게 추가되었다.[8]4. 4. 버전 12.10 (2019년 12월)
MIP 성능이 개선되었고, 버전 12.8에서 도입된 다른 일반 콜백에 대한 일반 브랜칭 콜백이 추가되었다.[5]4. 5. 버전 12.9 (2019년 3월)
2019년 3월에 출시된 CPLEX 버전 12.9는 다목적 최적화를 직접 지원하며, 콜백 기능이 개선되었다.[5]4. 6. 버전 12.8 (2017년 12월)
2017년 12월에 CPLEX 버전 12.8이 릴리스되었다. 주요 기능은 다음과 같다.[5]- 일반 콜백
- 디버깅을 용이하게 하는 API 레코더
- subMIP 제어 매개변수
- Download and Go 제공
4. 7. 버전 12.7 (2016년 11월)
CPLEX 버전 12.7은 2016년 11월에 출시되었다.[5] 이 버전에서는 자동화된 벤더스 분해, 모델링 지원 도구, 성능 변동성을 더 잘 평가하기 위한 `runseeds` 명령이 도입되었다.4. 8. 버전 12.6.2 (2015년 6월)
CPLEX 버전 12.6.2는 2015년 6월에 출시되었다.[5] 주로 SOCP, MISOCP, 비볼록 QP의 성능 개선과 클라우드 기반 최적화를 지원한다.4. 9. 버전 12.6 (2013년 12월)
CPLEX 버전 12.6은 2013년 12월에 출시되었다.[5] 이 버전에서는 비볼록 QP 및 MIQP를 지원하며, 분산 병렬 MIP와 MIP의 루트 노드에서 더 많은 병렬 처리를 제공한다.[5]4. 10. 버전 12.5 (2012년 10월)
MIP (혼합 정수 계획법) 성능이 개선되었고, 성능 가변성을 해결하기 위한 임의 시드 매개변수가 추가되었다.[5] 또한 원격 객체, QCP의 듀얼, 결정적 튜닝 도구가 제공된다.[5]4. 11. 버전 12.4 (2011년 11월)
2011년 11월에 출시된 CPLEX 버전 12.4는 결정적 시간 제한 기능을 지원한다. 또한, 2차 원뿔 계획법(SOCP)의 쌍대(Dual) 문제와 Concert 기술의 2차식 API를 지원한다. 이 버전에서는 모든 알고리즘, 특히 혼합 정수 계획법(MIP)의 성능이 향상되었다.[5]4. 12. 버전 12.3 (2011년 6월)
2011년 6월에 CPLEX 버전 12.3이 출시되었다.[5] 이 버전에서는 큰 비제로(non-zero) 개수를 지원하기 위해 64비트 인덱싱을 도입했으며, 비볼록 QP(Quadratic Programming, 이차 계획법)의 지역 최적값 및 전역화를 지원한다.[5]4. 13. 버전 12.2 (2010년 6월)
2010년 6월에 출시된 CPLEX 버전 12.2에서는 루트 노드 병렬 처리, 결정적 병렬 동시 LP 최적화, 배리어(barrier) 알고리즘 성능 개선, 그리고 혼합 정수 계획법(MIP)에서 조건이 나쁜(ill-conditioned) 기저 행렬을 진단하는 도구가 추가되었다.[5]4. 14. 버전 12.0 (2009년 4월)
CPLEX영어 버전 12.0은 2009년 4월에 출시되었으며, IBM이 ILOG를 인수한 후 첫 번째 버전이다.[5] 이 버전에는 Python, MATLAB, 엑셀용 커넥터가 포함되어 있으며, 결정적 병렬 배리어 기능도 포함되어 있다.4. 15. 버전 11.0 (2007년 10월)
2007년 10월에 출시된 버전 11.0에서는 혼합 정수 프로그래밍(MIP) 모델의 성능이 크게 향상되었고, 병렬 MIP 최적화 기능이 개선되었다. 또한 MIP 솔루션 풀 기능과 성능 튜닝 유틸리티가 새로 도입되었다.[5]4. 16. 버전 10.0 (2006년 1월)
2006년 1월에 버전 10.0이 릴리스되었다.[5] 프라이멀 심플렉스 및 배리어 방법, MIP 최적화기에서 성능이 개선되었다.[5] 지표 제약 조건 및 솔루션 연마 휴리스틱이 도입되었으며 비가용성 분석이 개선되었다.[5]4. 17. 버전 9.0 (2003년 12월)
프라이멀 및 듀얼 심플렉스 방법과 MIP 최적화기에서 성능이 개선되었다.[5] .NET 사용자를 위해 ILOG Concert Technology를 지원하며, 2차 제약 프로그램을 지원한다.4. 18. 버전 8.0 (2002년 7월)
MIP 성능이 개선되었고, 혼합 정수 2차 프로그램을 지원하게 되었다.[5]4. 19. 버전 7.5 (2001년 12월)
Concert Technology영어는 Java 사용자를 위한 기술이었다.[5]4. 20. 버전 7.0 (2000년 10월)
2000년 10월, C++ 사용자를 위한 ILOG Concert Technology가 추가되었다.[5]4. 21. 버전 6.5 (1999년 3월)
1999년 3월에 출시된 CPLEX 버전 6.5에서는 프라이멀 및 듀얼 심플렉스 방법과 ILOG CPLEX 혼합 정수 최적화기의 성능이 크게 향상되었다.[5]4. 22. 버전 6.0 (1998년 4월)
1998년 4월에 출시된 버전 6.0에서는 프라이멀 및 듀얼 심플렉스 방법과 CPLEX 배리어 최적화기의 성능이 크게 향상되었다.[5]4. 23. 버전 5.0 (1997년 9월)
쉬운 C++영어 통합을 위한 새로운 메모리 모델이 도입되었다.[5]4. 24. 버전 4.0.5 (1996년 3월)
병렬 CPLEX 혼합 정수 솔버가 도입되었다.[5]4. 25. 버전 4.0 (1995년 12월)
스레드 안전 애플리케이션을 허용하도록 고급 프로그래밍 인터페이스(API)를 재설계했다.[5]4. 26. 버전 3.0.8 (1995년 3월)
1995년 3월, 버전 3.0.8이 출시되면서 병렬 CPLEX 배리어 솔버가 도입되었다.[5]4. 27. 버전 3.0 (1994년 4월)
1994년 4월, CPLEX영어 배리어 솔버가 도입되었다.[5]4. 28. 버전 2.1 (1993년 3월)
CPLEX영어 Presolve 알고리즘이 도입되었다.[5]4. 29. 버전 2.0 (1992년 4월)
CPLEX영어 팀은 1992년 4월에 성능이 개선된 버전 2.0을 출시했다.[5]4. 30. 버전 1.2 (1991)
듀얼 심플렉스 방법 및 CPLEX 혼합 정수 최적화기를 지원한다.[5]4. 31. 버전 1.0 (1988)
CPLEX영어 버전 1.0은 1988년에 출시되었으며, 프라이멀 심플렉스 방법을 제공했다.[5]참조
[1]
웹사이트
CPLEX Optimization Studio 20.1 is available
https://community.ib[...]
[2]
간행물
IBM Completes Acquisition of ILOG
https://www-03.ibm.c[...]
2009-01-06
[3]
간행물
Recent Benchmarks of Optimization Software
Dept of Math and Stats Arizona State University
2007-07-10
[4]
논문
IBM ILOG CP optimizer for scheduling
2018
[5]
웹사이트
CPLEX History
http://www.ilog.com/[...]
2020-06-24
[6]
웹사이트
Release notes for CPLEX 22.1.1
https://www.ibm.com/[...]
2023-01-11
[7]
웹사이트
Release notes for CPLEX 22.1.0
https://www.ibm.com/[...]
2023-01-11
[8]
웹사이트
CPLEX 20.1 Release Notes
https://www.ibm.com/[...]
2021-03-04
[9]
웹인용
CPLEX Optimization Studio 20.1 is available
https://community.ib[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com