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