Vous êtes sur la page 1sur 5

926

Uma proposta de solução para compra de aviões da


Viação Aérea Brasileira
Eitor Bernardes de Paiva (IC-EM), Mariana Dias Nogueira (IC-EM), Thiago Ferronatto (IC-EM), Fernando
Silveira Alves (PQ)
Instituto Federal de Mato Grosso do Sul, Coxim - MS

de aeronaves.
I. Introdução Para teste de eficiência é utilizado o GNU Linear
As primeiras atividades formais de Pesquisa Programming Kit (GLPK) juntamente com um código
Operacional (PO) foram iniciadas na Inglaterra durante a JAVA com o objetivo de automatizar a construção do
Segunda Guerra Mundial, quando uma equipe de código utilizado no GLPK.
cientistas britânicos decidiu tomar decisões com bases
cientificas sobre a melhor utilização de material de II. Objetivo e Questão Problema
guerra. Após a guerra, as ideias propostas para operações
militares foram adaptadas para melhorar a eficiência e a A VAB está estudando a compra de três tipos de
produtividade do setor civil (TAHA, 2008). aviões: Boeing 717 para as pontes aéreas de curta
Imagine que você tenha um compromisso de distância, Boeing 737-500 para voos domésticos e
trabalho de cinco semanas entre as cidades São Paulo e internacionais de média distância e MD-11 para voos
Rio de Janeiro. Você pega um avião em São Paulo na internacionais de longa distância. Em um estudo
segunda-feira e volta na quarta-feira. Uma passagem preliminar, considerou-se que a capacidade máxima dos
aérea normal de ida e volta custa R$ 300,00, mas há um aviões a serem comprados será sempre preenchida para
desconto de 20% se as datas do bilhete abrangerem o efeito de planejamento. Os dados de planejamento
final de semana. Uma passagem só de ida em qualquer constam da tabela abaixo:
direção custa 75% do preço normal. Como seria mais
conveniente você comprar as passagens para o período de
Tabela 1: Situação hipotética (GOLDBARG, 2005)
cinco semanas? (Adaptado de TAHA, 2008).
A Viação Aérea Brasileira (VAB) tem disponível Tipos de Custo em Receita em Pilotos
um recurso 𝑣 para compra de novas aeronaves, tem
também disponível uma quantidade 𝑃 de pilotos Avião milhões milhões (R$) Aptos
habilitados para cada tipo e modelo de aeronave (R$)
disponível no mercado, e tem disponível também oficinas
para manutenção com restrição de capacidade. A VAB Boeing
está interessada em otimizar as aquisições de compra de 5,1 330 30
aeronaves. 717
Nesse trabalho propomos um modelo matemático
Boeing
para solução do problema, no qual o principal objetivo é 3,6 300 20
maximizar o lucro obtido pela VAB. 737-500
Resolver esse tipo de problema é algo muito
importante em diversas áreas do conhecimento, pois em MD-11 6,8 420 10
várias situações, sejam do cotidiano ou relacionadas a
trabalho, encontramos algumas delas, e em uma boa parte
dessas situações, não sabemos como lidar com o mesmo. A verba disponível para as compras é de 𝑥
Um problema assim é chamado de Problema de milhões de Reais. Os pilotos de MD-11 podem pilotar
Programação Linear (PPL), e é estudado em PO. Em PO todos os aviões da empresa, mas os demais pilotos só
existem vários métodos de se solucionar um PPL, alguns podem ser escalados às aeronaves a que foram
deles dão respostas aproximadas, como os métodos habilitados. Cada aeronave necessita de dois pilotos para
heurísticos, e alguns dão respostas exatas, como o operar. As oficinas de manutenção podem suportar até 40
algoritmo Simplex. Boeings 717. Um Boeing 737-500 equivale, em esforço
Para situações de menor complexidade, se procura de manutenção, a 3/4, e um MD-11 a 5/3, quando
utilizar um método de soluções exatas, algo que não seria referidos ao Boeing 717. O objetivo é formular um
prático para um problema maior. No nosso caso, o modelo de PPL do problema de otimizar as aquisições de
objetivo é de se utilizar o método Simplex para obter aviões.
soluções exatas para o problema da VAB com sua compra
926

III. Descrição de Materiais e Métodos disponível para a compra dos aviões.


