Tema 01
Short Description
Download Tema 01...
Description
PROGRAMAÇÃO PROGRAMAÇÃO LINEAR APLICADA A UM PROBLEMA DE ENVIO ENVIO DE COMBUSTÍVEL PARA AEROPORTOS. Ailson Renan Santos Picanço Henrique Evangelista de Oliveira Murilo Wadt FCA - Unicamp Limeira - SP
Resumo: Este trabalho se propõe a utilizar a programação linear para solucionar um problema de transporte, onde se pretende minimizar os custos de envio de querosene das três companhias para os quatro aeroportos estudados. Primeiramente, a situação foi modelada enquanto um problema de minimização, definindo-se a função objetivo, as variáveis e as restrições. Foi utilizado o software livre GLPK para resolver o modelo. Chegou-se a um resultado de 9,25 milhões de reais, que minimiza o custo total. Problema Programação Linear, GLPK
Palavras-chave:
de
Transporte,
1. INTRODUÇÃO Um problema problema chave da gestão de negócios é de como tomar a decisão econômica de alocação de recursos. A programação linear, ou simplesmente LP, traz soluções relativas consistentes relativas a essa questão [1]. O uso de um pacote computacional como o GLPK, se mostra muito eficiente para a resolução desse tipo de problema que apresenta poucas variáveis variáveis de decisão. O objetivo desta pesquisa é resolver o problema proposto encontrando o menor custo total, mediante a demanda e as restrições impostas.
2. APRESENTAÇÃO DO PROBLEMA A Voe Bem precisa decidir a quantidade de querosene para combustível de seus jatos que adquire de 3 companhias vendedoras. Seus jatos são regularmente abastecidos nos aeroportos de Congonhas, Viracopos, Galeão e Pampulha.
Figura 1: Esquema representativo do problema As companhias vendedoras poderão fornecer no próximo mês as quantidades de combustível, como apresentado na Tabela 1:
1 2 3
250 000 500 000 600 000 Tabela 1: Capacidade de fornecimento das companhias
Comp1
Viracopos
Comp2 Galeão
Comp3 Pampulha
.
Existe também a demanda de cada aeroporto que deve ser atendida completamente, e pdoe ser visualizada na Tabela 2:
AEROPORTOS
DEMANDA
Congonhas Viracopos Galeão Pampulha Tabela 2: Demanda dos aeroportos
.
100 000 200 000 300 000 400 000
Enfim, o envio de cada companhia para cada aeroporto possui um custo específico, conforme a Tabela 3 apresenta: AEROPORTO
COMP. 1 COMP. 2 COMP. 3 Tabela 3: Custo
Congonhas
CAPACIDADE DE FORNECIMENTO (LITROS)
COMPANHIA
CON.
VIR.
12 10 9 11 10 14 em reais/litro.
GAL.
PAMP.
8 11 13
11 13 9
3. METODOLOGIA Trata-se de uma pesquisa aplicada de base quantitativa e em um estudo de caso hipotético idealizado pelo docente, inspirado em um caso prático real. Para resolver ao problema primeiro o problema foi modelado à luz de um problema de transporte. Utilizou-
se a programação linear, com auxílio de um software livre do tipo solver chamado GLPK FOR WINDOWS®.
4. MODELAGEM DO PROBLEMA Esse problema pode ser formulado como um problema de transporte, onde se pretende definir, quantos galões de querosene de cada companhia deve ser enviado para cada aeroporto, de forma que minimize o custo total.
∑ 3.
(3)
Restrição de não negatividade (4) É imprescindível garantir que não se assumam valores negativos para a aolocação das quantidades ( ).
1.1 Variável de decisão
requisitado para todos os aeroportos deve ser atendida.
: Quantidade de querosene enviada da companhia
,
para ao aeroporto , e conforme a indexação mostrada nas Tabelas 4 e 5. COMPANHIA
5. RESOLUÇÃO DO PROBLEMA A utilização do GLPK para a solução desse problema gerou o resultado mostrado na Figura 1 plotada do software utilizado:
INDEX
Companhia 1 Companhia 2 Companhia 3
1 2 3
Tabela 4: Indexação das companhias.
AEROPORTO Congonhas Viracopos Galeão Pampulha
INDEX
1 2 3 4
Tabela 5: Indexação dos aeroportos.
1.2 Função objetivo A função objetivo (1) é de minimização do custo total obtida a partir da alocação das quantidades (Xij) e os respectivos custos (Cij).
1.3 Restrições 1.
Restrição de capacidade (2) das companhias ( supply constrain): O fornecido pelas companhias para os aeroportos deve companhias
2.
ser
até
a
capacidade
das
Restrição de demanda (3) dos aeroportos ( demand constrain). Como a capacidade do fornecedor é maior que a demanda, então o querosene
Figura 02: Resultado encontrado com o uso do GLPK.
O código utilizado para a resolução do problema se encontra no Anexo I.
6. CONCLUSÕES A utilização da programação linear foi eficaz, por chegar a um resultado ótimo determinístico ao problema de transporte e foi eficiente por, com uso da ferramenta GLPK, resolver o problema em tempo satisfatório (1,3s). Os resultados apontam que, para tomar uma decisão econômica, a companhia 1 deve fornecer penas para o aeroporto do Galeão (250 mil litros) e a companhia 3 apenas para o aeroporto da Pampulha (400 000 litros), entretanto a companhia 2 deve ter um mix mais distribuído, fornecendo para os aeroportos de Congonhas, Viracopos e Galeão, 100, 200 e 50 mil litros, respectivamente. Vale ressaltar a importância no balanceamento entre tempo de resolução e eficácia da resposta, fator cruscial na escolha do método e solução.
7. REFERÊNCIAS [1] REEB, J &LEAVENGOOD, S.(2002) Transportation Problem: A Special Case for Linear Programming Problems. Operation Research:Performance excellence in the wood products industry.
ANEXO I: Modelo desenvolvido no GLPK #Modelo de Transporte - Tema 1 set I; /*companhia*/ set J; /*aeroporto*/ param a{i in I}; /* galões de querosene da companhia i */ param b{j in J}; /* consumo no aeroporto j */ param c{i in I, j in J}; /* custo de transporte da companhia i para o aeroproto j #Parametros para impressao dos resultados do modelo em arquivos. param file, symbolic, default "ResumoTema1.txt"; /* quantidade transportada da companhia i para o aeroproto j */ var x {i in I, j in J}>=0; /* minimizar o custo total de transporte em reais */ minimize cost: sum{i in I, j in J} c[i,j] * x[i,j]; /* restrição de atendimento da demanda j */ s.t. demand{j in J}: sum{i in I} x[i,j] >= b[j]; /* restrição de capacidade i */ s.t. supply{i in I}: sum{j in J} x[i,j]> file; printf '------------------------------------------------------\n' >> file; printf 'Solucao Encontrada \n' >> file; printf '------------------------------------------------------\n' >> file; printf ' Fluxo [Companhia - Aeroporto [litros]] \n' >> file; printf ' \n' >> file; printf '------------------------------------------------------\n' >> file; printf {i in I, j in J} " %10s - %10s: = %8.2f \n ", i, j, x[i,j] >> file; printf '------------------------------------------------------\n' >> file; printf 'Custo total (z): ' >> file; printf ' %10.2f \n', cost >> file; printf '----------------------\n'>> file; printf '\n' >> file; data; set I := Comp1 Comp2 Comp3; set J := Congonhas Viracopos Galeao Pampulha; param a := Comp1 250000 Comp2 500000 Comp3 600000; param b := Congonhas 100000 Viracopos 200000 Galeao 300000 Pampulha 400000;
*/
param c : Congonhas Viracopos Galeao Pampulha := Comp1 12 10 8 11 Comp2 9 11 11 13 Comp3 10 13 13 9 ; end;
View more...
Comments