Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Programa LINDO: Manual de Referência, Manuais, Projetos, Pesquisas de Pesquisas Operacionais

Manual sobre o programa LINDO, usado para programação linear dentro da Pesquisa Operacional.

Tipologia: Manuais, Projetos, Pesquisas

Antes de 2010

Compartilhado em 28/07/2010

pedro-henrique-gouvea-7
pedro-henrique-gouvea-7 🇧🇷

4.9

(7)

10 documentos

1 / 19

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
LINDO:
MANUAL DE REFERÊNCIA
Aloísio de Castro Gomes Júnior
Marcone Jamilson Freitas Souza
Projeto patrocinado pelo programa PRÓ-ATIVA da UFOP
DEPARTAMENTO DE COMPUTAÇÃO
UNIVERSIDADE FEDERAL DE OURO PRETO
JANEIRO DE 2004
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Pré-visualização parcial do texto

Baixe Programa LINDO: Manual de Referência e outras Manuais, Projetos, Pesquisas em PDF para Pesquisas Operacionais, somente na Docsity!

LINDO:

MANUAL DE REFERÊNCIA

Aloísio de Castro Gomes Júnior

Marcone Jamilson Freitas Souza

Projeto patrocinado pelo programa PRÓ-ATIVA da UFOP

DEPARTAMENTO DE COMPUTAÇÃO UNIVERSIDADE FEDERAL DE OURO PRETO JANEIRO DE 2004

Conteúdo

Capítulo 1

LINDO

1.1 Introdução

1.1.1 O que é o LINDO?

LINDO (Linear, INteractive, and Discrete Optimizer) é uma conveniente, mas poderosa ferramenta para resolver Problemas de Programação linear, inteira e quadrática.

1.1.2 Sintaxe de um Modelo LINDO

Um Modelo LINDO deverá conter os seguinte itens:

  • Função objetivo (fo) que deverá iniciar com os comandos MAX para maximizar e MIN para Minimizar e à frente deverá ser colocada a função objetivo.
  • A declaração SUBJECT TO (sujeito a) que pode ser substituído por st ou s.t. e logo após serão declaradas as restrições do problema.
  • Para nalizar deveremos declarar o comando END. Observação: As variáveis devem ser declaradas com no máximo 8 letras e nas linhas com as restrições deve ser colocado ")"logo após o nome da restrição.

1.2 Exemplos de Modelos LINDO

1.2.1 Todas as variáveis são não negativas

Seja o seguinte problema: Problema da Dieta Um nutricionista precisa estabelecer uma dieta contendo, pelo menos, 11mg de vitamina A, 70mg de vitamina C e 250 mg de vitamina D. A tabela abaixo resume a quantidade de cada

vitamina em disponibilidade nos alimentos leite, carne, peixe e salada e apresenta, também, a necessidade diária dessas vitaminas e os custos de cada alimento. Calcular as quantidades dos quatro alimentos que devem ser incluídos na dieta diária, a m de que os seguintes requisitos nutricionais sejam satisfeitos a custo mínimo.

Tabela de Requisitos Nutricionais e Custo dos Alimentos Alimento/ Leite Carne Peixe Salada Requisito Nutricional Vitamina (l) (Kg) (Kg) (100g) Mínimo A 2 mg 2 mg 10 mg 20 mg 11 mg C 50 mg 20 mg 10 mg 30 mg 70 mg D 80 mg 70 mg 10 mg 80 mg 250 mg Custo (R$) 1,20 5,00 7,00 1, Modelando o problema, obtemos o seguinte PPL: min 1 , 20 x 1 + 5 , 00 x 2 + 7 , 00 x 3 + 1 , 00 x 4 s.a 2 x 1 + 2 x 2 + 10 x 3 + 20 x 4 ≥ 11 50 x 1 + 20 x 2 + 10 x 3 + 30 x 4 ≥ 70 80 x 1 + 70 x 2 + 10 x 3 + 80 x 4 ≥ 250 x 1 , x 2 , x 3 , x 4 ≥ 0 O modelo LINDO para este PPL é apresentado na gura 1.1.

Figura 1.1: Modelo LINDO para o problema da dieta

Depois de digitado o modelo clique no menu SOLVE ⇒ COMPILE MODEL(CTRL+E), em seguida clique novamente em SOLVE ⇒ SOLVE(CTRL+S). Aparecerá uma tela parecida como na gura 1.2.

