📄 y.m
字号:
%对偶单纯形法
function result=y(A,B,C)
a=-1*A;
[row line]=size(A);
a=[a eye(row,row)];
b=-1*B;
c=[C zeros(1,row)];
dex=c; %dex为判别数
basic=line+1:1;line+row; %basic为基可行解
X=zeros(1,line);
X1=zeros(1,line+row);
b1=sort(b);
while(b1(1)<0)
m=0;
for i=1:length(b)
if(b(i)<m)
m=b(i); j=i; %求出最小的b
end
end;
n=a(j,:);
count=0;
for i=1:length(n)
if(n(i)>=0)
count=count+1;
end
end;
if(count==length(n))
error('无最优解');
end
seta=dex./n;
seta1=-Inf;
for i=1:length(seta)
if(seta(i)>=seta1&n(i)<0) %求出最大且为负的seta
seta1=seta(i); k=i;
end
end;
basic(j)=k;
b(j)=b(j)/a(j,k);
a(j,:)=a(j,:)/a(j,k);
for i=1:length(b)
if(i~=j)
b(i)=b(i)-b(j)*a(i,k);
a(i,:)=a(i,:)-a(j,:)*a(i,k);
end
end;
q=dex(k);
dex=dex-q*a(j,:);
b1=sort(b);
end;
for i=1:length(basic)
temp=basic(i);
X1(temp)=b(i);
end;
for i=1:length(X)
X(i)=X1(i);
end;
X=X'
X1=X1';
result=c*X1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -