quarta-feira, 2 de março de 2011

Simplex?

Como eu sei que vou precisar disso posteriormente no curso e não tenho o matlab instalado em casa (e nem vou instalar)...

function [x] = simplex(c,A,b)



c=c(:);
b=b(:);

[n m] = size(A);
T=zeros(n+1,m+1);
T(1:n,1:m)=A;
T(1:n,m+1) = b;
T(n+1,1:m)=c';

while ( min(T(n+1,1:m))<0 )
   [a q] = min( T(n+1,1:m) );
   ind = [];
   for i=1:n
      if(T(i,q)>0)
         ind=[ind;i];
      end
   end

   if (isempty(ind))
      break;
   end


   [raio p]=min(T(ind,m+1)./T(ind,q));
   p=ind(p);

   for i=1:n+1
      for j=1:m+1
          if (i~=p)
             T(i,1:m+1)= T(i,1:m+1)-(T(i,q)/T(p,q))*T(p,1:m+1);
          else
             T(p,1:m+1)= T(p,1:m+1)/T(p,q);
          end
      end
      T(i,:)
   end
end

T

Nenhum comentário:

Postar um comentário