2017-02-22 11 views
1

몇 주 후에이 오류가 발생합니다. 나는 이것이 무엇이 잘못되었는지 모른다. AMPL 또는 내 모델에는 매개 변수의 선언 및 정의에 약간의 버그가 있습니다.AMPL의 도메인 외부에있는 숫자 인수

나는 NEOS 솔버를 사용하고 그것은 나에게 오류 제공합니다


오류 명령 (파일 amplin, 라인 85, 1582 오프셋) "하자"실행 _cmdno 23 : 이 펑을 평가하지 수 (-82.15570137754236, -3.5) : 도메인 중 수치 인수 os-7.neos-server.org 오류 (2)에서/옵션/AMPL/AMPL -R amplin


라인 (85)가 여기 내 데이터 파일 :

레이트 [kl, is] : = B * log (1+ (Pmax/NPRBs [kl, is]) * h [kl, is])/NoB);

입력 한 85 번째 줄의 "let"명령에서 오류가 발생합니다. 오류는 모델에서 무언가가 실수로 유효한 결과를 가지지 않는 부분 음수로 음수를 올리는 것입니다.

모델에서 나는 다음을 사용함 : h [kl, is] : = beta * (d [kl, is]^(- alpha));
(-alpha도 오류가 발생할 수 있습니다.)

어떤 방법으로 나갈 수 있습니까?

+0

'(-82.2)^(- 3.5)'를 어떻게 계산 하시겠습니까? –

+0

나는이 물건이 어디에서 왔는지 정확히 알지 못한다! 그래서 제가 질문했습니다. – Amigo

+0

제 생각에는'alpha = 3.5'이고'd'는'-82.2'입니다. –

답변

0

이 오류가 수정되었습니다. 나는 AMPL에서 Normal() 함수를 사용하여이 오류가 발생하는 음수 값을 생성하고있었습니다.

인수 1을 사용하여 Normal()을 래핑하기 위해 max (Normal(), 1)라는 또 다른 AMPL 함수를 사용했습니다. 이는 max()의 왼쪽이 음수를 가질 때를 의미합니다. 여기서 1 인 양수 값을 사용합니다. 원하는 값을 적용 할 수 있습니다.