【问题标题】:Ampl finds optimal solution in 0 iteration, but the variables are wrongly set to 0Ampl 在 0 次迭代中找到最优解,但变量被错误地设置为 0
【发布时间】:2015-04-03 05:09:55
【问题描述】:

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

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' 会最小化我的函数。我描述的模型有什么问题?

提前致谢。

【问题讨论】:

    标签: ampl


    【解决方案1】:

    正如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.
    

    【讨论】:

    • 谷歌论坛中的精彩解释!非常感谢。
    • 还有一个疑问,BARON求解器提供非线性问题的全局最优解?
    • 是的,如果它可以证明最优性。
    猜你喜欢
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 2012-03-15
    • 2015-02-24
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 2020-09-16
    相关资源
    最近更新 更多