数学建模社区-数学中国

标题: matlab能解但是lingo不能解的规划问题,哪里错了呀???? [打印本页]

作者: 846257805    时间: 2013-4-24 18:33
标题: matlab能解但是lingo不能解的规划问题,哪里错了呀????
本帖最后由 wujianjack2 于 2013-8-24 01:53 编辑

model:
sets:
nvars/1..5/:x;
endsets
data:
pi=3.14159216;
enddata
min=s;
z=z1+z2;
z1=-2*pi*@exp(-0.2*@sqrt(.2*(x(1)^2+x(2)^2+x(3)^2+x(4)^2+x(5)^2)));
z2=-@exp(.2*(@cos(2*pi*x(1))+@cos(2*pi*x(2))+@cos(2*pi*x(3))+@cos(2*pi*x(4))+@cos(2*pi*x(5))))+2*pi;
s=@if(-30#le#x(1)#le#30#and#-30#le#x(2)#le#30#and#-30#le#x(3)#le#30#and#-30#le#x(4)#le#30#and#-30#le#x(5)#le#30,z,300);
@for(nvars:@bnd(-30,x,30));
end
这个我用lingo11解的时候他出来这样一句话:warning:the current solution may be nonoptimal /infeasible for the current model
这句话,但是我用matlab的遗传工具箱能得出答案fmin=-e=-2.7......这是怎么回事呀??????
请指教!!!!!!谢谢啦!!!!!

作者: wujianjack2    时间: 2013-4-24 18:33
本帖最后由 wujianjack2 于 2013-8-24 01:55 编辑

第一次回答:
    楼主的问题相当经典!
    我用MATLAB的优化工具箱的遗传算法求解多次后得到较好值:
x(1)=-0.001,x(2)=0.001,x(3)=0.001,x(4)=0,x(5)=0.001,目标函数值为:-2.7164245306426658

另外,楼主的LINGO程序编写无误,但稍显累赘,代码简化如下(楼主pi值小数点后8位数值不太对啊):
model:
sets:
nvars/1..5/:x;
endsets
data:
pi=3.14159265;
enddata
min=z;
z=z1+z2;
z1_1=-0.2*@sqrt(0.2*@sum(nvars:x^2));
z1=-2*pi*@exp(z1_1);
z2_1=0.2*@sum(nvars:@cos(2*pi*x));
z2=-@exp(z2_1)+2*pi;
@for(nvars:@bnd(-30,x,30));
end

运行代码,提示201号错误---模型是局部不可行的。
所以,我觉得,这可能是LINGO软件内部算法的缺陷,目标函数对于它来说太过复杂,它的算法对于解决此类问题有不足,我认为也正因为如此,现代智能优化算法才会有如此广泛的应用。最后,还是没能对楼主的问题给出好的回答,以上仅是个人见解,抱歉!


第二次回答:
   之前没有很好地解决楼主的问题,深感惭愧!我觉得这个问题有必要进行进一步的思考,现在我给出我的另一种解决方式,虽然看上去与第一次的回答没有什么变化,但是,可以很好地求出结果,不知道楼主是否满意?

程序代码如下:
model:
sets:
nvars/1..5/:x;
endsets
data:
pi=3.14159265;
enddata
min=z;
z=z1+z2;
z1_1=-0.2*@sqrt(0.2*@sum(nvars:x^2));
z1=-2*pi*@exp(z1_1);
z2_1=0.2*@sum(nvars(i):@cos(2*pi*x));
z2=-@exp(z2_1)+2*pi;
@for(nvars:@bnd(-30,x,30));
z1_1<=0;z2_1<=1;
@free(z);@free(z1);@free(z2);
end

运行结果如下(仅给出重要结果):
  Global optimal solution found.
  Objective value:                             -2.718282
  Objective bound:                           -2.718282
  Infeasibilities:                               0.1953993E-13
  Extended solver steps:                            0
  Total solver iterations:                            16

   Variable           Value        Reduced Cost
        PI         3.141593            0.000000
         Z        -2.718282            0.000000
        Z1       -6.283185            0.000000
        Z2        3.564903            0.000000
      Z1_1      0.000000            0.000000
      Z2_1      1.000000            0.000000
     X( 1)        0.000000            0.000000
     X( 2)        0.000000            0.000000
     X( 3)        0.000000            0.000000
     X( 4)        0.000000            0.000000
     X( 5)        0.000000            0.000000

此结果在LINGO 11上运行通过,勾不勾选Global Solver选项都可以,用时0.03秒。

以上是我的个人解答,或许有所疏漏,如有疑问与建议,望不吝指出,谢谢支持!
作者: 846257805    时间: 2013-7-21 20:08
还是谢谢啊!!!
作者: wujianjack2    时间: 2013-7-21 21:10
846257805 发表于 2013-7-21 20:08
还是谢谢啊!!!

哈哈,多谢鼓励!这个问题相当经典呢,让我有了一些新的感悟,如果再有什么问题,欢迎交流!
作者: wujianjack2    时间: 2013-8-11 17:53
楼主,这个问题我已尝试解决成功,参见2楼的第二次回复,解答仅供参考,谢谢支持!
作者: 宠坏的星星    时间: 2014-5-9 23:54
嗯嗯!!!懂了

作者: Mr.Curious    时间: 2015-1-15 21:03
感谢楼主!!!

作者: Mr.Curious    时间: 2015-1-15 21:03
楼主太牛逼了!!!

作者: Mr.Curious    时间: 2015-1-15 21:03
真的涨了很多知识

作者: 华仔_beyond    时间: 2017-5-26 20:28
xiexie楼主

作者: colorfulgirl    时间: 2017-12-22 23:06
厉害了 你们





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