线性规划(matlab实现)

那天上了线性规划,老师总是说,编程怎么实现,一本天大出的薄薄的最优化方法的书,还有程序设计的步骤,我晚上就试了试,这个数组设置,是按照书上的一个例题。高兴的是单纯型表的遍历正确,但还没有最后输出最有值,当时有点困了。

B=[1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1];

b=[6;8;4;3];

CB=[0;0;0;0];

C=[-2;-3;0;0;0;0];

a=[ ];

A=[1 1 1 0 0 0;1 2 0 1 0 0;1 0 0 0 1 0;0 1 0 0 0 1];

Bin=inv(B);

TB=[ ];%单纯型表

TB(1:4,1)=Bin*b;

TB(1:4,2:7)=A;

TB(1:4,8)=[inf;inf;inf;inf];

TB(5,1)=inf;

TB(5,2:7)=C'-CB'*Bin*A;

TB(5,8)=inf;

display(TB)%单纯型表制造完毕

 

while 1

   p=find(TB(5,2:7)<0);%step2

   if(isempty(p)) 

       check=1;

       break;

   else

       [out_mean,out_order]=min(TB(5,2:7));

       q=find(TB(1:4,out_order+1)>0);

       if(isempty(q))%step3

           check=0;

           break;

       end

   end

   for i=1:4

       s=out_order+1;

       if TB(i,s)>0

           TB(i,8)=TB(i,1)/TB(i,s)

       else

           TB(i,8)=inf

       end

   end

   [in_mean,in_order]=min(TB(1:4,8));

   TB(in_order,:)=TB(in_order,:)/TB(in_order,s);

   for i=1:4

       if i~=in_order

           TB(i,1)=TB(i,1)-TB(in_order,1)*TB(i,s)/TB(in_order,s);

       end

   end

   z=TB(5,s);

   for j=2:7

       TB(5,j)=TB(5,j)-z*TB(in_order,j)/TB(in_order,s);

 

 

   end

 

   for i=1:4

       if i~=in_order

            TB(i,2:7)=TB(i,2:7)-TB(in_order,2:7).*TB(i,s)

 

       end

 

   end

 

end

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值