12
1 ALGORITMO SIMPLEX Mestrado em Engenharia Elétrica JUAN PABLO OCHOA AVILES T5-08/05/2015: Algoritmo Simplex. Introdução Uma pratica inicial em um problema de otimização indistintamente de sua aplicação na vida real é procurar uma solução básica factível, caso de e ste estúdio estudo. A , a partir dela é possível um trabalho computacional mais ótimo otimizado para obter os resultados desejados. Metodologia O programa de otimização Simplex foi feito na plataforma “MATLAB”, sendo nosso este caso um exemplo de maximização para o problema proposto na página 35 da unidade 3 dos apontes da aula, referente ao método simplex, ; em n este caso particular, temos como restrições as mencionadas nas equações 1, 2 e 3. 2 1 + 2 + 3 ≤2 eq. [1] 2 1 + 2 + 3 ≤2 eq. [2] 2 1 + 2 + 3 ≤2 eq. [3] Para maximizar o problema expressado na equação 4. 3 1 + 2 + 3 3 = Z eq. [4] Maio de 2015

metodo simplex

  • Upload
    juan8a

  • View
    219

  • Download
    0

Embed Size (px)

DESCRIPTION

otimizacao

Citation preview

Page 1: metodo simplex

1

Mestrado em Engenharia Elétrica JUAN PABLO OCHOA AVILES

T5-08/05/2015: Algoritmo Simplex.

Introdução

Uma pratica inicial em um problema de otimização indistintamente de sua aplicação na vida real é procurar uma solução básica factível, caso de este estúdioestudo. A, a partir dela é possível um trabalho computacional mais ótimo otimizado para obter os resultados desejados.

Metodologia

O programa de otimização Simplex foi feito na plataforma “MATLAB”, sendo nosso este caso um exemplo de maximização para o problema proposto na página 35 da unidade 3 dos apontes da aula, referente ao método simplex, ; em neste caso particular, temos como restrições as mencionadas nas equações 1, 2 e 3.

2ᵡ1 + ᵡ2 + ᵡ3 ≤2 eq. [1]

2ᵡ1 + ᵡ2 + ᵡ3 ≤2 eq. [2]

2ᵡ1 + ᵡ2 + ᵡ3 ≤2 eq. [3]

Para maximizar o problema expressado na equação 4.

3ᵡ1 + ᵡ2 + 3ᵡ3 = Z eq. [4]

O trabalho esDeve-se obter o máximo valor das variáveis ᵡ1 ᵡ2 ᵡ3 para que a

expressão da equação [4], seja a maior, sendo as variáveis de analises sempre positivas, assim da seguinte forma.

x1≥ 0 , x2≥ 0 , x3 ≥ 0 ,

O processo para o algoritmo foi feito seguindo o expressado descrito nos passos para programação de Algoritmo Simplex na página 33 dos apontesmencionados.

Maio de 2015

Marcos, 06/04/15,
“ótimo” é um superlativo e não aceita comparativos junto.
Marcos, 06/04/15,
Não entendi o termo, novamente. E não encontrei termo parecido em espanhol. O que quis dizer? Talvez até esteja correto, mas podemos buscar um termo de mais fácil compreensão.
Marcos, 06/04/15,
Está correto, mas não é usado para procedimentos. Expressar tem a ver com emitir opiniões, pontos de vista.
Marcos, 06/04/15,
Não conheço esta palavra. O que quis dizer?
Page 2: metodo simplex

2

Mestrado em Engenharia Elétrica JUAN PABLO OCHOA AVILES

Paso 0: O usuário tem que declarar os valores das matrizes requeridas para o a analisesanálises, as quais são chamadas “a”, “b” e “z”.

A matriz “a”, tem que ser quadrada e seus valores todos positivos sendo de caraterísticas 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 canônica, a qual terá a dimensão de Rm+1x2m+1 a qual, que é a base para o a analise análise de maximização.

Passo 1: Como se trata de um problema de maximização, o primeiro aspecto para o a analise análise é são os valores da equação de otimização. Sendo, sim todos eles são negativos, já se concluí concluía-se que já que é uma solução ótima y e no precisa de nenhum cálculo 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 canônica. Em seguida, , depois na coluna onde fica o número mencionado, calculecalcula-se a razão aritmética dos termos da última coluna com a coluna selecionada anteriormente, mantendo a mesma linha para o cálculo. O, o resultado obtido vai serserá armazenado no vetor “div”, o qual, por meio através da função “min( )”, gera a posição do menor valor positivo do vetor analisado; assim foi obtidoobtêm-se os valores de “p” e “q”, indispensáveis para o seguinte passo do da programação.

