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

时间:2015-04-01 17:39:44

标签: ampl

我试图解决这个非线性问题:

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'最小化我的功能。我描述的模型出了什么问题?

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

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