数学建模社区-数学中国

标题: 求助!关于Matlab线性规划的问题。。。请大家帮帮忙,谢谢! [打印本页]

作者: JimOu    时间: 2013-1-22 23:09
标题: 求助!关于Matlab线性规划的问题。。。请大家帮帮忙,谢谢!
                                题目    max f=0.05x0+0.27x1+0.19x2+0.185x3+0.185x4
                                          st.  x0+1.01x1+1.02x2+1.045x3+1.065x4=1
                                                0.025x1<=a
                                                0.015x2<=a
                                                0.055x3<=a
                                                0.026x4<=a
                                                x0,x1,x2,x3,x4>=0
                      a=0,从步长为0.001进行循环搜索,到a=0.05为止。
                     
编程如下:
                     clc,clear a=0;
                     hold on
                     while a<0.05     
                         c=[-0.05,-0.27,-0.19,-0.185,-0.185];     
                         A=[zeros(4,1),diag([0.025,0.015,0.055,0.026])];     
                         b=a*ones(4,1);     
                         Aeq=[1,1.01,1.02,1.045,1.065];     
                         beq=1;     
                         LB=zeros(5,1);     
                         [x,Q]=linprog(c,A,b,Aeq,beq,LB);   
                         Q=-Q;     
                         plot(a,Q,'.r');   
                         a=a+0.001;
                     end
                         xlabel('a'),ylabel('Q')
结果输出的图像为空白(就是图像是什么也没有),想问下大家这个编程代码哪里错了?
图片:
                             
                                 
            
作者: 新手ttt    时间: 2013-1-22 23:09
你把clear后面加一个分号就可以了,你把a给clear了!!!
clc,clear ;a=0;
                     hold on
                     while a<0.05     
                         c=[-0.05,-0.27,-0.19,-0.185,-0.185];     
                         A=[zeros(4,1),diag([0.025,0.015,0.055,0.026])];     
                         b=a*ones(4,1);     
                         Aeq=[1,1.01,1.02,1.045,1.065];     
                         beq=1;     
                         LB=zeros(5,1);     
                         [x,Q]=linprog(c,A,b,Aeq,beq,LB);   
                         Q=-Q;     
                         plot(a,Q,'.r');   
                         a=a+0.001;
                     end
                         xlabel('a'),ylabel('Q')

作者: JimOu    时间: 2013-1-23 09:29
自顶。。。
作者: JimOu    时间: 2013-1-24 11:15
自顶,希望有能力的人可以答复。
作者: 新手ttt    时间: 2013-1-24 11:21
你把clear后面加一个分号就可以了,你把a给clear了!!!
clc,clear ;a=0;
                     hold on
                     while a<0.05     
                         c=[-0.05,-0.27,-0.19,-0.185,-0.185];     
                         A=[zeros(4,1),diag([0.025,0.015,0.055,0.026])];     
                         b=a*ones(4,1);     
                         Aeq=[1,1.01,1.02,1.045,1.065];     
                         beq=1;     
                         LB=zeros(5,1);     
                         [x,Q]=linprog(c,A,b,Aeq,beq,LB);   
                         Q=-Q;     
                         plot(a,Q,'.r');   
                         a=a+0.001;
                     end
                         xlabel('a'),ylabel('Q')
作者: 新手ttt    时间: 2013-1-24 11:26
附件是你的图

作者: 新手ttt    时间: 2013-1-24 11:34
你把clear后面加一个分号就可以了,你把a给clear了!!! clc,clear ;a=0;                       hold on                       while a<0.05                               c=[-0.05,-0.27,-0.19,-0.185,-0.185];                               A=[zeros(4,1),diag([0.025,0.015,0.055,0.026])];                               b=a*ones(4,1);                               Aeq=[1,1.01,1.02,1.045,1.065];                               beq=1;                               LB=zeros(5,1);                               [x,Q]=linprog(c,A,b,Aeq,beq,LB);                              Q=-Q;                               plot(a,Q,'.r');                              a=a+0.001;                       end                          xlabel('a'),ylabel('Q')
作者: JimOu    时间: 2013-1-25 09:52
新手ttt 发表于 2013-1-24 11:21
你把clear后面加一个分号就可以了,你把a给clear了!!!
clc,clear ;a=0;
                     hold o ...

哎啊~太粗心了。。。




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