Beruflich Dokumente
Kultur Dokumente
Roteiro Aula 1
Apresentao geral da UFFLP Criao de modelos bsicos com UFFLP
Exemplo 1: Problema do Mix de Produo Exemplo 2: Problema da p-Mediana
Atualmente a melhor alternativa para um usurio que pretende fazer uso srio de PIM, mas no tem formao em computao. Particularmente apropriada para prottipos.
AMPL: diet1.mod
set NUTR ordered; set FOOD ordered; param cost {FOOD} >= 0; param f_min {FOOD} >= 0, default 0; param f_max {j in FOOD} >= f_min[j], default Infinity; param n_min {NUTR} >= 0, default 0; param n_max {i in NUTR} >= n_min[i], default Infinity; param amt {NUTR,FOOD} >= 0; var Buy {j in FOOD} integer >= f_min[j], <= f_max[j]; # -------------------------------------------------------minimize Total_Cost: sum {j in FOOD} cost[j] * Buy[j]; subject to Diet {i in NUTR}: n_min[i] <= sum {j in FOOD} amt[i,j] * Buy[j] <= n_max[i];
AMPL: diet1.dat
param: FOOD: "Quarter Pounder w/ Cheese" "McLean Deluxe w/ Cheese" "Big Mac" "Filet-O-Fish" "McGrilled Chicken" "Fries, small" "Sausage McMuffin" "1% Lowfat Milk" "Orange Juice" param: NUTR: Cal Carbo Protein VitA VitC Calc Iron cost f_min f_max := 1.84 . . 2.19 . . 1.84 . . 1.44 . . 2.29 . . 0.77 . . 1.29 . . 0.60 . . 0.72 . .;
AMPL: diet1.dat
param amt (tr): "Quarter Pounder w/ Cheese" "McLean Deluxe w/ Cheese" "Big Mac" "Filet-O-Fish" "McGrilled Chicken" "Fries, small" "Sausage McMuffin" "1% Lowfat Milk" "Orange Juice" Cal Carbo Protein VitA VitC 510 34 28 15 6 30 370 35 24 15 10 20 500 42 25 6 2 25 370 38 14 2 0 15 400 42 31 8 15 15 220 26 3 0 15 0 345 27 15 4 0 20 110 12 9 10 4 30 80 20 1 2 120 2 Calc Iron := 20 20 20 10 8 2 15 0 2;
GAMS
Licena acadmica c/ interface CPLEX: $1280
MOSEL (XPRESS)
Nmero limitado de licenas p/ Academic Partners
OPL (CPLEX)
Livre para Academic Initiative
x
j =1
ij
=1
i = 1, , n
Entretanto, restries complexas obrigam o usurio a programar numa linguagem nova e relativamente pobre, que carece de algumas construes e recursos bsicos encontradas em linguagens de uso geral ...
UFFLP
Uma abordagem de mdio nvel:
um conjunto de funes em C/C++/VBA (em breve, Java) As variveis e restries so indexadas pelo nome. Outros conceitos matemticos, simples ou complexos, so implementados na linguagem hospedeira.
UFFLP
Modelos simples so escritos de forma quase to simples quanto nas linguagem de modelagem.
Ex: um somatrio de 1 a m exige um comando de iterao
em C: for(j=1;j<=m;j++){...} em VBA: For j=1 To n ... Next j
UFFLP em VBA
O suporte linguagem VBA (Visual Basic for Applications) essencial na concepo da UFFLP: Apesar de injustamente criticada por puristas de computao, a linguagem Basic possui uma das mais rpidas curvas de aprendizado.
UFFLP em VBA
A planilha Excel (que contm um interpretador VBA) fornece mais recursos do que os disponveis em qualquer pacote contendo uma linguagem de modelagem: Ambiente de depurao Facilidade na manipulao de dados Importao/Exportao para praticamente qualquer outra plataforma Funes grficas
UFFLP em VBA
A UFFLP chamada de dentro do Excel vem sendo usada com sucesso desde 2007 nos cursos de psgraduao em engenharia de produo da UFF:
Alguns alunos que nunca tinham programado, ao final dos cursos se mostraram capazes de escrever aplicaes de modelos de PIM para uso real.
50 lminas/semana
75 metros/semana
150 1 1
500 4 1
400 3 1
200 1 2
UFFLP: linguagem C
UFFLP: linguagem C
Min S.a
d
i =1 j =1 m j =1 ij
yij i = 1, n
y
m
=1
yij x j 0 i = 1, n; j = 1, m
x
j =1
=p i = 1, n; j = 1, m j = 1, m
x j {0,1}
yij {0,1}
Roteiro Aula 2
Modelos avanados com UFFLP Separao de cortes / branch-and-cut
Exemplo 3: Problema da Soma Mxima Exemplo 4: Problema do Caixeiro Viajante
Gerao de colunas
Exemplo 5: Problema do Bin Packing
Dentro de uma funo de call back de gerao de cortes Retorna a soluo da relaxao linear do n corrente da rvore de B&B
e ( i )
d x
eE
xe =2 i V
e ( S )
xe 2 S V e E
xe {0,1}
Problema de Separao
e ( S )
xe
Problema de Separao
S
1 0,1 0,2 0,3 0,8 0,9 1 0,3
0,6
Valor = 0,8
Problema de Separao
Problema de Separao
Min S. a
x
eE
we e = (i, j ) E e = (i, j ) E
we yi y j we y j yi
n
y
i =2
n2 e E i = 2, , n
y1 = 1 we {0,1} yi {0,1}
Formulao de Kantorovitch
Seja U um limite superior ao nmero de caixas necessrias. Variveis yj indicando se a caixa j vai ser usada. Variveis xij indicando que o item i vai para a caixa j.
U
M in S.a
y
n j =1 U i =1
j =1 ij
i = 1 n j = 1U
wi xij
x, y
{0,1}
C. y j
n (U +1)
Formulao de Kantorovitch
Essa formulao no funciona na prtica O limite inferior da sua relaxao linear ruim, igual ao n limite trivial w C .
i =1
No exemplo, esse limite seria 2,9. A simetria das variveis faz com que algoritmos para PI, como o branch-and-bound, sejam ineficientes.
Formulao de GilmoreGomory
Defina uma varivel para cada uma das Q possveis combinaes de itens em caixas. O nmero Q pode ser muito grande! Com n=5, w1= 3, w2 = 4, w3 = 5, w4 = 8, w5=9 e C=10; so 8 combinaes: {1}, {2}, {3}, {4}, {5}, {1,2}, {1,3} {2,3}.
Formulao de GilmoreGomory
Defina o coeficiente aij como sendo 1 se o item i est na combinao j e 0 caso contrrio.
Q
M in S.a
j =1 Q j =1
aij j
i = 1 n
Q
{0,1}
Formulao de GilmoreGomory
No exemplo:
Min 1 S.a
+ 2
+ 3
+ 4
+ 5
+ 6 + 6 + 6
+ 7 + 7 + 7
+ 8 + 8 + 8 = = = = = 1 1 1 1 1
1 2 3 4 5
{0,1}8
Formulao de GilmoreGomory
No exemplo acima, o limite obtido pela relaxao linear da formulao 3,5. Em geral, os limites dessa relaxao so extremamente fortes. Raramente se encontra uma instncia em que o limite arredondado para cima no iguale o valor da soluo tima. Nunca se achou uma instncia em que o limite arredondado para cima estivesse a mais de 1 unidade da soluo tima!
M in S.a
jR
jR
aij j
= 1 i = 1 n 0
Subproblema de Pricing
M in 1 i xi S.t.
n
i =1 n
i =1
wi xi
{0,1}
Esse um clssico problema da mochila, que NPdifcil, mas muito bem resolvido na prtica. Enquanto o valor da soluo do subproblema for negativo, a varivel correspondente adicionada ao conjunto R e o PL mestre resolvido novamente. Caso contrrio, a soluo do PL mestre a soluo da relaxao da formulao G-G.
Uma possvel maneira de encontrar boas solues inteiras para o problema do bin packing resolver um MIP apenas com as variveis do conjunto R final. O limite inferior encontrado pela relaxao muitas vezes suficiente para provar que essa soluo tima.
Criao do PL Mestre
Criao do Subproblema
Obrigado!