Escolar Documentos
Profissional Documentos
Cultura Documentos
Vitória
2017
YNGRITH SOARES DA SILVA
Vitória
2017
YNGRITH SOARES DA SILVA
COMISSÃO EXAMINADORA
“Não sabendo que era impossível, foi lá e fez. ” Essa frase de Jean Cocteau resume
essa conquista. De Medicina a Engenharia e agora vejo que tudo valeu a pena! Hoje
posso dizer: sou engenheira! Chegou ao fim mais esta etapa e só tenho a agradecer,
pois sozinho não podemos alcançar tantas conquistas. Sempre necessitamos de
carinho, apoio e palavras de incentivo.
Primeiramente, Senhor obrigada por essa vitória que me deu! Obrigada por me fazer
querer lutar nas horas mais difíceis, nas noites sem dormir...
Agradeço imensamente a minha mãe Sirlene, por me amar incondicionalmente e ter
lutado para que eu tivesse mais essa conquista.
Agradeço ao meu pai Luis Carlos, mesmo in memoriam, pois esteve ao meu lado
lutando e possibilitando a realização desse sonho.
Em especial aos dois, pois não mediram esforços em me proporcionar uma boa
educação.
Agradeço aos meus irmãos, Jéssica e Davi, que sempre me deram todo o carinho
necessário.
Agradeço aos meus familiares, pois foram escolhidos por Deus para estarem ao meu
lado.
Agradeço ao meu esposo, Marcos Vinícios, que sempre me apoiou e me incentivou.
Agradeço ao meu filho, João Vitor, pois sem o seu sorriso essa batalha seria mais
difícil.
Agradeço à família do meu esposo pela ajuda nos momentos necessários. Em
especial, minha sogra Eva, meu sogro José, minha concunhada Natália e meu
cunhado Carlos.
Agradeço também aos meus amigos da faculdade pelo companheirismo, passando
pelas mesmas dificuldades e alegrias. Em especial, Elisângela, Thaís e Carol.
Agradeço aos amigos em geral, pela amizade.
Muito obrigada, pois sem vocês nada disso seria possível!
Para Vinícios, João, Jéssica e Davi, razões de minha vida.
Para Luis Carlos e Sirlene, que me deram a vida.
“Eu gosto do impossível porque lá a concorrência é menor."
(Walt Disney)
RESUMO
Since the ressugence of electric vehicles (EVs), in the 1960s and 1970s, their market
insertion rate has gradually increased. Along with with this increase in EVs circulation,
there has been an increasing concern for the environment and dependence on fossil
fuels. Therefore, VEs will become the major components in future transportation
systems, requiring the development of an EV recharging infrastructure.. This leads to
the problem of locating these charging stations at strategic points in the city to meet
customers demands, so that there is no need for customers to drive a very long
distance to find a station or require a recharge before reaching the minimum charge of
their VE’s batteries. This work aims to develop a Greedy and a Chain Reaction
Optimization (CRO) algorithms to determine the location of the fewest possible number
of EV charging stations. The optimum point defined for this work is where the objective
function value is minimal. In addition, the performance of the algorithms in locating
these charging stations are evaluated.
1 INTRODUÇÃO .......................................................................................... 16
2 REVISÃO DE LITERATURA ..................................................................... 19
2.1 HISTÓRIA DOS VEÍCULOS ELÉTRICOS ................................................. 19
2.1.1 Veículos Elétricos – Futuro ..................................................................... 21
2.1.2 Veículos Elétricos - Brasil ....................................................................... 23
2.2 TIPOS DE VEÍCULOS ELÉTRICOS .......................................................... 23
2.2.1 Veículo Elétrico Híbrido (HEV) ............................................................... 23
2.2.2 Veículo Híbrido Elétrico plug-in (PHEV) ................................................ 25
2.2.3 Veículo Elétrico somente a Bateria (BEV) ............................................. 25
2.3 TIPOS DE BATERIAS ............................................................................... 26
2.3.1 Chumbo / Ácido (Pb/A) ............................................................................ 27
2.3.2 Hidreto de Metal de Níquel (Ni-MH) ........................................................ 27
2.3.3 Lítio-íon ..................................................................................................... 27
2.4 MODOS DE CARREGAMENTO ................................................................ 28
2.4.1 Carregadores internos ............................................................................ 28
2.4.2 Carregadores externos ............................................................................ 29
2.4.2.1 Nível 1 de carregamento ............................................................................ 29
2.4.2.2 Nível 2 de carregamento ............................................................................ 29
2.4.2.3 Nível 3 de carregamento ............................................................................ 30
2.5 PROBLEMA DE LOCALIZAÇÃO DE FACILIDADES ................................. 31
2.6 OTIMIZAÇÃO............................................................................................. 32
2.7 METAHEURÍSTICAS ................................................................................. 34
2.7.1 Classificação das metaheurísticas ......................................................... 35
2.7.1.1 Inspiradas ou não na natureza................................................................... 35
2.7.1.2 Busca por entorno ou populacionais .......................................................... 35
2.8 ALGORITMO COM ESTRATÉGIA GULOSA............................................. 36
2.9 ALGORITMO CRO .................................................................................... 38
2.9.1 Componentes básicos ............................................................................. 40
2.9.2 Reações químicas.................................................................................... 41
2.9.2.1 Colisão ineficaz unimolecular..................................................................... 42
2.9.2.2 Decomposição ........................................................................................... 42
2.9.2.3 Colisão ineficaz intermolecular .................................................................. 43
2.9.2.4 Síntese ....................................................................................................... 44
2.9.3 Design do algoritmo ................................................................................ 46
2.9.3.1 Inicialização ............................................................................................... 46
2.9.3.2 Iterações .................................................................................................... 47
2.9.3.3 Finalização ................................................................................................. 50
2.10 TRABALHOS RELACIONADOS Á VEÍCULOS ELÉTRICOS .................... 51
3 METODOLOGIA ....................................................................................... 53
3.1 FORMULAÇÃO MATEMÁTICA ................................................................. 53
3.2 LEVANTAMENTO DE DADOS .................................................................. 55
3.2.1 Casos Reais - Vitória ............................................................................... 55
3.2.2 Base de Dados OR-Library...................................................................... 59
3.2.2.1 Algoritmo de Floyd ..................................................................................... 60
3.2.2.2 Arquivos texto ............................................................................................ 61
3.3 ALGORITMO GULOSO ............................................................................. 62
3.4 ALGORITMO CRO .................................................................................... 63
4 RESULTADOS .......................................................................................... 65
4.1 CASOS REAIS – VITÓRIA ........................................................................ 65
4.2 BASE DE DADOS OR-LIBRARY ............................................................... 71
4.3 COMPARAÇÃO DOS RESULTADOS APRESENTADOS ......................... 74
5 CONCLUSÃO E TRABALHOS FUTUROS ............................................... 75
REFERÊNCIAS ......................................................................................... 76
APÊNDICE A ............................................................................................. 82
APÊNDICE B ............................................................................................. 83
APÊNDICE C ............................................................................................. 86
APÊNDICE D ............................................................................................. 86
APÊNDICE E ............................................................................................. 86
APÊNDICE F ............................................................................................. 86
ANEXO A .................................................................................................. 90
16
1 INTRODUÇÃO
Além disso, o motor de combustão interna está se tornando obsoleto, pois sua
eficiência é de, aproximadamente, 30% da energia do combustível. Além da baixa
eficiência, a emissão de gases poluentes, como o dióxido de carbono (CO 2),
permanece alta (OSORIO, 2013).
É neste cenário que os VEs, puros ou híbridos, vêm ganhando força como alternativa
para a independência energética, pois os VEs têm a vantagem de produzir menos
gases que são prejudiciais para a saúde do ser humano em comparação com os
veículos de combustão interna, segundo Marinho (2013). Para Lam e Li (2010),
veículos elétricos não só podem aliviar a nossa demanda de combustíveis fósseis,
mas também ajudam a promover um ambiente melhor para viver. De acordo com
Lam et al. (2014), fontes alternativas de energia tem se tornado crucial para o
desenvolvimento futuro de uma nação.
Outra vantagem oferecida pelos VEs é o custo por distância percorrida. Segundo a
EDP Portugal (2017), o custo estimado de um carro elétrico é de 1315€/ano contra
2090 €/ano de um carro a combustão, supondo uma média de 12000 Km
rodados/ano. Portanto, os VEs se tornarão os componentes principais no sistema de
transporte futuro. De acordo com a ABVE (2016), o Brasil comercializou 855 modelos
de VEs em 2014. Hoje, a frota é formada por 3 mil veículos.
O maior mercado mundial está no Japão, que conta com 11% da frota movida à
eletricidade. Nos Estados Unidos, temos 4% (ABVE, acesso em 20 out. 2016).
17
2 REVISÃO DE LITERATURA
Não se sabe ao certo quem inventou o veículo elétrico, já que o mesmo surgiu em
diferentes localidades quase ao mesmo tempo. Em 1800, a França e a Grã-Bretanha
foram os primeiros países a incentivar o desenvolvimento dos carros elétricos. Em
1828, o húngaro Ányos Jedlik fez um carro alimentado por um motor elétrico, mas
em escala reduzida. Por volta de 1832, o escocês Robert Anderson também fez um
carro movido a eletricidade. Em 1835, surgiu, na Holanda, outro veículo elétrico. A
primeira aplicação comercial do veículo elétrico ocorreu em 1897, na cidade de Nova
York. Os veículos foram utilizados numa frota de táxi (BELLIS, 2013, tradução
nossa).
Anos depois, foi descoberto petróleo no Texas (EUA), que contribuiu para a redução
do preço da gasolina, tornando-a um preço atrativo para o setor de transportes.
Henry Ford iniciou a produção em massa dos carros de motor de combustão interna
(ICE), o que fez reduzir o valor de venda deste tipo de carro. Os carros com ICE
tinham uma velocidade e autonomia maiores. Então, tornou-se vantajoso adquirir
um carro com ICE ao invés de um veículo elétrico. Consequentemente, houve um
declínio na popularidade dos carros elétricos. Sendo que quase desapareceram em
1935 (BELLIS, 2013, tradução nossa).
O desenvolvimento dos veículos elétricos ocorreu de forma gradual e lenta até o início
do século XXI, mas o interesse pelos mesmos vem aumentando.
21
Conforme pesquisa realizada pela Deloitte em 2011, com mais de 13000 pessoas em
17 países, 30% das pessoas se veem como potenciais compradores do primeiro
veículo elétrico, assim como 56% das pessoas talvez estejam dispostas a comprar,
no Brasil, como se pode ver no Gráfico 2 (GIFFI et al., 2011, tradução nossa).
A mesma pesquisa mostra que Brasil, Argentina, China e Índia são os países onde há
maior interesse no consumo de VEs, conforme mostra a Figura 2.
22
No mundo, em 2013, foram licenciados 1,6 milhão de veículos elétricos híbridos e 105
mil elétricos puros, correspondendo a 2% do total de licenciamentos mundiais (VAZ et
al., 2015).
O Japão possui o maior mercado mundial de VEs, contando com 11% da frota movida
à eletricidade (ABVE, acesso em 20 out. 2016). De acordo com a Nissan, o Japão
conta com 40 mil totens de recarga de VEs contra 35 mil postos de combustíveis
(EXAME, 2016).
Hoje, diversos modelos de carros elétricos são comercializados, como o Model 3 da Tesla,
que é considerado o primeiro carro elétrico puro popular da marca, com valor de revenda
23
de U$35 mil. Este modelo tem uma autonomia de 345Km. Há outra versão da marca que
possui autonomia de 500Km e custa U$44 mil. Há também o Chevrolet Bolt que atualmente
está sendo vendido por U$30 mil nos EUA, com autonomia de 382Km. O carro elétrico
mais vendido no mundo é o Nissan Leaf, com autonomia de 172Km. Porém, nenhum
destes modelos é comercializado no Brasil. Há previsão do Nissan Leaf ser comercializado
no Brasil a partir de 2019 (PRESSE, 2017).
Um veículo elétrico é aquele que possui o motor elétrico ligado à tração do veículo,
diferentemente dos veículos com motor de combustão interna (Castro e Ferreira,
2010).
Podem-se classificar os veículos elétricos em: veículos elétricos híbridos e puros.
O ICE é utilizado em último caso, pois o veículo pode ser utilizado somente em modo
elétrico ou pode ter o motor elétrico complementando o ICE. Há um sistema eletrônico
no veículo que decide em que instante utilizar ICE e quando usar a fonte elétrica. A
carga da bateria é obtida através da frenagem regenerativa e excesso de energia do
ICE, portanto, o veículo necessita ser abastecido com combustível. A melhoria na
capacidade das baterias pode reduzir o uso do ICE. O Ford Fusion e o Toyota Pirus
são exemplos de HEVs (ETSAP, 2010, tradução nossa).
Na arquitetura paralela, tanto o ICE como o motor elétrico tem conexão com as rodas.
Dependem da frenagem para manter a bateria recarregada e podem ter uma bateria
menor do que na arquitetura série, como pode ser visto na Figura 4.
25
Existe uma terceira arquitetura que conjuga as duas arquiteturas anteriores, chamada
arquitetura série-paralela, que permite que o ICE tenha o controle das rodas em altas
velocidades, como um híbrido paralelo, e em menores velocidades, as rodas são
conectadas ao motor elétrico, como na arquitetura série.
Segundo Castro e Ferreira (2010), existem três tipos de baterias mais utilizadas na
indústria automobilística: as de chumbo-ácido (PbA), as de níquel-hidreto metálico
(NiMH) e as de Lítio-íon (Li-Ion).
Para que os VEs sejam bem difundidos, a bateria deve ter bom tempo de vida útil e
alta energia específica (Wh/kg). (AHMAN, 2000, tradução nossa).
Além disso, possui vida útil baixa assim como baixa energia específica, de 30 a 50
Wh/Kg (Valsera-Naranjo et al, 2009). O número de ciclos desta bateria é de 100 ciclos
e a razão para isto é a corrosão que ocorre na placa positiva (RUESTCHI, 2004,
tradução nossa).
Foi o primeiro tipo de bateria a ser utilizado nos carros híbridos. Essas baterias têm
sido gradualmente substituídas pelas baterias de lítio-íon. Possui uma energia
específica maior em relação à bateria de chumbo/ácido. Segundo Valsera-Naranjo et
al (2009), a energia específica varia de 60 a 80 Wh/kg. A vida útil de uma bateria de
Ni-MH pode chegar a 3000 ciclos de recarga, aproximadamente 10 anos (EPRI, 2004,
tradução nossa).
De acordo com Castro e Ferreira (2010), suas desvantagens são o alto custo, o peso
relativamente alto e o fato de não poderem descarregar-se completamente.
Essa bateria é uma das mais utilizadas nos VEs, pois é uma bateria de alto
desempenho. Tem a maior energia específica, em torno de 130 Wh/kg, e todos os
materiais utilizados para a sua fabricação são mais leves. Tem um ciclo de vida maior
comparado com os outros tipos de baterias. A desvantagem da bateria de Lítio-íon
ainda é o preço e sua baixa tolerância a picos de potência na recarga (OSORIO, 2013).
28
Existem dois tipos de técnicas de conexão ao veículo elétrico para a recarga: conexão
condutiva e conexão indutiva. Na conexão condutiva, a energia é transferida pelo
contato direto do veículo e o carregador, que possui um fio, conforme mostrado na
Figura 5 (ECHEVERRI, 2014).
Figura 5 - Conector com fio em conexão condutiva
Existem três diferentes níveis de carga, que foram definidos pelo Instituto de Pesquisa
de Energia Elétrica dos Estados Unidos (EPRI), que serão explicados adiante.
Neste nível de carregamento, a recarga é realizada de forma lenta, com baixos níveis
de tensão e corrente. Geralmente, é realizado em residências no horário noturno ou
em empresas de grande porte, durante o horário de trabalho dos funcionários, onde
as tarifas de energia são mais baratas que em horário de ponta (OSORIO, 2013).
Para este tipo de recarga é usada uma tensão padrão de 120 VCA, com corrente de
15 A a 20A. Como a potência fornecida por este tipo de recarga é de,
aproximadamente, 1,9 kW, o tempo que a bateria leva para atingir um estado de carga
(SOC) de 100% oscila entre 12 e 18 horas, dependendo do tipo e do modelo do veículo
(ECHEVERRI, 2014).
É um dos métodos mais utilizados para a recarga dos VEs, pois pode ser feita em
locais públicos e privados, a partir de uma tensão de 240 VCA com uma corrente de
40A. Existem equipamentos condutivos para esse tipo de recarga que usam
conexões tipo "butt-type" ou "pin and sleeve", como mostrada na Figura 6
(MORROW et al., 2008, tradução nossa).
30
Esta teoria avançou a partir das pesquisas de Hakimi (1964) com as formulações do
problema de p-mediana, que tem como objetivo localizar p facilidades para atender n
pontos de demanda de forma que a distância percorrida do ponto de demanda a
facilidade seja a menor possível (TRAGANTALERNGSAK et al.,1999, tradução
nossa). O problema de p medianas pode ser classificado em: capacitado e não-
capacitado. No capacitado, cada local candidato a se tornar facilidade tem uma
capacidade finita, não podendo atender clientes além do que a sua capacidade
permite. Já no problema não-capacitado, o local candidato a facilidade pode atender
um número infinito de clientes. (TRAGANTALERNGSAK et al. (1999)).
2.6 OTIMIZAÇÃO
Esse tipo de problema pode ser representado, matematicamente, por uma função f
com domínio S, chamada de função custo, função de avaliação ou função objetivo
(BECCENERI, 2012).
2.7 METAHEURÍSTICAS
São utilizadas para resolver problemas que apresentam poucas informações para sua
solução e quando não se sabe como é a aparência de uma solução ótima. Ou seja,
há pouca informação heurística disponível e testar todas as soluções possíveis é
considerado inviável devido ao espaço de solução ser muito grande. Contudo, pode-
se testar uma possível solução e analisar como ela responderá (LUZIA; RODRIGUES,
2014).
De acordo com Mélian et. al (2003), três características são significativas nas
metaheurísticas: soluções inviáveis, função objetivo e critério de parada. As
metaheurísticas geralmente não possuem critério para lidar com soluções inviáveis,
sendo tarefa do programador impedir a manipulação (criação) de soluções inviáveis.
Quando não simulam este tipo de comportamento, então não são inspirados na
natureza, como o Iterated Local Search (ILS), Busca Tabu e GRASP.
As metaheurísticas de busca por entorno iniciam com uma solução prévia. A cada
iteração, percorrem o espaço de busca, exploram a vizinhança da solução obtida
anteriormente, até encontrar um resultado de boa qualidade e avaliam se houve uma
melhoria no custo. Como exemplo, temos os algoritmos gulosos que, a cada iteração,
selecionam a melhor solução da vizinhança da solução atual (SUCUPIRA, 2007).
Existem outras metaheurísticas deste tipo, como: Variable Neighbourhood Search,
Recozimento Simulado (Simulated Annealing), Busca Tabu, GRASP e ILS.
A cada iteração, ele escolhe o maior valor, no caso de maximização, ou o menor valor
disponível, no caso de minimização. A cada decisão a ser tomada, sempre escolhe a
alternativa que parece ser a mais promissora naquele dado momento, ou seja, escolhe
o ótimo local. Além disso, uma escolha já feita nunca é revista (SILVA et al., 2015).
Ao executar um algoritmo guloso, são criados dois conjuntos. Os dois conjuntos são
formados por elementos que já foram analisados. Mas um é formado pelos elementos
rejeitados na tomada de decisão e outro, pelos elementos escolhidos, que não saem
mais do conjunto solução (ROCHA, 2004).
As reações podem ser endotérmicas, quando necessitam de calor do meio para iniciar
a reação, ou exotérmicas, quando liberam calor para o meio. Estes dois tipos de
reações são caracterizados no CRO pelo tamanho do buffer. Se for positivo, a reação
é endotérmica. Se for negativo, a reação é exotérmica (LAM E LI, 2012, tradução
nossa).
com energia mínima, ou seja, mais estáveis (LAM E LI, 2012, tradução nossa). Esse
processo iterativo de busca do ponto ideal é mostrado na Figura 10.
Figura 10 - Representação da reação química na superfície potencial de energia
Existem quatro tipos de reações químicas. Os quatro tipos são: colisão ineficaz na
parede, decomposição, colisão ineficaz intermolecular e síntese (BARHAM et al.,
2016), sendo a colisão ineficaz na parede e a decomposição, reações unimoleculares
e a colisão ineficaz intermolecular e a síntese, reações intermoleculares. Uma reação
elementar ineficaz é aquela que resulta em uma pequena mudança na estrutura da
molécula.
A estrutura molecular (ω) possui uma solução do problema. Nesse caso, o valor da
função objetivo.
𝑃𝐸ω = 𝑓(𝜔)
O número de colisões (NumHit) registra o número de colisões que uma molécula pode
sofrer.
𝜔 → 𝜔′
O ω’ é gerado nas vizinhanças de ω. Toda vez que esta reação ocorre, uma
quantidade de energia cinética (KE) é transferida para o buffer de energia (LAM E LI,
2012, tradução nossa). Analisando as energias potenciais, vemos que:
𝑃𝐸𝜔 ≥ 𝑃𝐸𝜔′
Esta transferência de energia cinética para o buffer auxilia na redução das chances
de soluções piores serem escolhidas (LAM E LI, 2012, tradução nossa).
2.9.2.2 Decomposição
𝜔 → 𝜔1′ + 𝜔2′
ineficazes. Neste caso, mais soluções são criadas e então podemos ter que PE e KE
da molécula original não sejam suficientes e assim teríamos:
Sendo δ3 um número aleatório gerado no intervalo [0, 1]. Assim, a nova energia no
buffer será dada por:
𝑏𝑢𝑓𝑓𝑒𝑟 ′ = (1 − δ1 𝑥 δ2 )𝑥 𝑏𝑢𝑓𝑓𝑒𝑟
𝜔1 + 𝜔2 → 𝜔1′ + 𝜔2′
2.9.2.4 Síntese
A síntese mostra duas moléculas colidindo e fundindo-se em uma molécula. A
mudança é vigorosa, então temos (LAM; LI, 2012, tradução nossa):
𝜔1 + 𝜔2 → 𝜔′
Decomposição Sim
Colisão ineficaz
Sim
intermolecular
Síntese Sim
2.9.3.1 Inicialização
2.9.3.2 Iterações
Entrada: molécula Mω
ω' ←N(ω)
PEω’ ← f (ω’)
NumHit ω’ ← NumHit ω + 1
if PEω + KEω ≥ PEω’ então
Gerar α pertencente a [KELossRate, 1]
KEω’ ← (PEω - PEω’ - KEω ) x α
buffer ←buffer + (PEω - PEω’ - KEω ) x (1 – α)
ω ← ω'
PEω ← PEω’
KEω ← KEω’
if PEω < MinPEω
KE ← InitialKE
MinStructω ← ω
MinPEω ← PEω
MinHitω ← NumHitω
end if
end if
Fonte: Adaptado de Lam e Li (2012).
Entrada: molécula Mω
Criar Mω’1 e Mω’2
Obter ω'1 e ω'2 de ω
PEω’1 ← f (ω’1) e PEω’2 ← f (ω’2)
if PEω + KEω ≥ PEω’1 + PEω’2 então
Edec ← PEω + KEω - PEω’1 - PEω’2
goto Passo (13)
else
Gerar δ1 e δ2 pertencente a [0, 1]
Edec ← PEω + KEω + δ1 δ2 x buffer - PEω’1 - PEω’2
if Edec ≥ 0 então
buffer ←buffer x (1 – δ1 δ2)
Gerar δ3 pertencente a [0, 1]
KEω’1 ← Edec x δ3 e KEω’2 ← Edec x (1- δ3)
MinStructω’1 ← ω’1 e MinStructω’2 ← ω’2
MinPEω’1 ← PEω’1 e MinPEω’2 ← PEω’2
Destruir Mω
else
NumHit ω ← NumHit ω + 1
Destruir Mω’1 e Mω’2
end if
end if
Fonte: Adaptado de Lam e Li (2012).
49
𝐾𝐸 ≤ 𝛽
Se nenhum critério de parada for atingido, inicia-se uma nova iteração, após
armazenar-se a melhor solução dentre as melhores soluções de toda a população, ou
seja, após armazenar-se o MinStruct com o menor MinPE entre todas as moléculas.
2.9.3.3 Finalização
Se algum dos critérios de parada for atingido, segue-se para a fase final. Os critérios
de parada delimitam o número de buscas do algoritmo. Geralmente, os critérios de
parada utilizados são: tempo máximo de execução, o número máximo de iterações e
o número máximo de iterações realizadas sem melhorias, ou seja, sem que o menor
MinPE entre todas as moléculas tenha mudado (LAM E LI, 2012, tradução nossa). Na
51
O advento dos veículos elétricos e sua expansão no mercado têm atraído diversas
pesquisas nos últimos anos. Muitos pesquisadores estão abordando temas, como:
postos de cobrança, tarifação, tipo de estações de carregamento, tamanho das
estações, impactos na rede elétrica e localização das estações.
Estes trabalhos nos inspiraram para propor um modelo para o problema de localização
de estações de carregamento de veículos elétricos e testá-lo numa base da literatura
e também em uma região metropolitana.
53
3 METODOLOGIA
Neste trabalho, tanto o algoritmo guloso quanto a metaheurística CRO foram utilizados
para resolver um caso real da região metropolitana de Vitória –ES, assim como foram
testados para resolução de 40 instâncias conhecidas da biblioteca OR-Library
(BEASLEY, 1990).
Foi escolhido o algoritmo guloso para a resolução destes problemas por ter um baixo
tempo computacional comparado a outros algoritmos e produzir soluções com
diferença mínima de qualidade, dependendo do problema.
Variáveis de decisão:
𝑥𝑗 = {1 𝑠𝑒 𝑎 𝑒𝑠𝑡𝑎çã𝑜 𝑐𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑎 𝑗 𝑓𝑜𝑖 𝑠𝑒𝑙𝑒𝑐𝑖𝑜𝑛𝑎𝑑𝑎; 𝑜𝑢 0, 𝑑𝑜 𝑐𝑜𝑛𝑡𝑟á𝑟𝑖𝑜 (1)
𝑦𝑖𝑗 = {1 𝑠𝑒 𝑜 𝑐𝑒𝑛𝑡𝑟𝑜 𝑑𝑒 𝑑𝑒𝑚𝑎𝑛𝑑𝑎 𝑖 é 𝑐𝑜𝑏𝑒𝑟𝑡𝑜 𝑝𝑒𝑙𝑎 𝑒𝑠𝑡𝑎çã𝑜 𝑗; 𝑜𝑢 0, 𝑑𝑜 𝑐𝑜𝑛𝑡𝑟á𝑟𝑖𝑜 (2)
Modelo:
𝑀𝑖𝑛 ∑ 𝑓𝑗. 𝑥𝑗 + 𝛼 ∑ ∑ 𝑑𝑖𝑗 . 𝑦𝑖𝑗 (3)
𝑗𝜖𝐽 𝑖𝜖𝐼𝑗𝜖𝐽
∑ 𝑦𝑖𝑗 = 𝑝, ∀𝑖 ϵ 𝐼 (5)
𝑗𝜖𝐽
𝑦𝑖𝑗 − 𝑥𝑗 ≤ 0 ; ∀𝑖 ϵ 𝐼; ∀𝑗ϵ 𝐽 (6)
𝑥𝑗 𝜖 {0,1}; 𝑗 ϵ 𝐽, 𝑟 ≥ 0 (7)
Onde:
I: Conjunto de centros de demanda
J: Conjunto de locais candidatos a estações de recarga
fj: Custo para localização da estação de recarga
dij: distância, percorrida pelo veículo, de um centro de demanda i até a estação de
recarga j
α: Custo do Kilowatt hora
p: Número de estações escolhidas (medianas)
A função (3) é a função objetivo, que minimiza a distância de cada cliente e o local da
estação candidata escolhida e o custo total de instalação das estações de
carregamento. A restrição (4) diz que toda demanda do centro de demanda deve ser
satisfeita. A restrição (5) estabelece que o número de estações escolhidas seja igual
a p. A restrição (6) assegura que um centro de demanda só pode ser associado a uma
estação escolhida. As restrições (7) e (8) mostram que as variáveis de decisão devem
ter valores inteiros binários.
55
Então, o custo (fj) de localização de uma estação de carregamento j foi mantido fixo,
pois foi considerado que o custo de instalação é igual para todas as estações,
independentemente da localização (custo monetário do espaço territorial), e ainda foi
considerado que as estações possuem o mesmo número de baias (locais para recarga
do veículo elétrico).
Assim, a função (3) torna-se:
Também foi considerado que o custo do quilowatt hora é α = 1, devido ser uma
constante e não impactar na localização das estações de trabalho.
Como a cidade não tem grande extensão territorial comparada a outras, um pequeno
número de instâncias pode representar este problema de localização.
De acordo com Baouche et al. (2014), o custo de estação nível 3 é cerca de 10 vezes
maior que uma estação nível 2. Estes locais estão listados na Tabela 4. As longitudes
e latitudes destes locais candidatos estão expostos no Apêndice A. Dado que os
clientes podem estar em qualquer região da cidade de Vitória, estes foram
selecionados de forma aleatória, mas cobrindo a maior área possível da região, como
mostra a Figura 18.
1 OK
Hipermercado Verde
2 Shopping
Vitória Roxo
3 Aeroporto de
Vitória Cinza
4 UFES
Goiabeiras Marrom
5 UFES
Maruípe Amarelo
7 Praça dos
Namorados Azul
8 Praça do
Papa Laranja
Para a região de Vitória foram realizados dois tipos de testes. O primeiro com
distâncias em linha reta e o segundo, com distâncias reais.
Portanto, foi necessário a conversão dos valores de latitude e longitude para cálculo
destas distâncias. Então, converteu-se todas as latitudes e longitudes de graus
decimais para graus, minutos e segundos.
Após é feito o cálculo de distância euclidiana. A distância euclidiana (DE) entre dois
pontos A e B quaisquer é dada por:
A partir destes cálculos, foi implementada uma rotina no LabWindows 2017 para
conversão destes valores e o preenchimento da matriz de distâncias. O Google My
Maps fornece a distância em linha reta entre locais, mas se torna inviável coletar estas
informações para grandes instâncias.
No teste com distâncias reais, a matriz de distâncias foi preenchida com a menor
distância percorrida de automóvel pelas ruas da cidade de todos os clientes até os
locais candidatos. Essa distância é mostrada pelo Google Maps. As distâncias reais
para este caso estão mostradas no Apêndice C.
Para o algoritmo guloso, só é necessário realizar um teste para cada valor de
mediana (quantidade de estações escolhidas), pois é um algoritmo determinístico
(explicado na seção 2.8). Como p varia de 1 a 4, no total foram realizados 4 testes
com o algoritmo Guloso para distâncias euclidianas.
59
Para a metaheurística CRO, foi realizada uma rotina de 15 testes utilizando a mesma
configuração para cada valor de mediana para distâncias em linha reta. Isso se faz
necessário, pois, como foi afirmado na seção 2.9, o CRO é probabilístico. Neste caso,
p variou de 1 a 4, então foram realizados 60 testes no total. A quantidade de 15 testes
foi definida empiricamente e com base em valores utilizados nas literaturas
consultadas.
Para distâncias reais com o algoritmo guloso, foi executada também uma rotina de 4
testes. Para teste de distâncias reais com o CRO, foi realizada a mesma rotina
explicada acima.
Como exemplo, temos, na Figura 19, o arquivo pmed1.txt que mostra o tamanho, 100,
e 5 medianas. Vemos que a distância de 1 para 2 é 30, a distância de 2 para 3 é 46 e
assim sucessivamente. Pode-se notar também que os dados não estão completos.
Não é fornecido, por exemplo, a distância de 1 para 3.
60
Beasley (1990) sugere que seja utilizado o algoritmo de Floyd para obtenção da matriz
completa, porque é um tipo de algoritmo que calcula o caminho mais curto entre pares
de vértices de um grafo.
O algoritmo de Floyd foi criado por Robert Floyd em 1962 para cálculo do caminho
mais curto entre os pares de vértice de um grafo orientado.
A partir do pseudocódigo abaixo, foi desenvolvido uma rotina no LabWindows 2017
para preenchimento de todas as matrizes.
O algoritmo irá preencher a matriz com zero nos casos em que i=j. Quando i e j forem
diferentes, mas os valores forem conhecidos da base, os mesmos serão preenchidos
com esse valor. Caso contrário, serão preenchidos com um valor considerado infinito.
Neste trabalho, foi utilizado como infinito o valor 1.000.000, como mostrado no
apêndice D.
61
Foram utilizadas as técnicas de arquivo texto para resolução das 40 instâncias. Como
o caso real era de pequeno porte, os valores de xi e yi das matrizes foram escritos no
próprio algoritmo. Já para a base, que são instâncias de grande porte, não se justifica
tal ação. Então, os dados das 40 instâncias foram gravados cada um em um arquivo
.txt, que foram nomeados conforme o autor as nomeou, como pmed1.txt, pmed2.txt e
assim por diante.
FILE *arq;
Para abrir o arquivo, utilizou-se a função fopen(), que recebeu como parâmetros o
nome do arquivo recebido pela variável do tipo char e o modo de abertura do arquivo,
que neste caso foi especificado como “r” (somente leitura):
Caso o arquivo esteja com erro ao abrir, a fopen retorna a constante NULL e é exibida
a seguinte mensagem:
if(arq == NULL)
Após a abertura dos arquivos que contém os dados das bases, é feita a leitura dos
dados, conforme mostrado na figura 21 e então é executado o Algoritmo de Floyd
(BEASLEY, 1990).
Figura 21 – Algoritmo de leitura de dados do arquivo
while( (fscanf(arq,"%d %d %d\n", &ch1, &ch2, &ch3))!=EOF )
{
for (i=0; i<qtdeclientes; i++)
{
for(j=0; j<qtdelocais; j++)
{
62
Na figura 21, enquanto a função fscanf, utilizada para fazer leitura dos dados do
arquivo, encontrar dados para leitura, é criada uma matriz com os dados da base OR-
Library. A função para quando não há mais dados para leitura, então retorna o valor
da constante EOF(fim de arquivo). O arquivo é fechado através da função fclose().
No caso real, o conjunto inicial de candidatos era formado pelos locais candidatos a
estações em Vitória. Já no caso do teste com a base de Beasley(1990), o conjunto
candidato era formado pela quantidade de instâncias, de acordo com o arquivo texto.
A escolha aleatória de um grupo de candidatos foi feita a partir da escolha randômica
de números que representavam estes locais. Para isto, foi utilizado a função rand().
Depois de escolhidos, os candidatos passaram por uma seleção na qual foi feita a
soma total das distâncias do local candidato selecionado até os outros locais. Depois
63
de obtida a soma total das distâncias de todos os candidatos escolhidos, foi utilizado
um algoritmo de ordenação, o Quicksort (SEDGEWICK, 1983).
O Quicksort foi escolhido como método de ordenação por ser o mais rápido dentre os
algoritmos conhecidos, o que mantém o tempo computacional do Guloso baixo. O
algoritmo Quicksort desenvolvido está mostrado no Apêndice E.
O candidato com o menor valor de soma vai para o conjunto solução. Os outros são
descartados e vão para o conjunto de candidatos rejeitados. Isto é feito até a obtenção
do valor de candidatos no conjunto solução que correspondam ao número de
medianas (p).
flag 1
else
x’j 1
Remover j de N
end if
até flag = 1 ou N = 0
até N = 0
Fonte: Adaptado de Lam e Li (2012).
Na colisão ineficaz intermolecular, ω’1 e ω’2 também são obtidos através do algoritmo
guloso, como na colisão ineficaz na parede.
Como ponto de partida para o algoritmo CRO, utilizamos os valores dos parâmetros
mostrados em Lam et. al (2014). Contudo, cada aplicação tem uma configuração de
parâmetros própria, devido aos objetivos mais específicos de cada aplicação e como
nossas instâncias são diferentes das instâncias do artigo citado, tivemos que variar os
parâmetros do algoritmo CRO desenvolvido.
Os parâmetros utilizados para o caso real foram: KELossRate= 0.5; MoleColl= 0.5;
InitialKE= 1000; buffer= 0; alfa= 500; beta= 1000 e PopSize= 10.
Já para resolução dos dados da base da literatura foram: KELossRate= 0.9; MoleColl=
0.3; InitialKE= 10000; buffer= 0; alfa= 50; beta= 1000 e PopSize= 10.
65
Os valores citados acima foram modificados de Lam et. al (2014) a partir da alteração
de um único parâmetro, de cada vez, e visualização dos resultados obtidos com
valores da base OR-Library. O primeiro valor alterado foi KELossRate. E por último, o
valor de beta.
4 RESULTADOS
Os resultados obtidos com o algoritmo guloso para a cidade de Vitória estão dispostos
nas Tabelas 5 e 6. As tabelas mostram o número de estações de carregamento
(medianas), as estações escolhidas, o número de iterações, o valor da função objetivo
e tempo de execução do algoritmo.
Tabela 5 - Resultados do algoritmo Guloso para 16 clientes e linha reta em Vitória
Número
Estações
de Função Tempo
Iterações
estações objetivo(km) (s)
escolhidas
(p)
1 1 440 221,9 3
2 1e4 468 178,4 3
3 1, 4 e 5 480 115,9 6
4 1,4, 5 e 7 524 57,03 3
Fonte: Autor (2017)
Nos testes realizados para Vitória com o algoritmo Guloso, mostrados nas Tabelas 5
e 6, verificamos que a estação escolhida quando p=1 utilizando a matriz de distâncias
em linha reta e distâncias reais é diferente.
66
Para p=2, vemos que o resultado obtido nos dois casos também é diferente. Então
para p=1 e p=2, houve discrepância nos resultados. Nos resultados do teste para p=3,
as estações 1 e 5 são escolhidas nas duas configurações. Nos resultados para
escolha de 4 estações (p=4), as estações 1, 5 e 7 são obtidas nas duas configurações.
Analisando o número de iterações na configuração de distâncias em linha reta e
distâncias reais, vemos que o número de iterações aumenta em ambos os casos com
a quantidade de estações escolhidas.
Nos testes realizados para Vitória com a metaheurística CRO, mostrado na Tabela 7,
verificamos que o resultado difere do encontrado para o algoritmo Guloso para p=3 e
p=4, pois o algoritmo CRO encontrou uma solução com menor valor da função
objetivo. Para as configurações de 1 e 2 estações, o resultado encontrado foi igual ao
obtido para o algoritmo guloso. Com este algoritmo, foi possível observar que o tempo
computacional aumentou com a quantidade de estações. Foi mostrado os melhores
valores obtidos para a função objetivo dos 15 testes realizados e o tempo mostrado é
a média dos tempos obtidos nos 15 testes.
Nos testes realizados para distâncias reais com a metaheurística CRO, mostrado na
Tabela 8, verificamos que o resultado difere do encontrado para o algoritmo Guloso
para p=2, p=3 e p=4, pois o algoritmo CRO encontrou uma solução com menor valor
da função objetivo. Para a configuração 1 estação escolhida, o resultado encontrado
foi igual ao obtido para o algoritmo guloso. Foi mostrado os melhores valores obtidos
para a função objetivo dos 15 testes realizados e o tempo mostrado é a média dos
tempos obtidos nos 15 testes.
Tabela 8 - Resultados da metaheurística CRO para 16 clientes e distâncias reais em Vitória
Número Estações Função
Tempo
de objetivo
médio (s)
estações escolhidas (melhor)(Km)
1 5 366,08 3
2 5e6 243,4 6
3 1, 5 e 6 168,0 6
4 1, 4,5 e 6 56,70 9
Fonte: Autor (2017)
Para a metaheurística CRO, detalharemos o número de iterações, pois há número
total de iterações, número de colisões ineficaz e com a parede, número de sínteses e
número de decomposições.
Para o teste com distâncias em linha reta, para p=1 obtivemos: número total de
iterações= 1321, número de colisões ineficaz= 396, número de colisões com a
parede= 364, número de sínteses= 297, número de decomposições= 264.
Para p=2 obtivemos: número total de iterações= 1403, número de colisões ineficaz=
421, número de colisões com a parede= 385, número de sínteses= 315, número de
decomposições= 282.
Para p=3 obtivemos: número total de iterações= 1442, número de colisões ineficaz=
433, número de colisões com a parede= 396, número de sínteses= 324, número de
decomposições= 289.
Para p=4 obtivemos: número total de iterações= 1578, número de colisões ineficaz=
473, número de colisões com a parede= 434, número de sínteses= 355, número de
decomposições= 316.
Para o teste com distâncias reais, para p=1 obtivemos: número total de iterações=
936, número de colisões ineficaz= 280, número de colisões com a parede= 257,
número de sínteses= 210, número de decomposições= 189.
68
Para p=2 obtivemos: número total de iterações= 1020, número de colisões ineficaz=
306, número de colisões com a parede= 281, número de sínteses= 229, número de
decomposições= 204.
Para p=3 obtivemos: número total de iterações= 1056, número de colisões ineficaz=
317, número de colisões com a parede= 291, número de sínteses= 237, número de
decomposições= 211.
Para p=4 obtivemos: número total de iterações= 1189, número de colisões ineficaz=
357, número de colisões com a parede= 326, número de sínteses= 267, número de
decomposições= 239.
A Figura 23 mostra os resultados obtidos com o algoritmo guloso para p=1 na
configuração de distância em linha reta e distâncias reais em Vitória. A estação
escolhida na configuração de distância em linha reta foi destacada com ícone verde e
a estação escolhida para distâncias reais, em rosa, para melhor visualização espacial.
Já a Figura 24 mostra os resultados para p=2. Os ícones em verde são os resultados
obtidos com distância euclidiana e os ícones em rosa, para distâncias reais. Os ícones
em laranja são as medianas não escolhidas.
Para p=3 e p=4, os ícones seguem a legenda apresentada acima, mostrados nas
Figuras 25 e 26. Além disso, temos ícones roxos que mostram estações escolhidas
em comum nas duas configurações.
A Figura 27 mostra os resultados obtidos com a metaheurística CRO para p=4 na
configuração de distância em linha reta.
69
Para obtenção dos valores destes testes, o algoritmo guloso foi repetido uma única
vez enquanto a metaheurística CRO foi repetida 15 vezes para cada um dos 40 casos.
Nos testes realizados, o algoritmo guloso deu como resultado o valor ótimo da função
objetivo apresentado na base em 26 dos 40 problemas propostos.
Gap, nesse caso, é utilizado para especificar a diferença percentual entre o valor
obtido na função objetivo pelos algoritmos e o valor ótimo da literatura. O gap
mostrado para a metaheurística CRO é em relação ao melhor resultado. Na
72
|𝑋 − 𝑋|
𝐷𝑀 = ∑
𝑁
Como foi utilizado o mesmo computador para realizar os testes com o algoritmo
Guloso e o CRO, podemos fazer a comparação do tempo computacional gasto. O
algoritmo guloso para os problemas menores, foi, em média, 2 vezes mais rápido que
a metaheurística CRO. Para problemas maiores, o Guloso continuou sendo mais
rápido. De acordo com as literaturas consultadas, o algoritmo guloso sempre teve um
menor tempo computacional comparado a algumas metaheurísticas, como: algoritmo
genético, ILS, CRO. Então, o tempo computacional menor do guloso corresponde com
o esperado e está mostrado no Gráfico 3.
Os resultados obtidos pelo algoritmo guloso e pelo CRO estão mostrados na Tabela
8. Estão mostradas o tamanho das instâncias dos problemas, o número de medianas,
o valor da função objetivo, o gap, o tempo gasto (em s), o gap (%) e o desvio médio,
73
pmed34 3013 700 140 3013 0,00 278,74 3013 0,00 0,00 358,54
pmed35 10400 800 5 10400 0,00 15,67 10400 0,00 0,09 33,10
pmed36 9934 800 10 9934 0,00 32,65 9934 0,00 0,12 55,27
pmed37 5057 800 80 5064 0,14 269,08 5057 0,00 0,02 372,69
pmed38 11060 900 5 11060 0,00 28,56 11060 0,00 0,00 47,37
pmed39 9423 900 10 9423 0,00 45,89 9423 0,00 0,00 60,02
pmed40 5128 900 90 5131 0,06 421,34 5130 0,04 0,04 501,57
Fonte: Autor (2017)
Além disso, pode ser feita uma comparação com o tempo computacional gasto para
resolução do problema. Daskin e Maass (2015) relatam que o maior tempo gasto foi
de 767,16s em pmed36.
Vê-se que tanto o algoritmo Guloso como a metaheurística CRO obtiveram resultados
satisfatórios, pois tiveram gaps menores comparado com o resultado encontrado por
Daskin e Maass (2015), além de que o maior tempo computacional gasto foi menor
nos algoritmos desenvolvidos neste trabalho.
Para a solução deste problema foram propostos dois algoritmos: o Algoritmo Guloso
e a metaheurística CRO. O objetivo foi comparar qual deles teria o melhor
desempenho na localização das estações de carregamento. Para validar os
resultados obtidos, a base OR-Library também foi utilizada para testes.
Os valores obtidos por estes dois algoritmos também foram comparados com
resultados da literatura para a Relaxação Lagrangeana.
Comparando os dois algoritmos, foi possível concluir que o algoritmo guloso possui
menor tempo computacional em relação ao CRO. Entretanto, a metaheurística CRO
apresenta melhores resultados (mais qualidade) na resolução dos problemas. Os dois
algoritmos se mostraram aplicáveis ao problema da p-mediana e se mostraram
competitivos em relação às diversas metaheurísticas presentes na literatura.
REFERÊNCIAS
BAOUCHE, F., BILLOT, R., El FAOUZI, N.-E e TRIGU. Efficient Allocation of Electric
Vehicles Charging Stations. IEEE Intelligent Transportation Systems, p. 33-43,
Paris, 2014.
CHAN, C. C. The state of the art of electric and hybrid vehicles. Proceedings of the
IEEE, Piscataway, v. 90, n. 2, p. 247-275, Feb. 2002.
FRANCES, R. The electric car. Time. Nova York: Time Inc. 2009. Disponível em:
<http://content.time.com/time/business/article/0,8599,1871282,00.html> Acesso em:
15 nov 2016.
GIFFI, C.; VITALE, J.; DREW, M.; KUBOSHIMA, Y.; SASE, M. Unplugged: Electric
vehicle realities versus consumer expectations. Deloitte. São Paulo, 2011. Disponível
em:<https://www2.deloitte.com/content/dam/Deloitte/global/Documents/Manufacturin
g/gx_us_auto_DTTGlobalAutoSurvey_ElectricVehicles_100411.pdf> Acesso em: 18
nov 2016.
LAM A. Y. S., Leung Y., Chu X. Electric Vehicle Charging Station Placement:
Formulation, Complexity, and Solutions. IEEE Transactions on Smart Grid, v. 5, n.
6, p. 2846-2856, Nov, 2014.
ROBLES, R.; SUDRIA-ANDREU, A. Electrical vehicles: State of art and issues for
their connection to the network. 10th Internacional Conference. Electrical Power
Quality and Utilisation, 2009. p 1-3. Disponível em:
<https://www.researchgate.net/publication/224078023_Electrical_vehicles_State_of_
art_and_issues_for_their_connection_to_the_network> Acesso em: 13 nov 2016.
APÊNDICE A
APÊNDICE B
Para exemplo, foi feito o cálculo utilizando as latitudes e longitudes do local candidato
1 (Ok Hipermercado) e cliente 6. As latitudes e longitudes deles estão mostradas nas
Tabelas 9 e 10.
Latitude:
20,29359 – Separe a parte inteira. Então, temos 20º.
Depois: 20,29359 – 20 = 0,29359
0,29359 * 60 = 17,6154 – Separe a parte inteira. Temos 17’.
Após: 17,6154 – 17 = 0,6154
0,6154 * 60 = 36,924. Então, temos 36,924’’.
Assim: 20º 17’ 36,924’’
Longitude:
40,30146 - Separe a parte inteira. Então, temos 40º.
Depois: 40,30146 – 40 = 0,30146
0,30146 * 60 = 18,0876 – Separe a parte inteira. Temos 18’.
Após: 18,0876 – 18 = 0,0876
0,0876 * 60 = 5,256. Então, temos 5,256’’.
Assim: 40º 18’ 5,256’’
Latitude:
20,27945– Separe a parte inteira. Então, temos 20º.
Depois: 20,27945 – 20 = 0,27945
0,27945 * 60 = 16,767 – Separe a parte inteira. Temos 16’.
Após: 16,767 – 16 = 0,767
0,767 * 60 = 46,02. Então, temos 46,02’’.
Assim: 20º 16’ 46,02’’
Longitude:
40,29338 - Separe a parte inteira. Então, temos 40º.
Depois: 40,29338 – 40 = 0,29338
0,29338 * 60 = 17,6028 – Separe a parte inteira. Temos 17’.
Após: 17,6028 – 17 = 0,6028
0,6028 * 60 = 36,168. Então, temos 36,168’’.
84
𝑫𝑬𝑨𝑩 = 𝟏𝟖𝟎𝟗, 𝟔𝟕 𝒎
Fonte: Autor (2017)
APÊNDICE C
APÊNDICE D
Dados da matriz construída pelo Algoritmo de Floyd
APÊNDICE E
inicio = i;
fim = j;
pivo = vq[(i+j)/2];/* encontra a posição do elemento 'pivo', que será referência para
comparação*/
do
{
while(vq[inicio] < pivo) /* se o elemento da posição 'inivet' for menor que o da
posição 'pivo', o elemento ficará na mesma posição*/
{
comp = comp + 1; /* Contagem das comparações */
inicio = inicio + 1;
}
while(vq[fim] > pivo)/* se o elemento da posição 'fimvet' for maior que o da posição
'pivo', o elemento ficará na mesma posição*/
{
comp = comp + 1; /* Contagem das comparações */
fim = fim - 1;
}
comp=comp +1;
if(inicio <= fim)/* compara as posições, ordenando os valores de tal forma que os
valores menores e maiores em relação ao valor da posição do "pivo" sejam
separados para direita ou esquerda do valor do 'pivo'*/
{
perm = perm + 1; /* Contagem das permutações */
aux = vq[inicio];
vq[inicio] = vq[fim];
vq[fim] = aux;
inicio = inicio + 1;
fim = fim - 1;
comp= comp+1;
}
88
APÊNDICE F
ANEXO A