数学建模社区-数学中国

标题: 各位大神帮忙看看问题在哪边?? [打印本页]

作者: 河庄YIN    时间: 2013-10-8 16:22
标题: 各位大神帮忙看看问题在哪边??
model:
  min=(1+(a2)*(a2)+(a3)*(a3)+(a4)*(a4))/((q*q)+(w*w));
  a2=(@sin(v3)-a4*@sin(v4-v3))/@sin(v2-v3);
  a3=(@sin(v2)-a4*@sin(v4-v2))/@sin(v3-v2);
  q=1+a2*@cos(k*v2)+a3*@cos(k*v3)+a4*@cos(k*v4);
  w=a2*@sin(k*v2)+a3*@sin(k*v3)+a3*@sin(k*v4);
  @bnd(v2,v3,v4);@bnd(0,v2,6.283);@bnd(v3,v4,6.283);
  @bnd(0,a4,5);@bnd(0,k,15);
end

这是我的程序,我要求一个最小值,未知数是v2,v3,v4,a4,k,k是整数;关系式是0<v2<v3<v4<6.283
0<a4<5,0<k<15,因为我是新手,问题不知道怎么解决,请大家帮帮忙,急啊,谢谢啦!
作者: madio    时间: 2013-10-8 18:51
  1. model:
  2.   min=(1+(a2)*(a2)+(a3)*(a3)+(a4)*(a4))/((q*q)+(w*w));
  3.   a2=(@sin(v3)-a4*@sin(v4-v3))/@sin(v2-v3);
  4.   a3=(@sin(v2)-a4*@sin(v4-v2))/@sin(v3-v2);
  5.   q=1+a2*@cos(k*v2)+a3*@cos(k*v3)+a4*@cos(k*v4);
  6.   w=a2*@sin(k*v2)+a3*@sin(k*v3)+a3*@sin(k*v4);
  7.   v2<=v3;
  8.   v3<=v4;
  9.   v4<=6.283;
  10.   @bnd(0,v2,6.283);
  11.   @bnd(0,a4,5);@bnd(0,k,15);
  12. end
复制代码
帮你修改了一下,@bnd函数是用来界定一个变量的界的,上下界都必须是确定的值,不能用变量,你的要求可以增加一些约束来实现的。

作者: wujianjack2    时间: 2013-10-8 20:36
   楼主你好!
   你这个问题看起来简单,但实际用LINGO求解起来寻找全局最优解时却遇到了一些问题。
   我先提出我的一些疑问,程序中q,w,a2,a3的正负性是不确定的么?如果这样,程序可以这么写吧!
model:
  min=(1+a2^2+a3^2+a4^2)/(q^2+w^2);
  a2=(@sin(v3)-a4*@sin(v4-v3))/@sin(v2-v3);
  a3=(@sin(v2)-a4*@sin(v4-v2))/@sin(v3-v2);
  q=1+a2*@cos(k*v2)+a3*@cos(k*v3)+a4*@cos(k*v4);
  w=a2*@sin(k*v2)+a3*@sin(k*v3)+a3*@sin(k*v4);
  v2>0;v2-v3<0;v3-v4<0;v4<6.283;a4<5;a4>0;
  @bnd(1,k,14);@gin(k);@free(a2);@free(a3);@free(w);@free(q);
end

用LINGO 11求解试了下,发现找全局最优解历时较长,在较短时间内得到以下两组局部最优解。
1.
  Local optimal solution found.
  Objective value:                             0.2134362
  Objective bound:                           0.2134362
  Infeasibilities:                               0.8881784E-15
  Extended solver steps:                            8
  Total solver iterations:                          4904


                       Variable           Value        Reduced Cost
                             A2       -1.812983            0.000000
                             A3        2.869856            0.000000
                             A4       0.4588451           0.3056745E-08
                              Q        2.579813          -0.2118007E-08
                              W       -7.280397            0.000000
                             V3        2.513190            0.000000
                             V4        6.067192            0.000000
                             V2        2.073468            0.000000
                              K        7.000000          -0.1114744E-02

2.
  Local optimal solution found.
  Objective value:                             0.2126711
  Objective bound:                            0.1538456
  Infeasibilities:                                   0.000000
  Extended solver steps:                          291
  Total solver iterations:                        165738


                       Variable           Value        Reduced Cost
                             A2       -8.761328           0.2032390E-07
                             A3       -11.42083            0.000000
                             A4        1.977507           0.7703659E-07
                              Q        2.238616           0.1569398E-07
                              W        31.50135            0.000000
                             V3        5.502335            0.000000
                             V4        5.502335            0.000000
                             V2        2.280316            0.000000
                              K        2.000000           0.4323916E-01

其中第二组V2,V3,V4的关系从这个精度上来说并不是严格递增的。

以上两组数据,不知是否符合楼主所需。不过,我只尝试求解了一小段时间,楼主有时间可以拿这段程序多运行下,离下界还是有一段距离的。

本人学识有限,如有不对之处,敬请谅解!
作者: 河庄YIN    时间: 2013-10-9 08:26
madio 发表于 2013-10-8 18:51
帮你修改了一下,@bnd函数是用来界定一个变量的界的,上下界都必须是确定的值,不能用变量,你的要求可以增 ...

