Marcos J. Rider
mjrider@dee.feis.unesp.br
mjrider@dee.feis.unesp.br 2
1
27/09/2013
Linguagens de programao
Vantagens
Usado quando o tempo de soluo critico.
Permite o uso de algoritmos de otimizao especficos.
Possibilidade de implementao do modelo num entorno de software ou hardware especial.
Desvantagens
Elevado tempo de implementao do modelo.
Maior dificuldade e consumo de recursos para a manuteno do modelo.
mjrider@dee.feis.unesp.br 3
Vantagens
Fcil de usar.
Integrao total com a folha de calculo.
Familiaridade com o entorno, que facilita a explicao do modelo e de seus resultados.
Facilidade para apresentar os resultados de forma grfica.
Desvantagens
No incentiva a uma boa prtica de programao.
Apresenta dificuldades para a verificao, validao, atualizao e documentao dos
modelos.
No permite modelar problemas complexos ou de grande tamanho.
mjrider@dee.feis.unesp.br 4
2
27/09/2013
Vantagens
Linguagens de alto nvel para a formulao compacta de modelos grandes e complexos.
Facilitam o desenvolvimento de prottipos.
Melhorar a produtividade de modeladores.
Geram bons hbitos de modelagem.
Separa a estrutura de dados dos solucionadores (solvers).
Formulao do modelo independente do tamanho.
Modelos independentes dos solucionadores.
Facilitam a reformulao continua
Documentao simultnea com o modelo.
Permite a implementao de algoritmos avanados.
Implementao fcil de problemas LP, NLP, MIP.
Portabilidade entre plataformas e sistemas operativos.
Desvantagens
No so adequados para usos espordicos com problemas de tamanho pequeno.
No so adequados para resolver diretamente problemas de tamanho gigantesco (1.000.000
x 1.000.000).
mjrider@dee.feis.unesp.br 5
Tendncias futuras
mjrider@dee.feis.unesp.br 6
3
27/09/2013
1. Tabelas
Identificao do Solucionadores Avaliao da
Soluo 2. Listas
problema (Solvers) soluo
3. Figuras
1. Datos
Definio do Implementao
2. Modelo Implantao
modelo do modelo
matemtico
Validao
mjrider@dee.feis.unesp.br 7
mjrider@dee.feis.unesp.br 8
4
27/09/2013
Solucionadores (solvers)
Baixando AMPL
mjrider@dee.feis.unesp.br 10
5
27/09/2013
Baixando AMPL
Note que foi criada uma pasta chamada amplcml, contendo o executvel
de AMPL (ampl.exe) e os executveis dos solucionadores MINOS 5.5
(minos.exe), CPLEX 11.2 (cplex.exe e cplex112.dll), GUROBI 2.0
(gurobi.exe e gurobi20.dll) e LP_SOLVE (lpsolve.exe).
mjrider@dee.feis.unesp.br 11
AMPL + SOLVERS
Chama as
Soluo do livrarias C++
problema binrias FORTRAN
(arquivos textos) JAVA
Modelo etc...
Matemtico,
Dados e
Opes Chama o solucionador CPLEX /
AMPL
(arquivos Chama o AMPL KNITRO
textos)
Arquivo binrio
*.nl
Arquivo binrio
*.sol
mjrider@dee.feis.unesp.br 12
6
27/09/2013
Problemas comuns:
Variveis sem limites.
Faltam restries.
Restries mal-escritas.
Nmero errado de restries.
Funo objetivo errada.
mjrider@dee.feis.unesp.br 14
7
27/09/2013
Soluo do problema.
Facilitar a leitura.
8
27/09/2013
mjrider@dee.feis.unesp.br 17
mjrider@dee.feis.unesp.br 18
9
27/09/2013
Variveis:
x : nmero de toneladas de bandas.
y : nmero de toneladas de bobinas.
mjrider@dee.feis.unesp.br 19
# soluciona o modelo
solve lucro_total;
# mostrar os resultados
mjrider@dee.feis.unesp.br
display x, y; 20
10
27/09/2013
Baixando Notepad++
mjrider@dee.feis.unesp.br 21
Baixando Notepad++
mjrider@dee.feis.unesp.br 22
11
27/09/2013
mjrider@dee.feis.unesp.br 23
Conjunto:
PROD : conjunto de produtos.
Parmetros:
DISP : horas de produo disponvel para esta semana.
VELCp : toneladas de fabricao do produto p por hora.
LUCRp : lucro do produto p por tonelada em $.
MAXTp : Toneladas mximas de fabricao do produto p.
Variveis:
FABRp : toneladas do produto p que devem ser fabricados.
Critrio de otimizao: Maximizar o lucro total.
Sujeito a
(1/ VELCp ) FABRp DISP
pPROD
12
27/09/2013
# soluciona o modelo
solve lucro_total;
# mostrar os resultados
display FABR;
mjrider@dee.feis.unesp.br 26
13
27/09/2013
uma boa prtica incluir muitos controles de validao no modelo para que
os erros sejam detectados o mais rpido possvel.
mjrider@dee.feis.unesp.br 27
mjrider@dee.feis.unesp.br 28
14
27/09/2013
mjrider@dee.feis.unesp.br 29
O problema de transporte
Fbricas de
Siderrgicas automveis
Produo (origen) Demanda
em toneladas (destino) em toneladas
Gary 1400 900 Farmington
1200 Detroit
600 Lansing
Cleveland 2600
400 Winsor
1100 Fremont
Total de produo =
Total de demanda 1000 Lafayette
mjrider@dee.feis.unesp.br 30
15
27/09/2013
O problema de transporte
mjrider@dee.feis.unesp.br 31
O problema de transporte
Conjuntos:
SID : conjunto de siderrgicas.
FAB : conjunto de fbricas.
Parmetros:
COSTs,f : custo de transporte por tonelada da siderrgica s para a fbrica f.
PRODs : produo da siderrgica s em toneladas.
DEMAf : demanda da fbrica f em toneladas.
Variveis:
TRANSs,f : toneladas transportadas da siderrgica s para a fabrica f.
Critrio de otimizao: Minimizar o custo total de transporte.
Sujeito a
TRANS s,f = PRODs s SID
f FAB
mjrider@dee.feis.unesp.br
TRANSs,f 0 s SID, f FAB 32
16
27/09/2013
O problema de transporte
O problema de transporte
param COST :
FRA DET LAN WIN STL FRE LAF :=
GARY 39 14 11 14 16 82 8
CLEV 27 9 12 9 26 95 17
PITT 24 14 17 13 28 99 20 ;
mjrider@dee.feis.unesp.br 34
17
27/09/2013
O problema de transporte
# soluciona o modelo
solve custo_total;
# mostrar os resultados
display TRANS;
mjrider@dee.feis.unesp.br 35
ANEXOS
mjrider@dee.feis.unesp.br 36
18
27/09/2013
^, ** A potenciao
mjrider@dee.feis.unesp.br 37
Sintaxes Significado
abs(x) valor absoluto
asin(x), acos(x), atan(x) sin-1(x), cos-1(x), tan-1(x)
asinh(x), acosh(x), atanh(x) sinh-1(x), cosh-1(x), tanh-1(x)
sin(x), cos(x), tan(x) seno, coseno, tangente
sinh(x), cosh(x), tanh(x) seno hiperblico, coseno hiperblico,
tangente hiperblica
ceil(x) maior inteiro ms perto a x
exp(x) exponencial
floor(x) menor inteiro ms perto a x
log(x) loge(x)
log10(x) log10(x)
sqrt(x) raiz quadrada
round(x) x arredondado ao inteiro ms perto
trunc(x) x truncado a um inteiro
mjrider@dee.feis.unesp.br 38
19
27/09/2013
mjrider@dee.feis.unesp.br 40
20
27/09/2013
mjrider@dee.feis.unesp.br 41
21
27/09/2013
minimize : minimizar.
maximize : maximizar.
mjrider@dee.feis.unesp.br 44
22
27/09/2013
Comando Significado
break termina um ciclo for ou while
close fecha um arquivo
data muda ao modo dados
display imprime elementos do modelo e expresses
expand mostra explicitamente o modelo
fix fixa uma varivel a seu valor atual
for {indices}{comandos} ciclo for
if {condicin} then {comandos} comprova uma condio
include Inclui arquivos
let muda os valores dos dados (:=)
model muda ao modo modelo
objetive seleciona uma funo objetivo a otimizar
option define ou mostra valores opcionais
option solver cplex; define CPLEX como solucionador o solver
printf imprime elementos do modelo com formato
(\n, %4d, %7.1f)
quit termina AMPL
mjrider@dee.feis.unesp.br 46
23
27/09/2013
Comando Significado
repeat while condio { repetir um bloco de comandos enquanto a
comandos; condio seja verdadeira
}
repeat until condio { repetir um bloco de comandos at que a condio
comandos; seja falsa
}
repeat { repetir um bloco de comandos enquanto a
comandos; condio seja verdadeira
} while condio;
repeat { repetir um bloco de comandos at que a condio
comandos; seja falsa
} until condio;
reset elimina todos os elementos da memria
shell temporalmente sai ao sistema operativo
solve envia o modelo atual a um solver e devolve a
soluo
unfix desfaz um comando fix
mjrider@dee.feis.unesp.br 47
24