单纯形算法 matlab

%单纯形

%目标函数标准化
% 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;
        disp('find')
        xb
        break
    else
        p=(find(cn==min(cn)));%enter to B
        b=B;
        a=A(:,p);
        a=Ba;
        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