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.
我正在尝试解决这个非线性问题:
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.