Live 2 Modelo linear do problema de Transbordo by A.A.
Pesquisa Operacional I
Modelo de Transbordo
• O produtos fabricados em 3 plantas (fornecedores) devem atender a demanda das 3 regiões da cidade de São Paulo. Porém, a demanda é consolidada em 2 CDs e é criado um modelo que busca calcular os fluxos de modo a minimizar os custos de transporte entre as 3 plantas e os 3 mercados (regiões).
F1
A
CD1...
F5
CD2
L1
...
L5
Modelo de Transbordo
Fábrica CD1 CD2
F1 30 50
F2 23 66
F3 35 14
F4 70 12
F5 65 70
Tabela 1: Custo FCD/unidade
Fábrica Capacidade
F1 200
F2 300
F3 100
F4 150
F5 220
Tabela 2: Capacidade Fi
CD L1 L2 L3 L4 L5 CD1 12 25 22 40 41 CD2 65 22 23 12 15
Tabela 4: Custo CDL/unidade
Loja Demanda
L1 150
L2 100
L3 110
L4 200
L5 180
Tabela 5: Demanda Lj
CD Capacidade
CD1 450
CD2 300
Tabela 3: Capacidade CDk
Modelo de Transbordo
m i
f x
J
j
i
ij
, 1 , ,
1
Cap. Fábrica
n k
d y
J
j
k
jk
, 1 , ,
1
Dem. Mercado
Transbordo
???????
Nós i Nós j Nós k
x
ijy
jkLei de Conservação em um nó
Entra
Sai
10
8
5
13
Caso 1
Tudo que entra
=
Tudo que sai
Fluxo em redes
Modelo de Transbordo
Cap. Fábrica
Dem. Mercado
j y
x
m
i
n
k
jk
ij
, 0
1 1
Transbordo
2 1 1
1 1
2 1
1cd f cd cd l cd l
f
x y y
x
m i
f x
P
j
i
ij
, 1 , ,
1
n k
d y
P
j
k
jk
, 1 , ,
1
Nós i Nós j Nós k
x
ijy
jkMin S.a.:
MODELO COMPLETO PARTICULAR
m i
f x
p
j
i
ij
, 1 , ,
1
n k
d y
p
j
k
jk
, 1 , ,
1
m
i
p
j
n
k
jk jk
p
j
ij
ij
x c x
c
1 1 1 1
n = no. de mercados m = no. de fábricas
Capacidade Fábrica
Demanda Mercado
Custo de transporte:
Fábrica CDs + CDs Mercados
Modelo de Transbordo
j y
x
m
i
n
k
jk
ij
, 0
1 1
p = no. de CDs
# MODELO DO PROBLEMA DE TRANSBORDO
#
# Este problema encontra o menor custo de transporte
# que atende as requisões de demanda e produção usando CDs.
set Ps;
set Ts;
set Ds;
param MaxP {Ps} >= 0;
param MaxT {Ts} >= 0;
param MinD {Ds} >= 0;
param incost{Ps,Ts} >= 0;
param outcost{Ts,Ds} >= 0;
#Parametros para impressao dos resultados do modelo em arquivos.
param file, symbolic, default "ModeloTransbordo.txt";
var inflow{Ps,Ts} >=0;
var outflow{Ts,Ds} >=0;
PARTE 1 - FORMULAÇÃO
Modelos no GUSEK
Índices das variáveis
Dados do modelo
Variáveis
minimize Total_Cost:
sum {i in Ps, j in Ts} incost[i,j]*inflow[i,j]
+ sum {j in Ts,k in Ds} outcost[j,k]*outflow[j,k];
subject to cMaxP {i in Ps}:
sum {j in Ts} inflow[i,j] <= MaxP[i];
subject to cMinD {k in Ds}:
sum {j in Ts} outflow[j,k] >= MinD[k];
subject to NoStock {j in Ts}:
sum {i in Ps} inflow[i,j] = sum {k in Ds} outflow[j,k];
subject to cTrans {j in Ts}:
sum {i in Ps} inflow[i,j] <= MaxT[j];
solve;
PARTE 1 - FORMULAÇÃO
Modelos no GUSEK
Modelo
minimize Total_Cost:
sum {i in Ps, j in Ts} incost[i,j]*inflow[i,j]
+ sum {j in Ts,k in Ds} outcost[j,k]*outflow[j,k];
subject to cMaxP {i in Ps}:
sum {j in Ts} inflow[i,j] <= MaxP[i];
subject to cMinD {k in Ds}:
sum {j in Ts} outflow[j,k] >= MinD[k];
subject to NoStock {j in Ts}:
sum {i in Ps} inflow[i,j] = sum {k in Ds} outflow[j,k];
subject to cTrans {j in Ts}:
sum {i in Ps} inflow[i,j] <= MaxT[j];
solve;
PARTE 1 - FORMULAÇÃO
Modelos no GUSEK
j x
x
m
i
n
k
jk
ij
, 0
1 1
/* RELATORIO */
printf '\n'
>> file;
printf '---\n'
>> file;
printf 'Solucao Encontrada \n'
>> file;
printf '---\n'
>> file;
printf ' Fluxo [Fábrica - CDs [ton]] \n'
>> file;
printf ' \n'
>> file;
printf '---\n'
>> file;
printf{i in Ps, k in Ts} " %10s - %10s: = %8.2f \n ", i, k, inflow[i,k] >> file;
printf '---\n'
PARTE 2 – RELATÓRIO
Modelos no GUSEK
printf '---\n'
>> file;
printf ' Fluxo [CDs - Lojas [ton]] \n'
>> file;
printf ' \n'
>> file;
printf '---\n'
>> file;
printf{k in Ts, j in Ds} " %10s - %10s: = %8.2f \n ", k, j, outflow[k,j] >> file;
printf '---\n'
>> file;
printf 'Custo total (z): ' >> file;
printf ' %10.2f \n', Total_Cost >> file;
printf '---\n'>> file;
printf '\n' >> file;
PARTE 2 - RELATÓRIO
Modelos no GUSEK
# Dados do problema.
data;
set Ps := P1 P2 P3 P4 P5;
set Ds := D1 D2 D3 D4 D5;
set Ts := T1 T2;
param: MaxP :=
P1 200 P2 300 P3 100 P4 150 P5 220;
param: MaxT :=
T1 450 T2 300;
param: MinD :=
D1 150 D2 100 D3 110 D4 200
D5 180; PARTE 3 – DADOS DO PROBLEMA
Modelos no GUSEK
Fábrica Capacidade
F1 200
F2 300
F3 100
F4 150
F5 220
Loja Demanda
L1 150
L2 100
L3 110
L4 200
L5 180
CD Capacidade
CD1 450
CD2 300
Tabela 2: Capacidade Fi
Tabela 5: Demanda Lj Tabela 3: Capacidade CDk
param incost:
T1 T2 :=
P1 30 50 P2 23 66 P3 35 14 P4 70 12 P5 65 70;
param outcost:
D1 D2 D3 D4 D5 :=
T1 12 25 22 40 41 T2 65 22 23 12 15;
end;
PARTE 3 – DADOS DO PROBLEMA
Modelos no GUSEK
Fábrica CD1 CD2
F1 30 50
F2 23 66
F3 35 14
F4 70 12
F5 65 70
Tabela 1: Custo FCD/unidade
CD L1 L2 L3 L4 L5 CD1 12 25 22 40 41 CD2 65 22 23 12 15
Tabela 4: Custo CDL/unidade
PARTE 4 - RESULTADOS
Modelos no GUSEK
Modelos no GUSEK
F1 CD1 L1
200 450 150
F2 L2
300 100
F3 L3
100 110
F4 L4
150 200
F5 L5
220 180
CD2
300