A metodologia utilizada nesse trabalho é a Para a solução do problema, podemos pensar em
proposta por (TAHA, 2008) que consiste em 3 fases: vários cenários, como o objetivo final é otimizar as
aquisições de aviões fica subentendido que o problema
quer saber qual a quantidade máxima de aviões a serem
1. Definição do problema: adquiridos com o recurso disponível, mas preferimos
Conforme o problema apresentando em Objetivo e nesse trabalho determinar qual a quantidade máxima de
questão do problema, para otimizar a aquisições de aviões que podem ser adquiridos com o objetivo de
aeronaves, sabemos que a VAB fez um estudo preliminar maximizar a receita, para isso propomos o modelo
e considerou que a capacidade máxima dos aviões a abaixo, na qual 𝑥𝑖 representa a quantidade de aviões do
serem comprados seria sempre preenchida para efeito de tipo 𝑖:
planejamento, desta maneira, o modelo proposto irá Max: 𝑧 = ∑ 𝑟 𝑥 (7)
𝑖 𝑖
otimizar a receita total. 𝑖∈𝑁
Sujeito a:
2. Construção do modelo: (8)
∑ 𝑐𝑖 𝑥𝑖 ≤ 𝑣
O modelo abaixo é proposto para solução de um
𝑖∈𝑁
caso particular extraído (GOLDBARG, 2005), (9)
considerando que a verba disponível para as compras é ∑ 𝑥𝑖 ≤ 0.5 ∙ 𝑃
de 220 milhões de reais e que representa o Boeing 𝑖∈𝑁

∑ 𝑒𝑖 𝑥𝑖 ≤ 𝐸 (10)
717, o Boeing 737-500 e o MD-11.
𝑖∈𝑁

𝑧 = 300𝑥1 + 300𝑥2 + 420𝑥3 𝑥𝑖 ≤ 0.5 ∙ 𝑝𝑖 (11)


(1) 𝑥𝑖 ∈ ℕ, 𝑖 ∈ 𝑁, 𝑁 = {1,2, ⋯ , 𝑛} (12)
Sujeito a:
5,1𝑥1 + 3,6𝑥2 + 6,8𝑥3 ≤ 220 (2)
(3) Em (7) temos a função objetivo 𝑧 que maximiza a
receita teórica total, 𝑟𝑖 representa a receita teórica de um
(4) avião do tipo 𝑖, e 𝑥𝑖 representa a quantidade de aviões do
(5) tipo 𝑖. Em (8) temos a restrição da verba máxima de gasto
(6) disponível, onde 𝑐𝑖 representa o custo de cada avião do
tipo 𝑖, e 𝑣 a verba total disponível. Em (9) temos a
Em (1) temos a função objetivo, na qual queremos restrição da quantidade total de pilotos, na qual 𝑃
maximizar a receita total. Em (2) temos a restrição de representa a quantidade total de pilotos disponíveis. Em
capacidade financeira, ou seja, o valor máximo que a (10) temos a restrição de espaço para manutenção das
VAB pode gastar com a compra das aeronaves. Em (3) aeronaves, onde 𝑒𝑖 representa o esforço de manutenção
temos a restrição da quantidade de pilotos, no exemplo há necessário para cada avião do tipo 𝑖, e 𝐸 representa o
disponível 60 pilotos, e como cada aeronave deve ter 2 esforço total que pode ser gasto. Por sua vez em (11)
pilotos e considerando que não devemos ter aeronave temos a restrição da quantidade máxima de aeronaves
parada no hangar. Em (4) temos a restrição de capacidade que podem ser adquiridas com a quantidade de pilotos
das oficinas de manutenção. Em (5) as restrições de disponíveis, 𝑝𝑖 representa a quantidade de pilotos
acordo com os pilotos disponíveis para cada modelo de qualificados para pilotar cada tipo 𝑖 de aeronave. E
aeronave e em (6) a restrição de não negatividade do finamente em (12) a restrição de não negatividade do
modelo. problema.

O problema e o modelo podem ser adaptados 3. Solução do modelo:


conforme a necessidade da VAB. Para resolver este problema usaremos o algoritmo
Simplex, que resolve problemas de programação linear
Problema adaptado: Supõe-se que a VAB está com precisão exata.
estudando a compra de 𝑛 tipos de aviões para diferentes O simplex é um algoritmo que se utiliza de um
propósitos. Em um estudo preliminar ela considerou que ferramental baseado na Álgebra Linear para determinar,
a capacidade máxima dos aviões a serem comprados seria por um método iterativo, a solução ótima de um PPL. Sua
sempre preenchida para efeito de planejamento. Os dados concepção básica é simples e, por isso mesmo, eficiente.
de planejamento necessários são os tipos de aviões, Em linhas bastante gerais, o algoritmo parte de uma
custos em milhões de cada tipo de avião, a receita teórica solução viável do sistema de equações que constituem as
fornecida por cada tipo de avião, a quantidade de pilotos restrições do PPL, solução essa normalmente extrema
aptos a pilotar cada um dos tipos de aviões, o esforço de (vértice). A partir dessa solução inicial vai identificando
manutenção necessário para cada tipo de avião e a verba novas soluções viáveis de valor igual ou melhor que a
926

