Ampl 在 0 次迭代中找到最优解,但变量被错误地设置为 0

Ampl finds optimal solution in 0 iteration, but the variables are wrongly set to 0

我正在尝试解决这个非线性问题:

var c;
var n;

minimize error:
(
    (6770924 - (n * c * exp(-c * 1)))^2 + 
    (3617627 - (n * c * exp(-c * 2)))^2 + 
    (2344172 - (n * c * exp(-c * 3)))^2
) / 3;

当我执行这段代码时,我得到了 0 次迭代的成功消息:

MINOS 5.51: optimal solution found.
0 iterations, objective 214759264300000
Non lin evals: obj = 3 grad = 2.

但是变量 'n' 和 'c' 被设置为“0”。使用这个答案,我从函数中得到了一个错误的值,因为没有从常量值中减去任何东西。

如果我从函数中取出 'n' 变量,我有一个正常的答案,'c' 最小化我的函数。我描述的模型有什么问题?

提前致谢。

正如this post中已经提到的,MINOS对起点敏感。例如,使用 1 作为 n 的起始值可以得到更好的 objective 值:

ampl: let n := 1;
ampl: solve;
MINOS 5.51: optimal solution found.
10 iterations, objective 24439722900
Nonlin evals: obj = 34, grad = 33.