我好像运行不起来啊?你那边能计算出来吗?
作者: 河庄YIN    时间: 2013-10-9 08:40
wujianjack2 发表于 2013-10-8 20:36
楼主你好!
   你这个问题看起来简单,但实际用LINGO求解起来寻找全局最优解时却遇到了一些问题。
    ...

我的a2,a3是大于零的,我忘记说啦,我怎么把你的程序输进去怎么结果跟你不一样啊??
作者: wujianjack2    时间: 2013-10-9 18:25
河庄YIN 发表于 2013-10-9 08:40
我的a2,a3是大于零的,我忘记说啦,我怎么把你的程序输进去怎么结果跟你不一样啊??

   不好意思,今天一直有事不在啊!
   很想问下楼主这个问题是工程实际问题吗?用LINGO求解起来求解值变化很大呢!而且你的W,Q值有什么范围吗?
比如:
程序1:(认为W,Q非负,且将0换成eps=0.001)
model:
eps=0.001;
min=(1+a2^2+a3^2+a4^2)/(q^2+w^2);
a2=(@sin(v3)-a4*@sin(v4-v3))/@sin(v2-v3);
a3=(@sin(v2)-a4*@sin(v4-v2))/@sin(v3-v2);
q=1+a2*@cos(k*v2)+a3*@cos(k*v3)+a4*@cos(k*v4);
w=a2*@sin(k*v2)+a3*@sin(k*v3)+a3*@sin(k*v4);
v2>eps;v2-v3<eps;v3-v4<eps;v4<6.283+eps;
a2>eps;a3>eps;a4>eps;a4<5+eps;
@bnd(1,k,14);@gin(k);
!@free(w);!@free(q);
end

因为要强行加约束使之尽量符合楼主的要求,故引进eps代表允许的一个精度。
勾选LINGO的Global Solver求解一小会儿得到以下解:
  Local optimal solution found.
  Objective value:                             0.2222131
  Objective bound:                           0.1391169E-02
  Infeasibilities:                                   0.000000
  Extended solver steps:                        1856
  Total solver iterations:                       1131845


                                           Variable           Value
                                                EPS       0.1000000E-02
                                                 A2        633.3809
                                                 A3        633.5365
                                                 A4       0.1000000E-02
                                                  Q        2.672236
                                                  W        1900.414
                                                 V3        4.554398
                                                 V4        4.555309
                                                 V2        1.414364
                                                  K        10.00000

程序2:(不限W,Q的取值范围,且改写eps=0.0001)
model:
eps=0.0001;
min=(1+a2^2+a3^2+a4^2)/(q^2+w^2);
a2=(@sin(v3)-a4*@sin(v4-v3))/@sin(v2-v3);
a3=(@sin(v2)-a4*@sin(v4-v2))/@sin(v3-v2);
q=1+a2*@cos(k*v2)+a3*@cos(k*v3)+a4*@cos(k*v4);
w=a2*@sin(k*v2)+a3*@sin(k*v3)+a3*@sin(k*v4);
v2>eps;v2-v3<eps;v3-v4<eps;v4<6.283+eps;
a2>eps;a3>eps;a4>eps;a4<5+eps;
@bnd(1,k,14);@gin(k);
@free(w);@free(q);
end

同样勾选Global Solver求解一会儿得到:
  Local optimal solution found.
  Objective value:                             0.2901307
  Objective bound:                           0.1538456
  Infeasibilities:                                   0.000000
  Extended solver steps:                        1904
  Total solver iterations:                       1049649


                                           Variable           Value
                                                EPS       0.1000000E-03
                                                 A2       0.2089522
                                                 A3        1.179228
                                                 A4       0.1000000E-03
                                                  Q        1.588400
                                                  W        2.422217
                                                 V3        3.240390
                                                 V4        3.272489
                                                 V2       0.5904324
                                                  K        12.00000
以上仅给出两种组合作为示范,楼主也可以自己进行相应的修改,也可以尝试使用Multistart Solver求解,但就结果上看,不同的精度允许下,得到的结果似乎有很大的不同,或许要得到全局最优解需要一段时间,只要楼主觉得结果尚还满意就可以了吧!

鄙人才疏学浅,只能去适应软件,还不能给出更加高效的算法求解这个问题,请楼主见谅!
相关细节,我应该大致作出了说明,希望对楼主有所帮助,谢谢理解!

作者: 河庄YIN    时间: 2013-10-10 15:58
wujianjack2 发表于 2013-10-9 18:25
不好意思,今天一直有事不在啊!
   很想问下楼主这个问题是工程实际问题吗?用LINGO求解起来求解值变 ...

你回答的很详细,真的是太谢谢你啊!以后有问题希望还能帮我解决!
作者: wujianjack2    时间: 2013-10-10 23:12
河庄YIN 发表于 2013-10-10 15:58
你回答的很详细,真的是太谢谢你啊!以后有问题希望还能帮我解决!

   谢谢你的支持!我会尽力的。欢迎你在论坛积极发言讨论!




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