1.2.2 Existem variáveis inteiras

Seja o seguinte problema: Problema da Fábrica de móveis Uma grande fábrica de móveis dispõe de um estoque de 250m de tábuas, 600m de prancha e 500m de painéis de conglomerado. A fábrica normalmente oferece uma linha de móveis composta

Figura 1.2: Solução para o problema da Dieta

Figura 1.3: Modelo LINDO para o problema da fábrica de móveis

Figura 1.4: Forma alternativa do Modelo LINDO para o problema da fábrica de móveis

max x 1 + 3 x 2 s.a 3 x 1 + 2 x 2 ≤ 180 x 1 + x 2 ≥ 20 x 1 ≤ 40 x 2 ≤ 60 x 2 ≥ 10 x 1 , x 2 ≥ 0 Neste modelo podemos observar a presença de variáveis limitadas superiormente e inferiormente. Neste caso, para evitar a ampliação da dimensão da base, devemos colocar após o comando END, os comandos SUB [nome da variável] [valor limite] para limitar a variável superiormente e SLB [nome da variável] [valor limite] para limitar a variável inferiormente. A gura 1.5 ilustra a utilização de variáveis canalizadas.

Figura 1.5: Modelo LINDO para o problema da confeitaria

1.2.4 Existem variáveis binárias

Seja o seguinte problema: Problema do Sistema de Defesa Antiaérea

Um determinado conjunto de armas antiaéreas está distruibuído de forma a defender uma cidade de um ataque. São n plataformas de mísseis. Sabe-se que dij é a distância entre a plataforma da arma i e a ameaça j (avião inimigo ou míssil), que o alcance máximo dos mísseis é de ri, que o custo de cada tiro sobre uma ameaça j é de cij e o valor de neutralização da ameaça é vj. Em cada ataque, o sistema de defesa deve selecionar, dentre m ameças, apenas k possíveis alvos. Elaborar o modelo matemático de alocação arma x alvo que minimiza o custo de defesa. Para este problema tomaremos a seguinte variável de decisão: xij =

{ 1 Caso a arma i seja designada à ameaça j, 0 Caso contrário. ,^ i^ = 1, ..., n^ e^ j^ = 1, ..., m Consideraremos ainda os seguintes dados:

formulação matemática acima sem simplicação.

1.2.5 Existem variáveis livres

Consideremos o seguinte PPL: min 5 x 1 + x 2 s.a x 1 + x 2 ≥ 5 x 1 − x 2 ≥ 7 x 1 ≥ 0 x 2 qq. Neste exemplo estamos tomando como exemplo que a variável x 2 é livre, ou seja, pode assumir qualquer valor. Para modelarmos este PPL utilizando o LINDO devemos acrescentar após o comando END, o comando FREE <nome da variável ou número de variáveis>, conforme mostra a gura 1.7.

Figura 1.7: Modelo LINDO para o PPL usando variável livre

1.3 Utilizando Quadros (TABLEAU) com o LINDO

Para resolvermos PPL's utilizando quadros do SIMPLEX (tableaus) no LINDO devemos proceder da maneira que se segue, levando em consideração as seguintes teclas de atalho: Comando Teclas de atalho Compilar (Compile Model) CT RL + E Fazer Pivoteameneo (Pivot) CT RL + N Exibir quadro (Tableau) ALT + 7 Exemplo 1: Primeiramente devemos digitar o PPL. Vamos tomar como exemplo o PPL abaixo: min − 5 x 1 − 3 x 2 s.a 3 x 1 + 5 x 2 ≤ 15 5 x 1 + 2 x 2 ≤ 10 x 1 , x 2 ≥ 0 O modelo LINDO relativo à esse PPL é apresentado na gura 1.8.

Antes de gerarmos o 1 o^ quadro devemos compilar o modelo (CT RL + E). Para gerarmos o primeiro quadro para este modelo pressionamos as teclas ALT + 7. O quadro gerado é apresentado na gura 1.9. Agora vamos fazer o pivoteamento. Pressione as teclas CT RL + N para a aparecer a janela da gura 1.10. Nesta janela, selecionamos a opção USE MINE e escolhemos a variável que vai entrar na base (Variable Selection) e a variável que vai sair da base (Row Selection), onde SLK 2 e 3 são as variáveis de folga. Clique em CLOSE e depois em CANCEL. Gere o novo quadro usando as teclas ALT + 7. O segundo quadro é mostrado na gura 1.11. Pela análise do quadro vemos que ainda não obtemos a melhor solução, então devemos repetir os passos citados acima até encontrar a melhor solução para o PPL, ou seja, fazemos um novo pivoteamento e geramos um novo quadro. Para isto devemos pressionar novamente CT RL + N e selecionar a variável que deve entrar na base e aquela que deve sair, feito isso geramos o novo quadro. Para o nosso exemplo o novo quadro (ALT + 7) é apresentado na gura 1.12. Como podemos observar este quadro é ótimo, portanto encontramos a melhor para o problema. Exemplo 2: min − 6 x 1 − 10 x 2 s.a 3 x 1 + 5 x 2 ≤ 15 5 x 1 + 2 x 2 ≤ 10 x 1 , x 2 ≥ 0 Para este exemplo temos o modelo LINDO apresentado na gura 1.13. Vamos resolver este problema utilizando quadros tableau para isto vamos seguir os seguintes passos: 1 o) Geramos o primeiro quadro pressionando as teclas ALT + 7. (Figura 1.14) 2 o) Através da análise do quadro decidimos qual variável deve entrar na base e qual deve sair (CT RL + N ). (Figura 1.10) 3 o) Geramos um novo quadro (ALT + 7). (Figura 1.15) 4 o) Analisamos este novo quadro. Observamos para este exemplo que não existe cj < 0 , mas a variável X1 que não está na base tem coeciente igual a 0. Portanto colocando X1 na base obtemos uma outra solução ótima, como mostra a gura 1.16. Para este exemplo temos várias soluções ótimas e elas são dadas pela seguinte equação:

