% programação linear - método Simplex % Prof. Reyolando Brasil - 14/04/2023 % clear clc % dimensões do problema % ninc=5; % número de incognitas neq=3; % número de equações (restrições) % % entrada das matrizes do primeiro tableau % a=[1 1 1 0 0;1/28 1/14 0 1 0;1/14 1/24 0 0 1]; % coeficientes das equações de restrições b=[16; 1; 1]; % vetor de recursos c=[-400 -600 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