앰프
AMPL![]() | |
패러다임 | 멀티패러다임: 선언적, 필수적 |
---|---|
설계자 | 로버트 푸러 데이비드 게이 브라이언 커니건 벨 연구소 |
개발자 | AMPL Optimization, Inc. |
처음 등장한 | 전 ( |
안정된 릴리스 | 20220703 / 2022년 7월 ; 전( |
OS | 크로스 플랫폼: Linux, macOS, Solaris, AIX, Windows |
면허증. | 독자 사양(번역기), 자유 및 오픈 소스(AMPL 솔버 라이브러리) |
파일 이름 확장자 | .mod, .dat, .run |
웹 사이트 | www |
영향을 받다 | |
AWK, C | |
영향받은 | |
표모 |
AMPL(수학 프로그래밍 언어)은 대규모 수학 컴퓨팅의 고복잡도 문제(대규모 최적화 및 스케줄링 유형의 문제)[1]를 기술하고 해결하기 위한 대수 모델링 언어입니다.그것은 벨 연구소의 로버트 푸러, 데이비드 게이, 브라이언 커니건에 의해 개발되었다.AMBL은 CBC, CPLEX, FortMP, MINOS, IPOPT, SNOPT, NITRO 및 LGO를 포함한 수십 개의 솔버를 지원합니다.문제는 해결사에게 nl 파일로 전달됩니다.AMBL은 100개 이상의 기업 고객과 정부 기관 및 학술 [2]기관에서 사용합니다.
AMBL의 장점 중 하나는 최적화 문제의 수학적 표기법과 구문의 유사성입니다.이를 통해 최적화 영역의 문제를 매우 간결하고 읽기 쉽게 정의할 수 있습니다.NEOS Server(이전에는 Argonne National Laboratory에서 개최, 현재 Madison 위스콘신 대학에서[3] 개최)에서 사용할 수 있는 많은 최신 솔버들이 AMP 입력을 받아들입니다.NEOS 통계에 따르면 수학 프로그래밍 문제를 표현하는 가장 일반적인 형식입니다.
특징들
AMBL은 선언형 프로그래밍 스타일과 명령형 프로그래밍 스타일이 혼합된 것을 특징으로 합니다.최적화 모델을 공식화하는 것은 집합, 스칼라 및 다차원 파라미터, 의사결정 변수, 목적 및 제약과 같은 선언적 언어 요소를 통해 이루어지며, 이를 통해 수학적 최적화 영역의 대부분의 문제를 간결하게 설명할 수 있습니다.
절차 및 제어 흐름문은 다음 용도의 AMPR에서 사용할 수 있습니다.
- 스프레드시트, 데이터베이스, XML, 텍스트 파일 등의 외부 데이터 소스와의 데이터 교환
- 최적화 모델에 관한 데이터 사전 및 사후 처리 태스크
- 직접 효율적인 해결사를 사용할 수 없는 문제 유형에 대한 하이브리드 알고리즘의 구축.
재사용을 지원하고 대규모 최적화 문제의 구축을 단순화하기 위해 모델과 데이터를 분리할 수 있습니다.
AMBL은 다음과 같은 다양한 유형의 문제를 지원합니다.
- 선형 프로그래밍
- 이차 프로그래밍
- 비선형 프로그래밍
- 혼합 정수 프로그래밍
- 볼록 2차 제약 조건이 있거나 없는 혼합 정수 2차 프로그래밍
- 혼합 정수 비선형 프로그래밍
- 2차 원뿔 프로그래밍
- 글로벌 최적화
- 쌍선형 행렬 부등식의 반무한 프로그래밍 문제
- 이산형 또는 연속형 변수의 상보성 이론 문제(MPEC)
- 제약 조건 프로그래밍[4]
MPL은 다음과 같은 이점이 있는 개별 프로세스에서 솔버를 호출합니다.
- 사용자는 언제든지 솔루션 프로세스를 중단할 수 있습니다.
- 솔버 에러는 인터프리터에 영향을 주지 않는다.
- 32비트 버전의 AMP는 64비트 솔버와 함께 사용할 수 있으며, 그 반대도 가능합니다.
솔버와의 상호작용은 명확하게 정의된 nl 인터페이스를 통해 이루어집니다.
유용성
AMP는 Linux, macOS, Solaris, AIX 및 Windows를 [5]포함한 많은 일반적인 32비트 및 64비트 운영 체제에서 사용할 수 있습니다.번역기는 AMPL Optimization LLC에 의해 유지 보수되는 전용 소프트웨어입니다.다만, 몇개의 온라인 서비스가 있어,[6][7] AMP를 사용한 모델링이나 해결 기능을 무료로 제공하고 있습니다.기능이 한정되어 있는 무료 학생 버전이나, 학술 코스의 풀 기능 버전도 무료로 이용할 [8]수 있습니다.
Microsoft Excel 내에서 Solver Studio Excel 애드인을 통해 AMP를 사용할 수 있습니다.
NL 파일을 읽고 자동 차별화를 제공하는 ASL(AMP Solver Library)은 오픈 소스입니다.많은 솔버에서 AMP 접속을 구현하기 위해 사용됩니다.
상태 이력
이 표는 AMP의 역사에서 중요한 단계를 보여줍니다.
연도 | 하이라이트 |
---|---|
1985 | AMBL은 설계 및 구현되었습니다[1]. |
1990 | AMBL 모델링 언어를 설명하는 논문은 Management[9] Science에 게재되었습니다. |
1991 | AMBL은 비선형 프로그래밍 및 자동 차별화를 지원합니다. |
1993 | Robert Fourer, David Gay 및 Brian Kernighan은 수학 프로그래밍 시스템과 AMP 모델링 언어의 설계에 관한 저서로 미국 운영 연구 협회로부터 ORSA/CSTS 상을[10] 받았습니다. |
1995 | 분할 선형 및 네트워크 구조를 나타내기 위한 확장 |
1995 | 스크립트 구성 |
1997 | 비선형 솔버 지원 강화 |
1998 | AMBL은 상보성 이론 문제를 지원합니다. |
2000 | 관계형 데이터베이스 및 스프레드시트 액세스 |
2002 | 제약 조건 프로그래밍[4] 지원 |
2003 | AMPR Optimization LLC는 AMPR, Robert Fourer, David Gay 및 Brian Kernighan의 발명가에 의해 설립되었습니다.새로운 회사는 Lucent Technologies, Inc.로부터 AMP 모델링 언어의 개발과 지원을 인계받았습니다. |
2005 | MAMP 모델링 언어 Google 그룹[11] 오픈 |
2008 | 케스트렐:NEOS 서버로의 AMP 인터페이스 도입 |
2012 | Robert Fourer, David Gay 및 Brian Kernighan은 가장 중요한 대수 모델링 [12]언어의 원조로서 2012 INFOMS Impact Prize를 수상했습니다. |
2012 | AMBL Book은 온라인에서 무료로 이용[13] 가능 |
2013 | 새로운 크로스 플랫폼 통합 개발 환경(IDE)을[14] 사용할 수 있게 되었습니다. |
샘플 모델
샘플 AMP 모델을 제공하기 위해 George Dantzig로부터의 전송 문제가 사용됩니다.이 문제는 시장 및 [15]공장의 공급 요건을 충족하는 최소 비용 배송 일정을 찾는 것입니다.
플랜트 설정, 시장 설정, # param Capacity {p in Plants}, # param Demand {m in Markets}, # Distance in 수천 마일 param Distance {plants, Markets}, # 1000 마일 param fright, # param frights param frate, # param fram faram faram fright.경우에 Cost{시장의 식물, m에서 p}:)화물*Distance[p, m]/1000,#선적 수량,=0;수천달러를#총 운송비 비용:sum{시장의 식물, m에서 p}TransportCost[p, m]*shipment[p, m]을 최소화;식물 ps.t에 관찰하다 공급 제한한다. supply{식물이 p}:합{m)shipment{식물, 시장}을 varMnArkets}shipment[p, m]<>= Capacity[p].#시장 ms.t에 수요를 만족시키다 demand{시장의 m}:sum{식물이 p}shipment[p, m]>)Demand[m]데이터;세트 식물:= 시애틀 san-diego, 세트 시장:)new-york 시카고 topeka,param 사진 및 비디오 용량:)seattle 350san-diego 600,param 수요:)new-york 325시카고 300topeka 275;param Distanc.e:new-param chicago topeka : = 시애틀 2.5 1.7 1.8 san-param 2.5 1.4, param freight : = 90;
해결사
다음으로 [16]MPL에서 지원되는 솔버의 일부를 나타냅니다.
해결사 | 지원되는 문제 유형 |
---|---|
APOPT | 혼합 정수 비선형 프로그래밍 |
아르텔리스 니트로 | 선형, 이차 및 비선형 프로그래밍 |
봉민 | 혼합 정수 비선형 프로그래밍 |
BPMPD | 선형 및 이차 프로그래밍 |
코인 또는 CBC | 혼합 정수 프로그래밍 |
코인 또는 CLP | 선형 프로그래밍 |
접속하다 | 비선형 프로그래밍 |
쿠엔[17] | 혼합 정수 비선형 프로그래밍(MINLP) |
컴플렉스 | 선형, 2차, 2차 원뿔 및 혼합 정수 프로그래밍 |
CPLEX CP[18] 옵티마이저 | 제약 프로그래밍 |
필터 | 비선형 프로그래밍 |
포트 MP | 선형, 이차 및 혼합 정수 프로그래밍 |
게코드[19] | 제약 프로그래밍 |
IPOPT | 비선형 프로그래밍 |
JaCoP[20] | 제약 프로그래밍 |
로고[21] | 글로벌 및 로컬 비선형 최적화 |
lp_module[22] | 선형 및 혼합 정수 프로그래밍 |
미노스 | 선형 및 비선형 프로그래밍 |
민토 | 혼합 정수 프로그래밍 |
모섹 | 선형, 혼합 정수 선형, 2차, 혼합 정수 2차, 2차 제약, 원뿔 및 볼록 비선형 프로그래밍 |
옥터랙트 엔진 | 최소 및 최대 기본 함수의 불연속 문제를 포함하여 미분 또는 적분 항이 없는 모든 유형의 최적화 문제. |
SCIP | 혼합 정수 프로그래밍 |
스눕트 | 비선형 프로그래밍 |
술럼[23] | 선형 및 혼합 정수 프로그래밍 |
동작하고 있다 | 비선형 프로그래밍 |
XA | 선형 및 혼합 정수 프로그래밍 |
엑스프레스 | 선형 및 볼록 2차 최적화와 이들의 혼합 정수 대응 |
「 」를 참조해 주세요.
- sol(형식)
- GNU MathProg(이전의 GMPL)는 GNU 선형 프로그래밍[24] 키트에서 지원되는 MPL의 서브셋입니다.
레퍼런스
- ^ a b Fourer, Robert; Gay, David M; Kernighan, Brian W (2003). AMPL: a modeling language for mathematical programming. USA: Duxbury Press/Brooks/Cole Publishing Company. ISBN 978-0-534-38809-6.
- ^ "Position Available". Retrieved 29 July 2011.
- ^ "About". Retrieved 11 August 2015.
- ^ a b Fourer, Robert; Gay, David M. (2002). "Extending an Algebraic Modeling Language to Support Constraint Programming". INFORMS Journal on Computing. 14 (4): 322–344. CiteSeerX 10.1.1.8.9699. doi:10.1287/ijoc.14.4.322.2825.
- ^ "Platforms". AMPL Optimizations Inc.
- ^ "NEOS Server for Optimization". Retrieved 11 August 2015.
- ^ "Try AMPL!". Retrieved 11 August 2015.
- ^ "AMPL Downloads". Archived from the original on 26 May 2015. Retrieved 11 August 2015.
- ^ Fourer, Robert; Gay, David M.; Kernighan, Brian W. (1990). "A Modeling Language for Mathematical Programming" (PDF). Management Science. 36 (5): 519–554–83. doi:10.1287/mnsc.36.5.519.
- ^ INFORMS. "ICS - INFORMS" (PDF). Retrieved 11 August 2015.
- ^ "Google Groups".
- ^ INFORMS. "INFORMS Impact Prize". Archived from the original on 22 October 2013. Retrieved 11 August 2015.
- ^ "Freely downloadable - AMPL: A Modeling Language for Mathematical Programming". Retrieved 5 March 2021.
- ^ "Google Groups". Retrieved 11 August 2015.
- ^ Dantzig, George (2016) [1963]. "3. Formulating a Linear Programming Model". Linear Programming and Extensions. Princeton University Press. pp. 32–62. ISBN 978-1-4008-8417-9.
- ^ "Solvers - AMPL". Retrieved 21 January 2018.
- ^ "Couenne". Archived from the original on 29 October 2013. Retrieved 27 October 2013.
- ^ "mp/solvers/ilogcp at master · ampl/mp · GitHub". GitHub. Retrieved 11 August 2015.
- ^ "mp/solvers/gecode at master · ampl/mp · GitHub". GitHub. Retrieved 11 August 2015.
- ^ "mp/solvers/jacop at master · ampl/mp · GitHub". GitHub. Retrieved 11 August 2015.
- ^ "LGO - AMPL". Retrieved 11 August 2015.
- ^ "Using lpsolve from AMPL". Retrieved 11 August 2015.
- ^ "mp/solvers/sulum at master · ampl/mp · GitHub". GitHub. Retrieved 11 August 2015.
- ^ "GLPK official site". Retrieved 17 September 2020.