Passo 3: Determinado a o endereço do pivô, procede-se ao cálculo de cadaum a um os termos da nova matriz, a qual tem como objetivo determinar um valor de maximização para uma das variáveis expressadas na equação de otimização [4], sendo a base para a iteração o expressado nas equações [5] e [6] que vão em coincidência dos sub índices “i” e “p”.

Maio de 2015

Marcos, 06/04/15,
“Expressado” é apenas na voz ativa. Ex: “Ele tinha expressado seu desejo.” Na voz passiva, usa-se “expresso”. Ex: “Seu desejo já tinha sido expresso por ele.” (Mas é verdade que mesmo brasileiros às vezes erram isso.)
Page 3: metodo simplex

3

Mestrado em Engenharia Elétrica JUAN PABLO OCHOA AVILES

Y ij' =Y ij−

Y pj

Y pq

Y iq i ≠ p [5]

Y ij' =

Y pj

Y pq

i=p [6]

Depois de finalizar com todos os termos da matriz canônica, é indispensável determinar sim se entre os valores da última linha existe um valor negativo, para iniciar novamente o cálculo com o novo pivô, e, de este modo, procurar uma nova coluna até chegar a uma solução básica fatível.

Já no exemplo prático, é necessário mencionar que configure-se uma função no MATLAB, a qual apresenta as caraterísticas básicas requeridas.

[C,B,Z]=otimsimplex(a,b,z) (1)

A linha descrita na expressão (1) é o texto da função que tem que ser digitada no MATLAB e, arroja lança como resultado as matrizes C,B,Z que são a resposta do algoritmo de otimização. Sendo:

C: a matriz canônica gerada y resultante depois do pivotação do termo selecionado.

B: a matriz resposta que contém os valores para os termos de x1 até x2m-1.

Z: é a resposta obtida para a equação de maximização depois de substituir os termos de “x” na expressão objeto do analises.

Resultados

[i)] Exemplo pag. 35: Após da execução da função (1), para as matrizes que se detalham em (2), obteveobtiveram-se os resultados expressados em (3).

a=[2 1 11 2 32 2 1]b=[256 ] z=[ 3 1 3 ] (2)

Maio de 2015

Marcos, 06/04/15,
“Após” já é uma preposição e dispensa outras, diferente do termo “depois” (adjunto adverbial), que requer a preposição “de” antes de um complemento.Ex: “Irei à sua casa depois.” (mais tarde)“Irei à sua casa depois da aula.”“Irei à sua casa após a aula.”
Marcos, 06/04/15,
Quando uma expressão adverbial (indicando lugar, tempo, modo etc.) é anteposta à oração, vem separada por vírgula.
Marcos, 06/04/15,
“de este” não existe em português; apenas “deste”.
Page 4: metodo simplex

4

Mestrado em Engenharia Elétrica JUAN PABLO OCHOA AVILES

C=[115

035

−15

015

035

1−15

25

085

0 1 0 −1 0 1 4

075

065

35

0275

] (3)

B=[ 15

085

0 0 4]Z=[−27

5 ]O resultado obtido pode ser contrastado com a resposta da página 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 escritório de serviços complementários de limpeza, tem três contratos ao mês sendo, x1, x2 e x3; assim um máximo valor a faturar é de $ 30.000 por mês; a primeira preocupação é que o custo da mão de obra respectivamente tem que obedecer a um percentual de 35%, 25%, e 45%, respectivamente, sabendo que um máximo da variável é $ 18000; outra função é os materiais utilizados, a qual obedece a um 5%, 8% e 19%, o máximo por esta variável é $ 2500; finalmente deve-se considerar os custos administrativos que fazem referência a um 10%, 9% e 13%, sendo o máximo de inversão em esteneste item o valor de $ 3000. Maximize os valores de cada contrato que gerarem a maior utilidade.

Analises: O primer primeiro ponto é a obtenção das matrizes “a”, “b” e “z”, que descrevem o problema planteado indicado, expressasas quais estão expressadas em (4).

a=[10500 7500 135001500 2400 57003000 2700 3900 ]

(4)b=[ 18000 2500 3000 ]

z=[ 1 1 1 ]

Maio de 2015

Marcos, 06/04/15,
Novamente, não descobri o que quis dizer.
Page 5: metodo simplex

5

Mestrado em Engenharia Elétrica JUAN PABLO OCHOA AVILES

Após isto, requere-se apenas apenas é requerido a execução da função expressada em (1). E fForam obtidas as respostas expressadas em (5).

C=[0 0 6814,286 1 1,8571 −4,428 9357,1420 1 3,571 0 0,0009 −0,0004 0,9521 0 −1,914 0 −0,0008 0,0007 0,1420 0 0,657 0 9,523 0,0002 1,095

] B=[ 0,142 0,952 0 9357,142 0 0 ] (3)

Z=[−1,095 ]