y = α(0, 3) + (1 − α)(1. 052 , 2 .368), onde α ∈ [0, 1] Exemplo 3: min − 2 x 1 − 2 x 2 s.a −x 1 + x 2 ≤ 1 − 0. 5 x 1 + x 2 ≤ 2 x 1 , x 2 ≥ 0

  • 1 LINDO
    • 1.1 Introdução
      • 1.1.1 O que é o LINDO?
      • 1.1.2 Sintaxe de um Modelo LINDO
    • 1.2 Exemplos de Modelos LINDO
      • 1.2.1 Todas as variáveis são não negativas
      • 1.2.2 Existem variáveis inteiras
      • 1.2.3 Existem variáveis limitadas superiormente e inferiormente
      • 1.2.4 Existem variáveis binárias
      • 1.2.5 Existem variáveis livres
    • 1.3 Utilizando Quadros (TABLEAU) com o LINDO
    • 1.4 Análise de Sensibilidade
  • Bibliograa
  • 1.1 Modelo LINDO para o problema da dieta Lista de Figuras
  • 1.2 Solução para o problema da Dieta
  • 1.3 Modelo LINDO para o problema da fábrica de móveis
  • 1.4 Forma alternativa do Modelo LINDO para o problema da fábrica de móveis
  • 1.5 Modelo LINDO para o problema da confeitaria
  • 1.6 Modelo LINDO para o problema da defesa antiaérea
  • 1.7 Modelo LINDO para o PPL usando variável livre
  • 1.8 Modelo LINDO para o exemplo
  • 1.9 1 o quadro para o exemplo
  • 1.10 Janela de Pivoteamento
  • 1.11 2 o quadro para o exemplo
  • 1.12 3 o quadro para o exemplo
  • 1.13 Modelo LINDO para o exemplo
  • 1.14 1 o quadro para o exemplo
  • 1.15 2 o quadro para o exemplo
  • 1.16 3 o quadro para o exemplo
  • 1.17 Modelo LINDO para o exemplo
  • 1.18 1 o quadro para o exemplo
  • 1.19 2 o quadro para o exemplo
  • 1.20 3 o quadro para o exemplo
  • 1.21 Modelo LINDO para o PPL dos Nutrientes
  • 1.22 REPORTS WINDOW para o PPL dos Nutrientes
    • Figura 1.12: 3 o quadro para o exemplo
  • Figura 1.13: Modelo LINDO para o exemplo
    • Figura 1.14: 1 o quadro para o exemplo
    • Figura 1.15: 2 o quadro para o exemplo
    • Figura 1.16: 3 o quadro para o exemplo

