永发信息网

matlab和lingo结果不一样是什么原因,求大神

答案:2  悬赏:50  手机版
解决时间 2021-03-13 20:20
matlab和lingo结果不一样是什么原因,求大神
最佳答案
楼上 @sinxlg1 说的有道理,非线性优化一般会存在多个局部最优点,使用Lingo时,建议设置使用全局求解器,如图所示:

 
如果不选择全局求解器,得到的为局部最优解:

选择全局求解器之后,可以得到全局最优解:

 
MATLAB程序是用Monte-Carlo方法,即随机在给定范围内取点,如果满足所有的约束,则为可行解;如果该可行解比当前最优值更佳,则用新取的点代替原最优点。很显然这种做法需要足够多的尝试次数才有望得到比较靠谱的解,现在的设置为10^5,应该说比较大了,但并不能保证每次都得到相同的解,这是Monte-Carlo方法不可避免的偶然性。
 
在2011b之后的MATLAB版本中,遗传算法函数ga支持求解不含等式约束的混合整数规划问题,参考代码如下:
A = [ ...
    1 1 1 1 1;
    1 2 2 1 6;
    2 1 6 0 0;
    0 0 1 1 5];
b = [400 800 200 200]';
lb = zeros(1,5);
ub = ones(1,5)*99;
f=@ (x)x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)^2-8*x(1)-2*x(2)-3*x(3)-x(4)-2*x(5);
x = ga(@(x)-f(x),5,A,b,[],[],lb,ub,[],1:5)
f(x) 在多数情况下,可以求出全局最优解:
x =
    50    99     0    99    20

ans =
       51568但应该注意,遗传算法本身也是一种带有随机因素的算法,并不能保证每次都得到真正的最优结果,有时也会得到其它解,例如
x =
    50    99     0    99     0

ans =
       50808 另外,根据你给的MATLAB程序,实际上隐含了xi>=0的约束条件。如果不考虑这个约束,实际上这个问题是无解的(xi可以取足够小的负数,目标函数趋近无穷大)。
全部回答
你这是非线性优化,lingo里面要设定为全局求解器。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
卡尔当怎么去啊,有知道地址的么
民信百货商行在什么地方啊,我要过去处理事情
三木花园B区南门(人行门)怎么去啊,有知道地
有谁知道有关pos机的销售政策分别指什么
卢何王村在什么地方啊,我要过去处理事情
美丽妈妈宁波店在什么地方啊,我要过去处理事
利民超市5.6月份营业额分别是6.4元和8万元,
泰迪为什么要阉割
农村合作银行(徐福支行)地址在哪,我要去那里
MEET主题影院地址有知道的么?有点事想过去
为了借5千能想的办法都想了,在这上面
撬巴源地址在什么地方,想过去办事
公积金断交有什么影响
时尚名典摄影地址在哪,我要去那里办事
江南新港周边环境怎么样?生活便利吗?
推荐资讯
幻想人形演舞迷途竹林的走法
mix怎么把下载过的效果删掉
星桥街西段/星桥街中段(路口)在哪里啊,我有
无为人都是什么样子的人品
阴阳师手游青行灯和大天狗哪个好
CF点怎么买装备
深圳热线这么发帖
耳机插入电脑没有声音,而音响却有声音?
那年花开月正圆杜老板是周莹的亲哥哥吗
我问一下,我卤肉用糖色上色,颜色太浅怎么办
酒驾逃跑交警追车导致车祸谁负责
龙平街地址有知道的么?有点事想过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?