You are on page 1of 62

LINGO – Começando com o

LINGO
Prof. André Marcato

Livro Texto: LINGO – The Modeling Language and Optimizer

1
Prefácio

 Linguagem de Modelagem “Set-Based”


 Entrada e Saída de Dados Amigável
 Opções de Uso
 Modelagem Interativa
 Criação de Aplicações “Turnkey” (DLL e
OLE)
 Extensa documentação e Help

Aula 1 2
Solvers e Ferramentas
 Solucionadores (Solvers)
 Não Linear Geral
 Global
 Multistart
 Barrier
 Simplex
 Inteira Mista

 Ferramentas (Tools)
 Ferramentas de Modelagem e Análise de Solução
 Ferramentas de Reconhecimento Quadrático
 Ferramentas de Linearização

Aula 1 3
O que é o LINGO

 LINGO é uma ferramenta simples para a


utilização das potencialidades das
técnicas de otimização linear e não
linear para formular concisamente
problemas de grande porte, resolvê-los e
analisar sua solução.

Aula 1 4
Instalação

Trivial...

SETUP.EXE

Aula 1 5
Introduzindo um Modelo no
Windows
Menu de
Comandos

Janela
Principal

Janela de um
novo modelo
em branco
Barra de
Ferramentas e
Barra de Status
(podem ser
suprimidas
LINGO|Options

Aula 1 6
Iniciando com o LINGO

 O texto das equações do modelo é


independente das plataformas e será
identico para todas elas. Existem ligeiras
diferenças para plataformas não-
windows (command line).

Aula 1 7
Problema Exemplo
Uma indústria produz dois modelos de
computadores - Standard e Turbo. Cada
Standard gera um lucro de $100 e cada Turbo
gera um lucro de $150. A linha de produção do
Standard está limitada a 100 computadores
diários e a linha de produção do 120
computadores diários. Limite de horas diário é
160, cada Standard demanda 1 hora de
trabalho e cada Turbo demanda 2 horas de
trabalho. Quantos computadores de cada tipo
por dia para maximizar o lucro.

Aula 1 8
Inserindo o Modelo

O ponto e
vírgula é
necessário.

Aula 1 9
Janela do Programa

Uma expressão pode ser


quebrada em várias linhas,
mas deve ser terminada com
ponto e vírgula.

TURBO
Comentários Palavras chave Turbo Restante em
em verde em azul preto
Aula 1
turbo 10
Comentários no Programa

Aula 1 11
Resolvendo o Modelo

Aula 1 12
Janela de Status do Solver
Fecha a janela
Status do Solver
Cuidado: Interrompe o
que pode ser
solver na próxima
1) Solução não ótima reaberta através
interação. Na
do menu de
2) Pode não atender maioria dos casos
comandos
às todas restrições o LINGO permite
Windows/Status
visualizar a melhor
3) Pode ser errada Window
solução
(problema linear)
encontrada até o
momento
(exceção:
modelos lineares
sem variáveis
inteiras)

Aula 1 13
Caixa de Variáveis (1)

Aula 1 14
Caixa de Variáveis (2)

 Mostra o número total de variáveis do modelo


 Número de variáveis não lineares (se aparece
em qualquer restrição do modelo). Exemplos:
 2 Variáveis Lineares:
 2 Variáveis Não Lineares:
 1 Variável Linear e 1 Não-Linear:
 Número de variáveis inteiras
 Não inclui nenhuma variável que o LINGO
consegue fixar seu valor:

Aula 1 15
Restrições, Não Zeros, Memória e
Tempo de Execução
Mostra o Número total de
número de restrições.
coeficientes
não zero e,
destes, Tempo Número total de
quantos decorrido de restrições não
aparecem execução lineares (se uma ou
sobre as mais variáveis
variáveis não aparecem não
lineares. linearmente na
restrição)
Utilização da
memória.
Se restrições com
LINGO|Options,
variáveis “fixas”
pode ser utilizado
forem encontradas.
para alterar a
Elas não são
alocação.
contabilizadas
Aula 1 16
Caixa Status do Solver

Aula 1 17
Campo Classe do Modelo(1)

Aula 1 18
Campo Classe do Modelo(2)

Aula 1 19
Campo Classe do Modelo(3)

Aula 1 20
Campo Estado (state)

Aula 1 21
Campo Estado (state)

 Unbounded
 A solução pode ser melhorada
indefinidamente (Ex: Lucro infinito)
 Interrupted
 Se o usuário interromper a execução do
solver antes de chegar ao final

Aula 1 22
Campo Infesiability

 Mostra a quantidade de restrições que


foram violadas.
 Pode acontecer de não existir nenhuma
restrição violada, mas os limites de
alguma variável estar violado.

Aula 1 23
Caixa de Status Extendido

Aula 1 24
Best Obj e Obj Bound

 O campo “Best Obj” mostra o melhor valor da