corrente. O algoritmo, portanto, possui um critério de writer[j].println("var x{i in N},


integer, >= 0;");
escolha que permite encontrar sempre novos e melhores writer[j].println("param r{i in N}, >
vértices da envoltória convexa do problema, e um outro 0;");
critério que consegue determinar se o vértice escolhido é writer[j].println("param c{i in N}, >
0;");
ou não um vértice ótimo. (GOLDBARG, 2005). Os writer[j].println("param v, >= 0;");
cálculos do Simplex são particularmente tediosos, writer[j].println("param e{i in N}, >=
repetitivos e, acima de tudo maçantes. (TAHA, 2008). 0;");
writer[j].println("param E, >= 0;");
Para auxiliar nos cálculos utilizaremos o GLPK writer[j].println("param p{i in N},
que é um pacote GNU que oferece um Kit Programação integer, >= 0;");
Linear destinado a resolver problemas de Programação writer[j].println("maximize z: sum{i in
N} r[i] * x[i];");
Linear (PL), Programação Inteira Mista (PIM) e outros writer[j].println("s.t. r1 : sum{i in N}
problemas relacionados de grande escala. O GLPK c[i] * x[i] <= v;");
suporta GNU MathProg modeling language que é um writer[j].println("s.t. r2 : sum{i in N}
x[i] <= 0.5 * sum{i in N} p[i];");
subconjunto da linguagem AMPL1. Os principais writer[j].println("s.t. r3 : sum{i in N}
componentes do Pacote GLPK são: e[i] * x[i] <= E;");
• método simplex primal e dual; writer[j].println("s.t. r4{i in N} :
x[i] <= 0.5 * p[i];");
• método de ponto interior primal e dual; writer[j].println("solve;");
• método branch-and-cut; writer[j].println("printf 'Total
(z): %10g\\n', z;");
• tradutor para GNU MathProg; writer[j].println("data;");
• aplicativo de interface para programação; writer[j].println("param n := " + n +
• solvers para solução de PL/MIP. ";");
writer[j].println("param r :=");
for (int i = 1; i <= n; i++) {
Para a construção automatizada do código writer[j].println(" " + i + " " +
modelado a ser utilizado no GLPK desenvolvemos um (Math.round(Math.random() * 1000) + 1));
}
código JAVA que imprime o código já com variáveis writer[j].println(";");
sorteadas de modo aleatório. writer[j].println("param c :=");
for (int i = 1; i <= n; i++) {
writer[j].println(" " + i + " " +
IV. Resultados e Discussão dos Resultados (Math.round(Math.random() * 1000) + 1));
}
writer[j].println(";");
Para a construção do código utilizado no GLPK writer[j].println("param p :=");
propomos o código abaixo desenvolvido em JAVA, que for (int i = 1; i <= n; i++) {
gera a quantidade de códigos em arquivos individuais writer[j].println(" " + i + " " +
(Math.round(Math.random() * 1000) + 1));
conforme necessitamos, no nosso caso, geramos 100 }
arquivos, ou seja, 100 simulações distintas. O código writer[j].println(";");
JAVA sorteia quantidade de tipos de aeronaves (𝑛), writer[j].println("param v := " +
(Math.round(Math.random() * 1000) + 1) + ";");
receita de cada tipo de aeronave (𝑟), o custo de cada tipo writer[j].println("param e :=");
de aeronave (𝑐), o número de pilotos apitos para pilotar for (int i = 1; i <= n; i++) {
cada tipo de aeronave (𝑘), verba disponível para compra writer[j].println(" " + i + " " +
(Math.round(Math.random() * 1000) + 1));
de aeronaves (𝑣), esforço de manutenção de cada tipo de }
aeronave (𝑒) e esforço total de manutenção (𝐸). writer[j].println(";");
writer[j].println("param E := " +
(Math.round(Math.random() * 1000) + 1) + ";");
import java.io.PrintWriter;
writer[j].print("end;");
public class CodigoGLPK {
writer[j].close();
public static void main(String[] args) {
}
int q = 10;
} catch (Exception e) {}
try {
}
PrintWriter[] writer = new PrintWriter[q];
}
for (int j = 1; j <= q - 1; j++) {
int n = (int) (Math.round(Math.random() Gera códigos para serem executados no GLPK,
* 100) + 1); abaixo apresentamos um exemplo de código gerado
String str = "testes/Teste " +
referente ao modelo apresentado nos itens 07 a 12:
Integer.toString(j) + " - " +
Integer.toString(n) + " tipos.mod";
writer[j] = new PrintWriter(str, "UTF- param n, integer, >= 0;
set A := 1..n;
8");
var x{i in A}, integer, >= 0;
writer[j].println("param n, integer, >= param r{i in A}, > 0;
0;"); param c{i in A}, > 0;
writer[j].println("set N := 1..n;"); param k{i in A}, integer, >= 0;
param v, >= 0;
param e{i in A}, >= 0;
1
Uma linguagem de alto nível para especificação de problemas de param E, >= 0;
programação matemática. maximize z: sum{i in A}r[i]*x[i];
926

s.t. r1 : sum{i in A}c[i]*x[i]<=v;


s.t. r2 : sum{i in A}x[i]<=0.5*sum{i in A}k[i]; IV. Referências Bibliográficas
s.t. r3 : sum{i in A}e[i]*x[i] <= E;
s.t. r4{i in A} : x[i] <= 0.5*k[i];
solve; Goldbarg, Marco Cesar. (2005), Otimização
data; combinatória e programação linear: modelos e
param n:=3;
param r:= algoritmos. 2.ed. – Rio de Janeiro: Elsevier, 2005 – 10 a
1 142
2 748
reimpressão.
3 929; ALVES, Fernando Silveira et al. Problemas de
param c:= roteamento de veículos aplicados no planejamento
1 723
2 283 logístico do transporte escolar da cidade de Coxim-MS.
3 254;
param k:=
2015.
1 373 TAHA, H. A. Pesquisa Operacional. 8◦ ed. São
2 920
3 975;
Paulo: Pearson Prentice Hall. 2008.
param v:=488;
param e:=
1 386
2 781
3 74; Eitor Bernardes de Paiva é natural de
param E:=482;
end; Goiânia - GO, tem 17 anos, frequenta
a 5º período do curso Técnico
Integrado em Informática do Instituto
Na tabela abaixo apresentamos o resultado de 10 Federal de Mato Grosso do Sul
simulações feitas em um computador com Ubuntu 17.10 Campus Coxim, atuou em Modelo
64 bits, com 4GB de memória e processador Intel® Baseado em P-Medianas para
Localização de Pontos de Ônibus sob
Core™ i5-4460 CPU @ 3.20GHz × 4: orientação do professor Fernando S.
Alves e atualmente estuda aplicações
de pesquisa operacional com ênfase
Tabela 2: Resultado de simulações em desenvolvimento de modelos de
otimização sob orientação do
Tempo professor Fernando S. Alves.
n v E z
(segundos)
22 275 147 0 0,217
82 327 607 2256 0,223 Mariana Dias Nogueira é natural de
86 226 382 825 0,225 Coxim – MS, tem 17 anos, é
70 597 188 8603 0,225 estudante do 5º período do curso
Técnico Integrado em Informática do
36 770 329 5019 0,224 Instituto Federal de Mato Grosso do
47 453 763 3508 0,213 Sul, campus Coxim. Atuou no
06 409 209 767 0,226 “Modelo Baseado em P-Medianas
para Localização de Pontos de
72 723 142 1760 0,215
Ônibus” sob orientação do professor
06 822 506 977 0,221 Fernando S. Alves, atuou também no
56 830 412 13056 0,223 Projeto de Extensão “Robótica para o
Ensino Fundamental” sob orientação
do professor Hugo Eduardo P. M.
V. Conclusões Siscar, atuou também no projeto de
pesquisa “Desenvolvimento de um
O modelo proposto se mostrou eficiente para tijolo ecológico de encaixe, utilizando
resíduos de vidro e isopor triturados”
resolver problemas de otimização de recursos para a sob orientação do professor Ramon S.
aquisição de aeronaves, no primeiro teste com n = 22, v = Minas, e atualmente estuda aplicações
275, E = 147 resultou em receita 0, isso significa que de pesquisa operacional com ênfase
com as atuais informações que foram inseridas nessa em desenvolvimento de modelos de
otimização sob orientação do
simulação não gerou solução factível, consequentemente, professor Fernando S. Alves.
essa é uma informação muito valiosa para o tomador de
decisão, mostrando que a empresa necessita melhorar em
alguns aspectos, como contratação de pilotos, aumento de
capacidade de manutenção, ou seja, infraestrutura de
modo geral.
Pelo tempo de solução que em todas as simulações
foram inferiores a 1 segundo, nos leva a projetos futuros
como o desenvolvimento de aplicativo para dispositivos
móveis com implementação do algoritmo simplex.
926

Thiago Ferronato é natural de Rio


Verde de MT – MS, tem 16 anos, é
estudante do 5º período do curso
Técnico Integrado em Informática do
Instituto Federal de Mato Grosso do
Sul, campus Coxim. Atuou no Projeto
de Extensão “Robótica para o Ensino
Fundamental” sob orientação do
professor Hugo Eduardo P. M. Siscar,
atuou também no projeto de pesquisa
“Desenvolvimento de um tijolo
ecológico de encaixe, utilizando
resíduos de vidro e isopor triturados”
sob orientação do professor Ramon S.
Minas, e atualmente estuda aplicações
de pesquisa operacional com ênfase
em desenvolvimento de modelos de
otimização sob orientação do
professor Fernando S. Alves.

Vous aimerez peut-être aussi