2
GAMS 나 AMPL과 같은 주요 상업용 대수 모델링 언어 (AML)에 Pyomo 나 JuMP와 같은 오픈 소스 AML이 갖는 특성에는 아직 (기본 모델의 사용자 기반과 사용 가능성을 제외하고) 아직 없습니까?상업용 대수 모델링 언어의 특성은 아직 오픈 소스 코드에서 누락 되었습니까?
GAMS 나 AMPL과 같은 주요 상업용 대수 모델링 언어 (AML)에 Pyomo 나 JuMP와 같은 오픈 소스 AML이 갖는 특성에는 아직 (기본 모델의 사용자 기반과 사용 가능성을 제외하고) 아직 없습니까?상업용 대수 모델링 언어의 특성은 아직 오픈 소스 코드에서 누락 되었습니까?
AMPL의 한 가지 특징은 범용 언어로 작성된 모델링 라이브러리가 부족하기 때문에 선언적 모델과 데이터를 명확히 구분할 수 있다는 것입니다. 같은 Pyomo 같은 일부 시스템은 종종 그들이 작성하는 언어에 의해 제한 성공의 다양한 학위를 모방하려고합니다. 예를 들어
는 AMPL 목표
minimize OBJ: sum{j in J} c[j] * y[j];
이
로 Pyomo 작성할 수 있습니다def obj_expression(model):
return summation(model.c, model.y)
model.OBJ = Objective(rule=obj_expression)
AMPL의 하위 집합을 기반으로하는 GNU MathProg는 이러한 제한이없는 오픈 소스 AML입니다.
JuMP에는 Julia의 제한 사항 (Python보다 훨씬 더 유연한 구문을 제공함)이 아니라 JuMP의 내부 표현을 다음과 같이 가까운 상태로 유지하려는 설계상의 결정 때문에 선언적 모델이라는 개념이 없습니다. 솔버의 내부 표현이 가능합니다. 이를 통해 AMPL이 지원하지 않는 루프와 같은 모델에서 효율적인 메모리 내부 수정을 수행 할 수 있습니다. 확실히 트레이드 오프가 있습니다. – mlubin