função objetivo encontrado até o momento. O
Campo “Obj Bound” mostra o limite da função
objetivo.
 Durante o processo interativo estes valores
podem se aproximar. Dado que o “Best Obj”
nunca pode exceder o “Obj Bound”, o usuário
tem a opção de interromper o solver e utilizar
a solução corrente.

Aula 1 25
Campo Steps e Active
 Depende do tipo de solver que está em
execução.

 Active: Lista o número de subproblemas que


ainda devem ser resolvidos. O solver é
executado até que este número chegue a
zero.
Aula 1 26
Impacto na função objetivo Só é diferente de zero nas
Relatório de Solução
pela alteração no lado
direito da restrição em uma
inequações. Déficit ou
superávit. O quão distante
unidade. a restrição ficou da
igualdade.

Máximo Lucro
atingível
Quantidade de
Cada Computador
a ser produzida.

Valor que o coeficiente da


variável na função objetivo
deve ser incrementado
para que a variável
comece a ter um impacto
positivo na função objetivo.

Aula 1 27
Imprimindo e Gravando

 Qualquer janela (modelo ou relatório)


pode ser impressa
 Através do botão de gravação ( ), o
modelo pode ser gravado, extensão
.LG4.

Aula 1 28
Modelos Exemplo (1)

Aula 1 29
Modelos Exemplo (2)

Aula 1 30
Modelos Exemplo (3) - Tran

Aula 1 31
Modelos Exemplo (4) - Tran

Aula 1 32
Modelos Exemplo (5) - Tran

Aula 1 33
Modelando Através da Linha de
Comando
 Plataformas não windows.

Aula 1 34
Modelando Através da Linha de
Comando – Entrando com o Modelo

Aula 1 35
Modelando Através da Linha de
Comando – Comando GO

Aula 1 36
Modelando Através da Linha de
Comando – Imprimindo e Salvando

Aula 1 37
Usando a Linguagem de
Modelagem Matemática
 Notação similar a notação matemática padrão
 Ao invés de entrar cada termo de cada
restrição explicitamente, é possível expressar
um conjunto de restrições similares de forma
compacta
 Seção de dados permite isolar os dados do
modelo ou ler os dados de um arquivo em
separado

Aula 1 38
Implementando o Modelo de
Transporte “Set Based”

Aula 1 39
O problema

 A empresa “Wireless Widget – W W” tem seis


armazéns que supre oito vendedores com
suas peças. Cada armazém tem um limite de
peças que não pode ser excedido e cada
vendedor tem uma demanda de peças que
deve ser satisfeita. WW quer determinar
quantas peças deve enviar de cada armazém
para cada vendedor de forma a minimizar o
custo total de transporte. Este é um problema
clássico de otimização, denominado problema
de transporte.
Aula 1 40
Capacidade dos Armazéns

Aula 1 41
Demanda dos Vendedores

Aula 1 42
Custo de Transporte por Peça

Aula 1 43
Função Objetivo (1)

Sendo VOLUME_I_J a variável que corresponde


o número de peças entregues do armazém I
para o vendedor J.

Aula 1 44
Função Objetivo (2)

Aula 1 45
As Restrições (1)

Restrição de demanda de cada vendedor.


Vendedor 1:

Aula 1 46
As Restrições (2)

Aula 1 47
As Restrições (3)

Restrição de Capacidade dos Armazéns

Aula 1 48
Modelo Completo

Aula 1 49
Definindo os Conjuntos (1)
 Armazéns
 Vendedores
 Arcos de transporte entre cada armazém e cada
vendedor.

Aula 1 50
Definindo os Conjuntos (2)

Aula 1 51
Entrando com os Dados

Aula 1 52
Model Widgets

Aula 1 53
Resolvendo o modelo (1)

 Será gerado um relatório contendo os valores de


todas as variáveis, restrições e dados do modelo.
 A maioria das informações pode não ter interesse
imediato.
 O interesse imediato é saber a quantidade de peças a
ser transportada de cada armazém para cada
vendedor.
 Options : Interface : Output level option : Terse
 LINGO mostrará somente o status da solução, valor da
função objetivo e número de interações
 Comando Solution.

Aula 1 54
Resolvendo o modelo (2)

Aula 1 55
Resolvendo o modelo (3)

Aula 1 56
Resolvendo o modelo (4)

Aula 1 57
Características Adicionais da Linguagem de
Modelagem – Nomes para as Restrições (1)

Aula 1 58
Características Adicionais da Linguagem de
Modelagem – Nomes para as Restrições (2)

Aula 1 59
Características Adicionais da Linguagem de
Modelagem – Nomes para as Restrições (3)

Aula 1 60
Título do Modelo
 Se ele for incluído, aparecerá no cabeçalho de todos
os relatórios de solução
 Será usado como argumento default na função
@ODBC (Interfaceando com banco de dados).

Aula 1 61
Dimensões Máximas do Problema

Aula 1 62

You might also like