Análises dos resultadosComo se pode observar, a função desarrolhada em MATLAB, satisfaze os requerimentos do da analisesanálise., os Os valores obtidos são um resumo, pois, no segundo cálculo, é possível expressar mais posições decimais.

As matrizes de resposta são uma solução básica fatível para cada caso, sendo importante mencionar que é requerido um analisesrequer-se uma análise adicional para expressar uma solução ótima de oo problema de maximização planteaoindicado.

As descrições das linhas de programa estão expressadas no anexo 1, onde se descrevi descreve brevemente cada um de osdos aspectos importantes dentro do processo de programação.

Conclusão

A análise dos valores obtidos aponta como conclusão que o processo de cálculo de uma solução básica fatível é facilmente desenhado bajo em plataformas de programação disponíveis e fornecem uma eficiência y garantiacom eficiência e garantia bastante confiávelconfiáveis.

Uma análise dos dados gerados para o exemplo (ii), foi feito feita para um caso real de analises análise pessoalparticular, que forneci-oao qual se obteve uma conclusão muito interessante, pois não teve houve até agora uma ferramenta para vincular vários contratos que não têm nexo entre eles e, procurar uma relação matemática que procure obter uma utilidade maior, que é o ponto onde eles se vinculam-se.

Maio de 2015

Marcos, 06/04/15,
Não se inicia uma oração com pronome oblíquo em português formal (me, te, se, o, a. nos, lhe(s) etc.). No entanto, caso o sujeito apareça no início, ele vem antes do verbo, não depois. Ex:“Disse-lhe algo importante.” ou “Eu lhe disse algo importante”. Corretos.Mas nunca: “Eu disse-lhe....” (incorreto).
Marcos, 06/04/15,
Português oral: ter. Português formal: haver (no sentido de “existir”, não no sentido de posse).
Marcos, 06/04/15,
No caso de matemática, eu imagino que talvez disséssemos “indicar” um problema. O que em espanhol se diz “plantear”, em português seria “estabelecer” na maioria dos casos. Mas, em matemática, já vi “indicar” (ao menos no ensino de colégio). Sugiro verificar com o professor da sua área qual o melhor termo em português aqui. O verbo “plantear” não existe em português.
Marcos, 06/04/15,
Em português brasileiro, pode-se dizer “fatível” ou “factível”. Não há problema. Mas você usa ora uma, ora a outra forma. Sugiro escolher uma e usar sempre essa. A mais comum é “factível”.
Marcos, 06/04/15,
“Satisfazer” é conjugado igual a “fazer”. Eu satisfaço, você/ele satisfaz, nós satisfazemos, eles/vocês satisfazem.
Marcos, 06/04/15,
Orações adverbiais (que dizem quando, onde ou como algo ocorreu), quando antepostas, são também separadas por vírgula.
Page 6: metodo simplex

6

Mestrado em Engenharia Elétrica JUAN PABLO OCHOA AVILES

Maio de 2015

Page 7: metodo simplex

7

Mestrado em Engenharia Elétrica JUAN PABLO OCHOA AVILES

ANEXO 1

function [ canonic,Z,ZT ] = otimsimplex( a,b,z ) %otimsimplex% % Avalua um problema de otimização para obter% uma solução básica factível.% % Sintaxes% [A,B,ZT]=Otimsimplex(a,b,z)% % Descrição % % [A,B,ZT]=Otimsimplex(a,b,z) %otimiza uma equação z para a sujeito a Ax=b e x >= 0 % % Observações% As características das matrizes têm 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)~=0while columna <0 vectorz=canonic(r,:); [~,q]=min(vectorz); 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

Construção da matriz canônica a partir das matrizes “a” “b” e “c”, e obtenção dos valores “p” e “q” que são as direções do elemento pivô.

Page 8: metodo simplex

8

Mestrado em Engenharia Elétrica 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 endend

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); endendendZT=-canonic(r,t);end

Maio de 2015

Cálculo dos novos termos Yij para a nova matriz canônica de dimensões (r,t).

Seleção dos dados para presentação das matrizes de saída “canonic”, “Z” e “ZT” .

Page 9: metodo simplex

9

Mestrado em Engenharia Elétrica JUAN PABLO OCHOA AVILES

Bibliografia

CHAPMAN, S. J. (2011). programaçao em MATLAB para engenheiros.SAO PAULO: CENAGE LEARNING.

Jalón, J. G. (2009). Aprenda Matlab 7.0. MADRID: Universidad Politécnica de Madrid.

Pelas normas da ABNT, o certo seria que isto viesse após a conclusão, antes dos anexos, da seguinte forma:

Referências Bibliográficas:

CHAPMAN, S. J. Programação em MATLAB para engenheiros. São Paulo: Cenage Learning, 2011.

JALÓN, J.g. Aprenda Matlab 7.0. Madrid: Universidad Politécnica de Madrid, 2009.

Maio de 2015