% programação linear - método Simplex % Prof. Reyolando Brasil - 14/04/2033 % % dimensões do problema clc clear % ninc=9; % número de incognitas neq=5; % número de equações (restrições) % % entrada das matrizes do primeiro tableau % a=[1 1 0 0 1 0 0 0 0;0 0 1 1 0 1 0 0 0;1 0 1 0 0 0 1 0 0;0 1 0 1 0 0 0 1 0;1 1 1 1 0 0 0 0 -1]; % coeficientes das equações de restrições b=[240; 300; 200; 200; 300]; % vetor de recursos c=[240 205 172 180 0 0 0 0 0]; % coeficientes da função objetivo f=0; a b c f % while(1) % % coluna da incógnita que entra % [centra,jentra]=min(c); if centra>=0 disp('Solução ótima encontrada') break end % % linha da incognita que sai % k=0; for i=1:neq if a(i,jentra)<=0 k=k+1; raz(i)=100000; else raz(i)=b(i)/a(i,jentra); end end if k==neq disp('Solução ilimitada') break end [razao,isai]=min(raz); % % faz o pivo unitário % pivo=a(isai,jentra); for j=1:ninc a(isai,j)=a(isai,j)/pivo; end b(isai)=b(isai)/pivo; % % modifica as demais linhas acima e abaixo da linha que sai para zerar a coluna % acima e abaixo do pivo % for i=1:neq if i ~= isai const=a(i,jentra); for j=1:ninc a(i,j)=a(i,j)-const*a(isai,j); end b(i)=b(i)-const*b(isai); end end const=c(jentra); for j=1:ninc c(j)=c(j)-const*a(isai,j); end f=f-const*b(isai); a b c f end