Você está na página 1de 9

ALGORITMO SIMPLEX

Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

T5-08/05/2015: Algoritmo Simplex.


Introduo
Uma pratica inicial em um problema de otimizao indistintamente de sua
aplicao na vida real procurar uma soluo bsica factvel, caso de este
estdioestudo. A, a partir dela possvel um trabalho computacional mais
timo otimizado para obter os resultados desejados.
Metodologia
O programa de otimizao Simplex foi feito na plataforma MATLAB,
sendo nosso este caso um exemplo de maximizao para o problema
proposto na pgina 35 da unidade 3 dos apontes da aula, referente ao
mtodo simplex, ; em neste caso particular, temos como restries as
mencionadas nas equaes 1, 2 e 3.

21 + 2 + 3 2

eq. [1]

21 + 2 + 3 2

eq. [2]

21 + 2 + 3 2

eq. [3]

Para maximizar o problema expressado na equao 4.

31 + 2 + 33 = Z

eq. [4]

O trabalho esDeve-se obter o mximo valor das variveis 1 2 3 para que a


expresso da equao [4], seja a maior, sendo as variveis de analises
sempre positivas, assim da seguinte forma.
x 1 0 , x 2 0 , x 3 0 ,

O processo para o algoritmo foi feito seguindo o expressado descrito nos


passos para programao de Algoritmo Simplex na pgina 33 dos apontes
mencionados.

Maio de 2015

ALGORITMO SIMPLEX
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

Paso 0:
O usurio tem que declarar os valores das matrizes requeridas
para o a analisesanlises, as quais so chamadas a, b e z.

A matriz a, tem que ser quadrada e seus valores todos positivos sendo de
caratersticas expressadas matematicamente como:
a Rmxm
A matriz b que tem os valores de:
b Rmx1
A matriz z que tem os valores de:
z R1xm
A partir delas se procede a criar a matriz cannica, a qual ter a dimenso
de Rm+1x2m+1 a qual, que a base para o a analise anlise de maximizao.
Passo 1: Como se trata de um problema de maximizao, o primeiro
aspecto para o a analise anlise so os valores da equao de otimizao.
Sendo, sim todos eles so negativos, j se conclu conclua-se que j que
uma soluo tima y e no precisa de nenhum clculo matricial.
Passo 2:
A seguir requeridorequer-se determinar o valor a ser
considerado como piv dentro do algoritmo simplex. Determina ,
determine-se o termo menor inferior a 0 na linha m+1 da matriz
cannica. Em seguida, , depois na coluna onde fica o nmero mencionado,
calculecalcula-se a razo aritmtica dos termos da ltima coluna com a
coluna selecionada anteriormente, mantendo a mesma linha para o clculo.
O, o resultado obtido vai serser armazenado no vetor div, o qual, por
meio atravs da funo min( ), gera a posio do menor valor positivo do
vetor analisado; assim foi obtidoobtm-se os valores de p e q,
indispensveis para o seguinte passo do da programao.
Passo 3:
Determinado a o endereo do piv, procede-se ao clculo de
cadaum a um os termos da nova matriz, a qual tem como objetivo
determinar um valor de maximizao para uma das variveis expressadas
na equao de otimizao [4], sendo a base para a iterao o expressado
nas equaes [5] e [6] que vo em coincidncia dos sub ndices i e p.

Maio de 2015

ALGORITMO SIMPLEX
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

Y 'ij =Y ij

Y 'ij =

Y pj
Y i p
Y pq iq

Y pj
i=p
Y pq

[5]

[6]

Depois de finalizar com todos os termos da matriz cannica,


indispensvel determinar sim se entre os valores da ltima linha existe um
valor negativo, para iniciar novamente o clculo com o novo piv, e, de
este modo, procurar uma nova coluna at chegar a uma soluo bsica
fatvel.
J no exemplo prtico, necessrio mencionar que configure-se uma
funo no MATLAB, a qual apresenta as caratersticas bsicas requeridas.
[C,B,Z]=otimsimplex(a,b,z)

