单纯形法matlab例题,单纯形法matlab程序.docx

单纯形法matlab程序

算法实现与分析

算法1.单纯形法

具体算例:

min

3x1+2x2-3x3=6

标准化后:

min

3x1+2x2-3x3+x4=6

用单纯形法求解,程序如下:

clear

clc

M=1000000;

A=[3,2,-3,1,0;1,-2,1,0,1];%系数矩阵

C=[-3,1,2,M,M,0];%价值矩阵

B=[6;4];

Xt=[4 5];

for i=1:length(C)-1

D=0;

for j=1:length(Xt)

D=D+A(j,i)*C(Xt(j));

end

xi(i)=C(i)-D;

end

s=[];

for i=1:length(xi)

if xi(i)<0

s=[s,i];

end

end

f=length(s);

h=1;

while(f)

for k=1:length(s)

j=1;

A

x=[];

for i=1:length(Xt)

if A(i,s(k))>0

x(j)=i;

j=j+1;

end

end

x

if(length(x)+1==1)

break;

end

y=1

x

for i=1:length(x)

if B(x(i))/A(x(i),s(k))

y=i;

end

end

y=x(y);

end

y1=Xt(y);%??3?±?á?

s

k

aa=A(y,s(k))%s(k)?a??è?±?á?

A(y,:)=A(y,:)./aa;

B(y,:)=B(y,:)./aa;

z=[];

for i=1:length(Xt)

z=[z,i];

end

z

z(y)=[];

z

Xt

for i=1:length(z);

yz=-A(z(i),s(k))

A(z(i),:)=A(z(i),:)+A(y,:).*yz

B(z(i))

B(y)

yz

B(z(i))=B(z(i))+B(y).*yz

end

for i=1:length(Xt)

if Xt(i)==y1

Xt(i)=s(k);

break

end

end

Xt

disp('×a??oó')

A=A

B=B

AB=[A,B];

for i=1:length(C)

D=0;

for j=1:length(Xt)

D=D+AB(j,i)*C(Xt(j));

end

xi(i)=C(i)-D;

end

xi

s=[];

for i=1:length(xi)-1

if xi(i)<0

s=[s,i];

end

end

s

vpa([A,B;C]);

f=length(s);

h=h+1;

if h==5

break

end

end

-xi(length(xi))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值