Anthares Software HP48 Home Page

Manual do Usuário

Programa Simplex Versão 2.X

Nessa nova versão do programa para simplex, a interface com o usuário ficou mais amigável, sendo que as respostas também ficaram mais completas. Para utilizar bem esse manual, e necessário algum conhecimento de modelagem de tableau para simplex, pois esse programa ainda está trabalhando com uma matriz ( tableau ) definida pelo usuário, assim como as definições das variáveis, dos passos passos necessários.

OBS: O método com duas fases ( MAX / MIN ) deve ser usado, quando uma ou mais restrições, forem do tipo: >= ( Maior Igual ) ou do tipo: = ( Igual ). Sendo que o problema de Minimização, so tem com duas fases.

Nos exemplos abaixos, foram usados os arquivos contidos na pasta de exercícios/exemplos, que acompanha a versão 1.0 do programa, para quem vai utilizar diretamente pela primeira vez a versão 2.0 do programa, recomento instalar os exemplos, contido no arquivo: ExeMat

1 - Maximização ( Simplex com Uma Fase )

  1. Transfira o arquivo Simplex 2.0 para a sua HP48
  2. Entre no diretório PRGMAT,a seguinte tela aparecerá:
  3. Simplex01.gif (1772 bytes)
  4. O diretório EXERC, contém os exercicios da apostila e alguns exemplos.
  5. Simplex02.gif (1936 bytes)
  6. O diretório PROG, contém os programas para simplex.
  7. Simplex03.gif (1922 bytes)
  8. Para editar a sua matriz basta copiar o Tableau Incial do proplema ( as primeiras linhas da matriz deve conter as restrições e a ultima linha a função objetiva Z ), porém, vamos utilizar um exercicio previamente gravado
    Base X1 X2 X3 XA XB Solução
    XA 6 3 5 1 0 30
    XB 2 4 5 0 1 20
    -Z 3 1 4 0 0 0
  9. No diretório EXERC, escolha o EX12
  10. Simplex04.gif (2608 bytes)
  11. Entre do diretório PROG, e execute SIMPLEX
  12. Simplex05.gif (2707 bytes)
  13. No menu de opções: Escolha a primeira opção ( MAX: SIMPLES )
  14. Simplex25.gif (2816 bytes)
  15. Pronto o Simplex está resolvido,agora basta ir copiando os resultados da tela
  16. Simplex26.gif (2656 bytes)
  17. Pressiome a seta para baixo da HP48 na tela acima
  18. Simplex06.gif (2267 bytes)
  19. Após copiar a matriz, pressione ENTER ou ON e apague a matriz com o DROP
  20. As próximas 2 linhas indicam, quem entrou e quem saiu da BASE
  21. Simplex07.gif (2547 bytes)
  22. Cuidado, o "IN: 3" indica que a variável da terceira coluna entrou na base e o "OUT: 2" indica que a variável da segunda linha do tableau sai da base
  23. Apague essas duas linha ( DROP e depois DROP de novo )
  24. Repita os passos 15 a 21 para o restante o Tableu
  25. A última Matriz, tem a solução do proplema:
  26. Simplex08.gif (2490 bytes)
  27. Base X1 X2 X3 XA XB Solução
    X1 1 -0.25 0 0.25 -0.25 2.5
    X3 0 0.9 1 0.1 0.3 3
    -Z 0 -1.85 0 -0.35 -0.45 -19.5
  28. Solução Z* = 19,5  X1* = 2,5  X2* = 0 ( não esta na base )  X3* = 3
  29. CUIDADO: Nesse modo simples o programa não indica qual a variável que está na base, por isso você deve ir acompanhando quem entrou e quem saiu para saber no resultado, quem está na base

 

2 - Conhecendo  as principais funções que fazem parte do algorítmo do programa Simplex

Função Descrição
SIMPLEX Esse é o programa principal ( automático ). Parâmetros:  Matriz com dados do problemas na pilha 1.
INVERTE Essa função inverte os dados da pilha ( ultimo para o primeiro nível e vice-versa )
MAIN Função que resolve o Simplex de Maximização ( controla a chamada das funções MAXLI, MINCO e CALC ). Parâmetros: Matriz inicial do problema
CALC Função que calcula uma passagem do Tableau. Parâmentros: Matriz do problema ( nível 3 ), Número da coluna da variável que vai entrar na base ( nível 2 ) e o número da linha aonde a variável vai sair da base ( nível 1 )
MINCO Essa função encontra qual a linha que contêm a variável que vai sair da base. Parâmentros: Matriz do Problema ( Nível 2 ) e o número da coluna da variável que vai entrar na base ( Nível 1 )
MAXLI Essa função encontra a coluna da variável que vai entrar na base. Parâmentros: Matriz do problema ( Nível 2 ) e o número 1 ( Sempre, nivel 1 ). ATENÇÃO: Se o valor retornado no nível 1 for igual a 0, então todos os valores da função Objetiva já são 0 ou negativos.
PRETAB Essa função prepara o Z' do tableau inicial com as variáveis artificiais

 