(1)

A linha descrita na expresso (1) o texto da funo que tem que ser
digitada no MATLAB e, arroja lana como resultado as matrizes C,B,Z que
so a resposta do algoritmo de otimizao. Sendo:
C: a matriz cannica gerada y resultante depois do pivotao do termo
selecionado.
B: a matriz resposta que contm os valores para os termos de x1 at x2m-1.
Z: a resposta obtida para a equao de maximizao depois de substituir
os termos de x na expresso objeto do analises.
Resultados
i)

Exemplo pag. 35: Aps da execuo da funo (1), para as


matrizes que se detalham em (2), obteveobtiveram-se os
resultados expressados em (3).

[ ] []

2 1 1
2
a= 1 2 3 b= 5 z=[ 3 1 3 ]
2 2 1
6

(2)

Maio de 2015

ALGORITMO SIMPLEX

JUAN PABLO OCHOA AVILES

Mestrado em Engenharia Eltrica

C=

1
0
0
0

1
5
3
5
1
7
5

3
5
1
1
5
0 1
6
0
5

1
5
2
5
0
3
5

0
0
1
0

1
5
8
5
4
27
5

]
(3)

B=

1
5

8
5

0 0 4

[ ]

Z=

27
5

O resultado obtido pode ser contrastado com a resposta da pgina 37 dos


apontes de aula, e pode-se expressar dizer que eles convergem nos mesmos
valores.
ii)

Exemplo planteado: considere-se a o seguinte enunciado.

Um escritrio de servios complementrios de limpeza, tem trs contratos


ao ms sendo, x1, x2 e x3; assim um mximo valor a faturar de $ 30.000
por ms; a primeira preocupao que o custo da mo de obra
respectivamente tem que obedecer a um percentual de 35%, 25%, e 45%,
respectivamente, sabendo que um mximo da varivel $ 18000; outra
funo os materiais utilizados, a qual obedece a um 5%, 8% e 19%, o
mximo por esta varivel $ 2500; finalmente deve-se considerar os custos
administrativos que fazem referncia a um 10%, 9% e 13%, sendo o
mximo de inverso em esteneste item o valor de $ 3000. Maximize os
valores de cada contrato que gerarem a maior utilidade.
Analises: O primer primeiro ponto a obteno das matrizes a, b e
z, que descrevem o problema planteado indicado, expressasas quais esto
expressadas em (4).

10500 7500 13500


a= 1500 2400 5700
3000 2700 3900

]
(4)

Maio de 2015

ALGORITMO SIMPLEX
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

b=[ 18000 2500 3000 ]


z=[ 1 1 1 ]

Aps isto, requere-se apenas apenas requerido a execuo da funo


expressada em (1). E fForam obtidas as respostas expressadas em (5).

0
0
C=
1
0

0 6814,286 1 1,8571 4,428 9357,142


1
3,571
0 0,0009 0,0004
0,952
0 1,914 0 0,0008 0,0007
0,142
0
0,657
0
9,523
0,0002
1,095

B=[ 0,142 0,952 0 9357,142 0 0 ]

]
(3)

Z =[1,095 ]

Anlises dos resultados


Como se pode observar, a funo desarrolhada em MATLAB, satisfaze os
requerimentos do da analisesanlise., os Os valores obtidos so um resumo,
pois, no segundo clculo, possvel expressar mais posies decimais.
As matrizes de resposta so uma soluo bsica fatvel para cada caso,
sendo importante mencionar que requerido um analisesrequer-se uma
anlise adicional para expressar uma soluo tima de oo problema de
maximizao planteaoindicado.
As descries das linhas de programa esto expressadas no anexo 1, onde
se descrevi descreve brevemente cada um de osdos aspectos importantes
dentro do processo de programao.

