数学建模社区-数学中国

标题: lingo求解最大值问题和matlab结果不一致 [打印本页]

作者: doilovematlab    时间: 2014-2-3 14:42
标题: lingo求解最大值问题和matlab结果不一致
本帖最后由 doilovematlab 于 2014-2-3 14:43 编辑

函数函数y=2.1*(1-x+2.*x.^2).*exp(-x.^2/2);的图像为:
QQ截图20140203144114.jpg
明明在x=-1处取到最大值,但是在lingo求解却不是:
QQ图片20140203144159.jpg
这是怎么回事,我的lingo代码有错吗?



作者: madio    时间: 2014-2-3 15:06
上面不是说了找到了local optimal solution,就是说这只是一个局部最优解,你可能对于优化算法了解的不多,一般非线性的是不能保证找到全局最优的,需要使用全局求解器或者选择更加合适的初始值
作者: doilovematlab    时间: 2014-2-3 15:11
madio 发表于 2014-2-3 15:06
上面不是说了找到了local optimal solution,就是说这只是一个局部最优解,你可能对于优化算法了解的不多, ...

额,不好意思,我是初学者,但是我已经勾选了全局求解器,还是不能得到全局最优解:
QQ截图20140203150838.jpg
如果确实如你所说,那么怎样用lingo求解全局最优解呢?其实这个题目我用matlab的遗传算法或粒子群算法可以求解,只是代码稍显复杂,所以我看lingo能不能求,结果就这样了。。。
作者: doilovematlab    时间: 2014-2-3 15:19
madio 发表于 2014-2-3 15:06
上面不是说了找到了local optimal solution,就是说这只是一个局部最优解,你可能对于优化算法了解的不多, ...

很奇怪的是,我勾选了使用全局求解器,得到的结果还是这样:
[attach]135947[/attach]
上面说全局最优解已经找到了,但是这个最优解并不是正确的,正确的应该在-1取到最大值。为什么。

QQ截图20140203151732.jpg (128.28 KB, 下载次数: 336)

QQ截图20140203151732.jpg


作者: madio    时间: 2014-2-3 15:21
doilovematlab 发表于 2014-2-3 15:11
额,不好意思,我是初学者,但是我已经勾选了全局求解器,还是不能得到全局最优解:

如果确实如你所 ...

我觉得你可能需要看一下数学中国有关优化的培训,优化算法都是有局限的,初始值很重要,你可以使用init段去加入初始值,对于启发式算法确实好一些,但是需要设置的问题也很多,不是可以随便用的,需要对优化算法有一定的了解才可以。
作者: doilovematlab    时间: 2014-2-3 15:59
madio 发表于 2014-2-3 15:21
我觉得你可能需要看一下数学中国有关优化的培训,优化算法都是有局限的,初始值很重要,你可以使用init段 ...

嫩不能举个例子啊,比如我这个问题要怎样才能得到全局最优解,init部分怎么写呢?
作者: wujianjack2    时间: 2014-2-4 16:35
    自己的电脑不在身边,没有LINGO软件,略显遗憾啊。
    你用的是LINGO 14么?你把@exp(-x^2/2)改为:@exp(-(x^2)/2)试试看,我回学校后有时间再帮你看看吧。
    欢迎积极发言讨论,祝新年快乐!
作者: wujianjack2    时间: 2014-2-4 21:15
   结果如下:
    Modify_LINGO.png
作者: doilovematlab    时间: 2014-2-5 11:34
wujianjack2 发表于 2014-2-4 21:15
结果如下:

good,非常感谢你的帮助,我后来看了lingo运算符优先级才知道负号是先运算的,学习了。
作者: 问心    时间: 2014-2-5 20:45
楼主好人。。。我也遇到同样的问题
作者: 问心    时间: 2014-2-5 20:48
madio 发表于 2014-2-3 15:21
我觉得你可能需要看一下数学中国有关优化的培训,优化算法都是有局限的,初始值很重要,你可以使用init段 ...

略有广告的痕迹。。。。。。。。




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5