Após digitarmos o modelo e o compilarmos, geraremos o 1 oquadro (Figura 1.18). Logo após utilizaremos o quadro de pivoteamento e decidiremos qual variável entra e qual variável sai da base (gura 1.10) e analisamos o novo quadro (gura 1.19), decidimos qual variável entra e qual variável. Analisando o 3 oquadro (gura 1.20 observamos que se a variável SLK 2 entrar na base encontraremos uma solução melhor (∃ cj < 0 ), mas os coecientes das restrições são negativos, portando nenhuma variável pode entrar na base, portanto este problema não tem solução.

Figura 1.17: Modelo LINDO para o exemplo 3

Figura 1.18: 1 o^ quadro para o exemplo 3

Figura 1.19: 2 o^ quadro para o exemplo 3

1.4 Análise de Sensibilidade

Para utilizarmos a análise de sensibilidade no LINDO, tomaremos o seguinte exemplo: Um pecuarista tem disponíveis três tipos de ração para gado. Cada tipo tem sua composição em termos de quatro nutrientes. O pecuarista quer misturar essas rações para obter um produto

Figura 1.20: 3 o^ quadro para o exemplo 3

Figura 1.21: Modelo LINDO para o PPL dos Nutrientes

Figura 1.22: REPORTS WINDOW para o PPL dos Nutrientes

ALLOWABLE INCREASE E ALLOWABLE DECREASE que se referem ao quanto o custo pode aumentar ou pode diminuir para que os valores ótimos de cada ração permaneçam o mesmo, respectivamente. Então para o nosso exemplo vamos analisar a variável x 1 , a qual se refere à Ração 1. Podemos observar que o custo desta ração pode aumentar até R$0.117857 e diminuir em até R$0.187500 que a quantidade ótima da ração continuará a mesma. Ou seja:

c 1 − 0. 18 ≤ ¯c 1 ≤ c 1 + 0. 11 ⇒ 0. 82 ≤ c¯ 1 ≤ 1. 11

  1. Para responder a 2 a^ pergunta, vamos analisar a variável x 2 no campo REDUCED COST ou então o campo ALLOWABLE DECREASE desta variável, onde é apresentado o valor para o qual o uso desta ração é interessante. Para o nosso exemplo temos que o valor para o desconto deve ser de R$0.09 de forma que o uso da Ração 2 seja interessante.

  2. Para encontrar o preço máximo da 3 a^ ração que não altera a quantidade ótima encontrada, devemos analisar o campo ALLOWABLE DECREASE da variável x 3 , lá encontramos o valor 0.3000, portanto o preço máximo da ração 3 deve ser de R$1.60 para a que quantidade ótima permaneça o mesmo.

  3. Esta pergunta será respondida através da análise do campo DUAL PRICE referente à restrição que envolve o nutriente 1, que neste caso é a restrição N1. Lá encontramos o valor -0.789474, que corresponde ao valor que será acrescido (ou diminuído) ao custo total se uma unidade a mais (ou a menos) do nutriente for exigida. Então se aumentarmos para 7 a exigência do nutriente 1 o custo total será aumentado em R$0.78.

  4. Vamos responder esta pergunta utilizando o campo RIGHTHAND SIDE RANGES, que cor- responde às restrições do PPL, especicamente analisaremos o subcampo ALLOWABLE DE- CREASE referente ao nutriente 4, ou seja N4, que nos dará o valor que poderá ser diminuído para o qual a quantidade do nutriente continuará a mesma. Portanto, podemos observar que esta informação vale até para uma diminuição de 1Kg.

  5. Para respondermos esta pergunta vamos fazer as seguintes análises:

c 4 - z 4 z 4 = (cB^ )ty 4 y 4 = B−^1 a 4

Bibliograa

[1] M. C .Goldbarg e H. P. L. Luna. Otimização Combinatória e Programação Linear: Modelos e Algoritmos. Editora Campus, Rio de Janeiro, 2000. [2] Helmut Kopka and Patrick W. Dale. A Guide to LATEX. Addison-Wesley, Harlow, England, 3rd edition, 1999. [3] Gerson Lachtermacher. Pesquisa Operacional na Tomada de Decisões. Editora Campus, Rio de Janeiro, 2002. [4] Lindo Systems Inc., Chicago. LINDO: User's Manual, 1996.