%单纯形
%目标函数标准化
% min x1-3x2+2x3
%输入参量
N=[3 -1 2;-2 4 0;-4 3 8];
B=eye(3);
A=[N B];
cn=[1;-3;2];
cb=zeros(3,1);
c=[cn;cb];
b=[7;12;10];
while(1)
invb=inv(B);
cn=cn-N‘*invb‘*cb;
if cn>=0
xb=B\b;
disp(‘find‘)
xb
break
else
p=(find(cn==min(cn)));%enter to B
b=B\b;
a=A(:,p);
a=B\a;
m=b./a;
q=(find(m==min(m(m>0))));%out of B
%swap
t=B(:,q);
B(:,q)=N(:,p);
N(:,p)=t;
t=cb(q);
cb(q)=cn(p);
cn(p)=t;
end
end
B
n=size(A,2); %提取A的列数
a=zeros(size(A‘));
for i=1:n
a(i,:)=A(:,i);
end
x=zeros(1,6);
for i=1:n
for j=1:3
if a(i,:)==B(:,j)‘
x(i)=xb(j);
end
end
end
x
原文:https://www.cnblogs.com/wander-clouds/p/9239248.html