3 - Maximização ( simples ), Manualmente

  1. Transfira o arquivo ProgMat para a sua HP48
  2. Entre no diretório PRGMAT,a seguinte tela aparecerá:
  3. Simplex01.gif (1772 bytes)
  4. O diretório EXERC, contém os exercicios da apostila e alguns exemplos.
  5. Simplex02.gif (1936 bytes)
  6. O diretório PROG, contém os programas para simplex.
  7. Simplex03.gif (1922 bytes)
  8. Para editar a sua matriz basta copiar o Tableau Incial do proplema ( as primeiras linhas da matriz deve conter as restrições e a ultima linha a função objetiva Z ), porém, vamos utilizar um exercicio previamente gravado
    Base X1 X2 X3 XA XB Solução
    XA 6 3 5 1 0 30
    XB 2 4 5 0 1 20
    -Z 3 1 4 0 0 0
  9. No diretório EXERC, escolha o EX12
  10. Simplex04.gif (2608 bytes)
  11. Agora, vamos começar a resolver o Simplex manualmente, entre no diretório PROG
  12. Primeiro passo, achar qual a variável que vai entrar na base: Execute o MAXLI com os parâmetros: Matriz do problema ( nível 2 ) e o número 1 ( Nível 1 )
  13. Simplex09.gif (2125 bytes)
  14. Resposta, a função retornará um valor no nível 1, esse valor indica qual a coluna que contém a variável que vai entrar na base ( no nosso exemplo, a variável que está na coluna 3, vai entrar na base ).
  15. Simplex10.gif (2129 bytes)
  16. Agora, execute a função MINCO, para saber qual a linha da variável que vai sair da base. O resultado é colocado no nível 1 da pilha.
  17. Simplex11.gif (2267 bytes)
  18. Com esses dados: Matriz do Problema no nível 3, número da coluna que vai entrar na base no nível 2 e o número da linha que vai sair da base no nível 1. Execute a função CALC, teremos uma nova matriz
  19. Simplex12.gif (2599 bytes)
  20. Repita os passos 12 a 19
  21. Mas quando devemos parar ?. Para saber se ja encontramos a solução do problema é simples, ao executar a função MAXLI, se o retorno do nível 1 for igual a 0, então nao temos mais nenhuma variável positiva maior que zero na função objetiva, logo, encontramos a solução do problema.

 

4 - Maximização/ Minimização com 2 Fases

O processo para resolver Maximização / Minimização com duas fases, são idênticos, tomando somente o cuidado de escolher no menu principal, a opção desejada.

Vamos resolver o seguinte problema:

Simplex13.gif (2216 bytes)

passando para a forma canônica, teremos:

Simplex14.gif (1735 bytes)

O tableau inicial ficará ( esse e o tableu que iremos utilizar na HP48 )

Base xa xb xc xad xe Solução
xad 30 50 -1 1 0 320
xe 1 2 0 0 1 12
Z'' 0 0 0 -1 0 0

Repare que a função Z' não foi calculada, porque o programa realizará essa tarefa. Essa linha contém todos os valores igual a zero e o valor -1, nas colunas que se encontram as variáveis artificiais.

  1. No diretório EXERC, escolha o MC
  2. Simplex15.gif (2644 bytes)
  3. Agora, entre no diretório PROG.
  4. Com a Matriz do problema na pilha, execute o programa SIMPLEX, no menu, escolha a terceira opção: MIN: 2 FASES.
  5. Simplex27.gif (2823 bytes)
  6. Na tela seguinte, temos quatro campos de entradas. Primeiro campo: VARIÁVEIS, nesse item devemos escrever as variáveis utilizadas no problema. ( com letras / numeros, ficando ao seu gosto ).
  7. Simplex28.gif (2433 bytes)
  8. Segundo Campo: TIPO, esse é a parte mais crítica do programa. Devemos entrar com os tipos que corresponde as variáveis digitadas anteriormente, sendo: TIPO 1 ( Digitar o número 1 ), para as variáveis básicas, TIPO 2: Variáveis de folga e ou excesso, TIPO 3: Variáveis artificiais. No nosso exemplo, as variáveis XA e XB são básicas, sendo do tipo 1, as variáveis XC e XD são de folga/excesso, sendo do tipo 2 e a variável XAD é artificial, sendo do tipo 3. A entrada ficará de seguinte maneira:
  9. Simplex29.gif (2574 bytes)
  10. Terceiro Campo: FUNÇÃO Z, devemos digitar os coeficientes da função objetiva ( MIN Z ) do problema
  11. Simplex30.gif (2610 bytes)
  12. Quarto Campo: BASE, nesse campo, devemos colocar os nomes das variáveis que estão na base no tableau inicial, normalmente as articifiais e ou as de folga/excesso.
  13. Simplex31.gif (2677 bytes)
  14. Após ter digitados as campos corretamente, pressione OK
  15. Simplex32.gif (2808 bytes)
  16. Pronto, o nosso problema de Minimização está resolvido. Agora, basta ir copiando os resultados e apagando os dados da pilha assim que copiados ( do mesmo modo que foi feito com o de maximização ). Os valores IN e OUT indicaram qual foi as variaveis que entraram e sairam da base.
  17. Ao ser copiado, os resultados, em um determinado ponto aparecerá a palavra "SBI", indicando o final da primeira fase, bem como as variáveis que se encontram na base nesse ponto, gerando o seguinte tableau:
  18.  
    Base xa xb xc xad xe Solução
    xa 1 0 -.2 .2 -5 4
    xb 0 1 .1 -.1 3 4
    Z'' 0 0 0 -1 0 0
  19. Ao chegar no final temos a palavra "SOLUÇÃO", indicando que a próxima matriz e a solução do problema.
  20. Simplex33.gif (2339 bytes)
  21.  
    Base xa xb xc xe Solução
    xa 1 0 -.2 -5 4
    xb 0 1 .1 3 4
    Z'' 0 0 -1000 -15000 140000
  22. Z* = 140000,  XA* = 4,  XB* = 4,  XC=XE=0

 

BotaoVoltar.gif (2695 bytes)

Dúvidas, sugestões, comentários: Anthares Software E-Mail