fighting0609 发表于 2009-11-6 14:21

求助:机械臂优化问题。半无限

请教各位机械臂优化的问题L1、L2、L3为机械臂的杆长,a、b分别有L1杆和L2杆的转角
目标函数:
Min(L1+L2+L3)
约束条件:
L1sin(a)+L2cos(b)+L3=1288
L1cos(a)-L2sin(b=50
788<=L1sin(a)+L2cos(b)+L3<=1288
-50<=L1cos(a)-L2sin(b)<=50
L1>122,L2>840,0<a<90,0<b<90
请问应该是用无约束方法fmincon解答还是用半无限方法fseminf解答啊。
fseminf是不是每个约束方程里只能有两个变量啊,如果有三个以上变量怎么解啊?比如
L1sin(a)+L2cos(b)+L3sin(c)<=1288

splendid1987 发表于 2009-11-6 18:23

本帖最后由 splendid1987 于 2009-11-10 20:39 编辑

Min=L1+L2+L3;
用lingo很快就解决了。多多指教!
解出的L3=0,好像不太切合实际。我用LINGO求解得到的结果是:
Local optimal solution found.
   Objective value:                              1290.782
   Extended solver steps:                               0
   Total solver iterations:                            13


                       Variable           Value        Reduced Cost
                             L1        450.7815            0.000000
                             L2        840.0000            0.000000
                             L3        0.000000           0.6170491E-02
                              A        1.459649            0.000000
                              B        0.000000            93.17152

                            Row    Slack or Surplus      Dual Price
                              1        1290.782           -1.000000
                              2        0.000000          -0.9938295
                              3        0.000000          -0.1109185
                              4        500.0000            0.000000
                              5        0.000000            0.000000
                              6        100.0000            0.000000
                              7        0.000000            0.000000
                              8        328.7815            0.000000
                              9        0.000000          -0.6170491E-02

程序是:Min=L1+L2+L3;
L1*@sin(a)+L2*@cos(b)+L3=1288;
L1*@cos(a)-L2*@sin(b)=50;
L1*@sin(a)+L2*@cos(b)+L3>=788;
L1*@sin(a)+L2*@cos(b)+L3<=1288;
L1*@cos(a)-L2*@sin(b)>=-50;
L1*@cos(a)-L2*@sin(b)<=50;
L1>122;
L2>840;
@bnd(0,a,3.141592653/2);
@bnd(0,b,3.141592653/2);
end

fighting0609 发表于 2009-11-8 14:52

回复 2# splendid1987


    谢谢你的关注。不过,个人觉得好像有点问题。我用matlab的fmincon解过,但我觉得,结果中的a、b角度不应该是惟一值,而应该是个范围。好像属于“半无限”的优化问题。请问你对半无限问题了解吗?

lgd0901 发表于 2009-11-9 10:08

fmincon貌似就可以解吧
不过MATLAB老提出警告

fighting0609 发表于 2009-11-9 14:11

回复 4# lgd0901


    用fmincon的话,那么怎么处理a、b参数那?把它们当作约束变量好像不太对啊,那样的话解出来的a、b值是唯一值,也就是说在在特定的角度下min(l1+l2+l3)为最小,但实际情况是机器人在运动过程中各角度是变化量啊。那样的话是不是就不符合实际情况了呢?

lgd0901 发表于 2009-11-9 16:32

回复 5# fighting0609


    我感觉用fmincon求解的话,a、b可以作为约束变量,只不过目标函数没有它们了。
    关于运动过程中变化量的问题,是不是可以多次采用fmincon计算,每次采用不同的边界值
    只是一点个人看法,不一定对啊

fighting0609 发表于 2009-11-10 14:02

回复 6# lgd0901


    这个问题我也想过,但是,求出一次后各杆长就确定了,运动中的杆长是不变的啊,变化量只有角度,多次求fmincon的结果和意义是什么那?

lgd0901 发表于 2009-11-11 15:15

回复 7# fighting0609


    这周末我想找时间把你的那个问题求解一下,然后给你答复好吧
    现在一下子确实想不明白

fighting0609 发表于 2009-11-12 09:00

回复 8# lgd0901


    那太好了,先谢下!

lgd0901 发表于 2009-11-13 09:43

回复 9# fighting0609


    兄弟,我搞不定了。不好意思啊。
页: [1] 2
查看完整版本: 求助:机械臂优化问题。半无限