24小时热门版块排行榜    

查看: 1876  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

小龙_1217

木虫 (初入文坛)

[交流] 【求助】matlab 二次规划的优化的问题 已有1人参与

我们MATLAB里的二次规划算法去优化一个方程 我编的程序如下:
H=eye(12,12);
c=zeros(12,1);
A=[1 0 -0.5 0 0 0 0 0 0 0 0 0;
      0 0 0 1 0 -0.5 0 0 0 0 0 0;
      0 0 0 0 0 0 1 0 -0.5 0 0 0;
      0 0 0 0 0 0 0 0 0 1 0 -0.5];
b=[0;0;0;0];
Aeq=[eye(3) eye(3) eye(3) eye(3);L1 L2 L3 L4];beq=[80;0;200;0;12;0];
        x_1=-0.15;y_1=0.4;z_1=0.35;
        x_2=0.15;y_2=0.4;z_2=0.35;
        x_3=-0.15;y_3=0;z_3=0.35;
        x_4=0.15;y_4=0;z_4=0.35;
        L1=[0 z_1 y_1;-z_1 0 -x_1;-y_1 x_1 0];
        L2=[0 z_2 y_2;-z_2 0 -x_2;-y_2 x_2 0];
        L3=[0 z_3 y_3;-z_3 0 -x_3;-y_3 x_3 0];
        L4=[0 z_4 y_4;-z_4 0 -x_4;-y_4 x_4 0];
VLB=[];VUB=[];
[x,z]=quadprog(H,c,A,b,Aeq,beq,VLB,VUB)
在程序上我个人感觉好像没什么大错呀 得出的 结果是:
x =

   32.3333     (x1)
    0.0000      (x2)
   64.6667     (x3)
  -32.3333     (x4)
   -0.0000      (x5)
  -64.6667     (x6)
   64.3333     (x7)
    0.0000      (x8)
  168.6667    (x9)
   15.6667     (x10)
   -0.0000      (x11)
   31.3333     (x12)
这个结果肯定是不对的  做过很多修改 其结果与上面的都差不多  这里 首先就是要保证x3,x6,x9,x12是大于零的 (貌似这个限制条件我也不会加呀)x6就是小于零的  再者 x7 x9这个数都过于的大 我怎么弄都不知道如何让这数减小  这些理想的值应该在【20 0 50 20 0 50 20 0 50 20 0 50】这个范围左右   我试过家范围 VLB=[0;-100;0;0;-100;0;0;-100;0;0;-100;0];VUB=[110;100;100;110;100;100;110;100;100;110;100;100]; 但是出来的结果还是差不多的 x6还是负的  x7 x9结果过于大 尤其是x9  给了范围 结果还是在范围之外  规定在50左右 每次都150 160的 太离谱了  貌似范围没有作用  我尝试修改了很多 但是每次都是失败 求求哪位大侠能帮帮忙我将万分感谢 小弟不胜感激呀
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

winjade

银虫 (小有名气)

小龙_1217(金币+10): 谢谢 2011-03-16 16:57:17
从函数的使用来看,quadprog()是求最小值的,
x=quadprog (H,f,A,b,Aeq,beq,lb,ub)
其中f为规划函数,而你的程序中是一个零矩阵,再确认一下。
4楼2010-10-09 12:04:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

dreamred8087

金虫 (正式写手)

小龙_1217(金币+10): 谢谢 2011-03-16 16:57:04
建议楼主加上变量的上下界,不然Matlab可能找到的是其他的局部解,不知道对不对,呵呵...
3楼2010-09-17 17:46:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ab77977

新虫 (初入文坛)


小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
4楼: Originally posted by winjade at 2010-10-09 12:04:17
从函数的使用来看,quadprog()是求最小值的,
x=quadprog (H,f,A,b,Aeq,beq,lb,ub)
其中f为规划函数,而你的程序中是一个零矩阵,再确认一下。

f是规划函数吗?
5楼2013-04-19 10:09:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见