Concluso
A anlise dos valores obtidos aponta como concluso que o
processo de clculo de uma soluo bsica fatvel facilmente
desenhado bajo em plataformas de programao disponveis e
fornecem uma eficincia y garantiacom eficincia e garantia
bastante confivelconfiveis.
Uma anlise dos dados gerados para o exemplo (ii), foi feito feita
para um caso real de analises anlise pessoalparticular, que

Maio de 2015

ALGORITMO SIMPLEX
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

forneci-oao qual se obteve uma concluso muito interessante, pois


no teve houve at agora uma ferramenta para vincular vrios
contratos que no tm nexo entre eles e, procurar uma relao
matemtica que procure obter uma utilidade maior, que o ponto
onde eles se vinculam-se.

Maio de 2015

ALGORITMO SIMPLEX
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

ANEXO 1
function [ canonic,Z,ZT ] = otimsimplex( a,b,z )
%otimsimplex
%
% Avalua um problema de otimizao para obter
% uma soluo bsica factvel.
%
% Sintaxes
% [A,B,ZT]=Otimsimplex(a,b,z)
%
% Descrio
%
% [A,B,ZT]=Otimsimplex(a,b,z)
%otimiza uma equao z para a sujeito a Ax=b e x >= 0
%
% Observaes
% As caractersticas das matrizes tm que ser
% A Rnxn >= 0 e B Rnx1 e Z R1xn
div=0;
i=0;
canonic=cat(2,a,eye(size(a)),b);
z=-z;
z=cat(2,z,zeros(1,length(canonic)-length(z)));
canonic=cat(1,canonic,z);
columna=-1;
[r,t]=size(canonic);
X=zeros(1,t);
Z=zeros(1,t-1);
if find(b>0)~=0
while columna <0
vectorz=canonic(r,:);
[~,q]=min(vectorz);

Construo da
matriz cannica a
partir das matrizes
a b e c, e
obteno dos
valores p e q
que so as direes

for p=1:r-1;
div(p,1)=canonic(p,t)/canonic(p,q);
end
[y1,y2,y3]=find(div>0);
for i=1:y1
div1(y1)=div(y1);
end
[~,p]=min(div1);

Maio de 2015

ALGORITMO SIMPLEX
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

for i=1:r
if i==p;
for j=1:t
canonic1(p,j)=canonic(p,j)/canonic(p,q);
end
end
if i~=p;
for j=1:t
canonic1(i,j)=canonic(i,j)(canonic(p,j)*canonic(i,q)/canonic(p,q));
end
end

end

Clculo dos
novos termos Yij
para a nova
matriz cannica
de dimenses
(r,t).

canonic=canonic1;
vectorz=canonic(r,:);
[columna,q]=min(vectorz);
end
for j=1:t-1
for i=1:r
X(j)=X(j)+abs(canonic(i,j));
end
if X(j)==1
vectorj=canonic(:,j);
[~,s]=max(vectorj);
Z(j)=canonic(s,t);
end
end
end
ZT=-canonic(r,t);
end

Seleo dos
dados para
presentao
das matrizes de
sada
canonic, Z
e ZT .

Maio de 2015

ALGORITMO SIMPLEX
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

Bibliografia
CHAPMAN, S. J. (2011). programaao em MATLAB para engenheiros.SAO
PAULO: CENAGE LEARNING.
Jaln, J. G. (2009). Aprenda Matlab 7.0. MADRID: Universidad
Politcnica de Madrid.

Pelas normas da ABNT, o certo seria que isto viesse aps a


concluso, antes dos anexos, da seguinte forma:

Referncias Bibliogrficas:
CHAPMAN, S. J. Programao em MATLAB para engenheiros.
So Paulo: Cenage Learning, 2011.
JALN, J.g. Aprenda Matlab 7.0. Madrid: Universidad
Politcnica de Madrid, 2009.

Maio de 2015

Você também pode gostar