2017-02-04 15 views

답변

1

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입니다.

+1

JuMP에는 Julia의 제한 사항 (Python보다 훨씬 더 유연한 구문을 제공함)이 아니라 JuMP의 내부 표현을 다음과 같이 가까운 상태로 유지하려는 설계상의 결정 때문에 선언적 모델이라는 개념이 없습니다. 솔버의 내부 표현이 가능합니다. 이를 통해 AMPL이 지원하지 않는 루프와 같은 모델에서 효율적인 메모리 내부 수정을 수행 할 수 있습니다. 확실히 트레이드 오프가 있습니다. – mlubin