% programação linear - método Simplex % Prof. Reyolando Brasil - 25/04/2022 % % dimensões do problema % clc clear ninc=5; % número de incognitas neq=3; % número de equações (restrições) % % entrada das matrizes do primeiro tableau % a=[2 1 1 0 0;1 -2 0 1 0;-3 2 0 0 1]; % coeficientes das equações de restrições b=[9; 2; 3]; % vetor de recursos c=[-5 2 0 0 0]; % coeficientes da função objetivo f=0; fant=100000; % while(1) % % coluna da incógnita que entra % centra=0; for j=1:ninc if c(j) < centra centra=c(j); jentra=j; end end if centra>0 disp('Solution is optimal') b f break end % % linha da incognita que sai % razaoa=10000; index=0; for i=1:neq if a(i,jentra) > 0 index=index+1; razao=b(i)/a(i,jentra); if razao < razaoa razaoa=razao; isai=i; end end if index==0 disp('Solution is unbounded') end end % % 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); fa=abs(f); if fa