Числовой аргумент вне домена в AMPL

Я застрял в этой ошибке с неделями. Я не знаю, что с этим не так. Либо AMPL, либо моя модель определенно содержит ошибку в объявлении и определениях параметров.

Я использую NEOS Solver, и это дает мне ошибку:


Ошибка в _cmdno 23 при выполнении команды "let" (файл amplin, строка 85, смещение 1582): невозможно оценить pow(-82.15570137754236,-3.5): числовой аргумент вне домена os-7.neos-server.org Ошибка (2) in /opt/amp / amp -R amplin


строка 85 находится здесь в моем файле данных как:

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

Ошибка возникает в команде let в строке 85 моего ввода. Ошибка в том, что что-то в модели повышает отрицательное число до дробной отрицательной степени, что является операцией, которая не имеет действительного результата в виде действительного числа.

В используемой модели: пусть h[kl,is]:= бета *(d[kl,is]^(- альфа));
(-альфа также здесь, которая может вызвать ошибку)

Есть выход?

1 ответ

Решение

Я исправил эту ошибку. Я использовал функцию Normal() из AMPL, которая генерировала отрицательные значения, из-за которых эта ошибка возникала.

Я использовал другую функцию AMPL max(Normal(),1), чтобы обернуть Normal() аргументом 1. Это означает, что когда левая сторона max() имеет отрицательное число. Он будет использовать положительное значение, которое здесь равно 1. Вы можете применить значение, которое вы хотите.

Другие вопросы по тегам