AMPL 中的域外数值参数

Numerical argument out of domain in AMPL

几周以来我一直陷入这个错误。我不知道这有什么问题。 AMPL 或我的模型肯定在参数的声明和定义中存在一些错误。

我正在使用 NEOS 求解器,它给我错误:


错误在 _cmdno 23 执行 "let" 命令 (文件 amplin,第 85 行,偏移量 1582): 无法评估 pow(-82.15570137754236,-3.5):数字参数超出域 os-7.neos-server.org /opt/ampl/ampl -R amplin

中的错误 (2)

第 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 也在这里,可能会引发错误)

有出路吗?

我已经修复了这个错误。我使用的是来自 AMPL 的 Normal() 函数,该函数生成负值,导致出现此错误。

我使用了另一个 AMPL 函数 max(Normal(),1) 用参数 1 包装 Normal()。这意味着当 max() 的左侧为负数时。它将使用此处为 1 的正值。您可以应用您想要的值。