Você está na página 1de 17

UNIVERSIDADE FEDERAL DA PARAÍBA

PRÓ-REITORIA DE PESQUISA
COORDENAÇÃO GERAL DE PROGRAMAS ACADÊMICOS E
DE INICIAÇÃO CIENTÍFICA

PROGRAMA DE INICIAÇÃO CIENTÍFICA

PIVIC

GENETICBEE – EFICIÊNCIA ENERGÉTICA EM TRANSPORTES PARA CIDADES


INTELIGENTE UTILIZANDO ALGORITMOS GENÉTICOS

AVALIAÇÃO DE ESTRATÉGIAS CONFORTO DE PASSAGEIRO E EFICIENCIA ENERGÉTICA EM CURVAS DE


VELOCIDADE

Orientadora: Profa. Dra. Natasha Correia Queiroz Lino


Centro de Informática

Discente: Ícaro Targino de Alexandria Rique


Engenharia da Computação/Centro de Informática

João Pessoa, 06 de agosto de 2018


1. Introdução
Nesta seção do trabalho serão introduzidos, especificamente na contextualização, os aspectos de
crescimento populacional, crescimento populacional urbano e suas consequências, bem como será
abordado os Algoritmos Genéticos e as Cidades Inteligentes.

Resumo
De acordo com a Organização das Nações Unidas, a quantidade da população que vive em
centros urbanos tem aumentado cada vez mais, portanto a mobilidade urbana nessas cidades fica
comprometida, paralelo a este fato temos também o problema com o meio-ambiente e sua
preservação, para resolver isso recorre-se a trens e metrôs movidos a energia elétrica, nesse aspecto
surge a necessidade de usar algoritmos de suavização em curvas de velocidade. Este relatório
descreve o uso de algoritmos de suavização, gera resultados a partir de dados de entrada e compara os
resultados.
O método da média de três e cinco são métodos que não utilizam medidas de variação de
velocidade para seus cálculos, apenas fazem a média de toda a curva ponto a ponto. O método da
média de conforto simples iterada e a média de conforto copiada iterada, também de três e cinco
pontos, são métodos que utilizam curvas de variação e aplicam a média somente onde a variação é
mais alta do que a escolhida como limitante pelo especialista, a aplicação do conforto visa o bem estar
dos passageiros. O resultado obtido foram melhoras no consumo energético no uso de algumas
técnicas o que permitiu concluir que há técnicas mais adequadas para alguns tipos de perfis.

1.1. Contextualização
Diante dos dados publicados no ano de 2017 pelo Departamento de Assuntos Sociais e
Econômicos das Nações Unidas (ONU) no relatório “Perspectivas da População Mundial: Revisão
2017”, estima-se que para o início da década de 90 a população mundial consistia de em média 5,3
bilhões de habitantes, para a virada do milênio os dados nos mostram uma população em torno de 6,1
bilhões de habitantes e finalmente relata que atualmente existem 7,6 bilhões de habitantes neste ano
de 2018. Projeta-se que, seguindo o ritmo determinado no estudo, a marca dos 9,7 bilhões de
habitantes será superada até a metade do século presente e ao fim deste mesmo chegará à marca dos
mais de 11,2 bilhões, ou seja, em posse desses dados, comparativamente, temos que a população
mundial terá, até aquela data, crescido cerca de 47,3% se comparado com os dados para o ano de
2018.
A quantidade de pessoas em centros urbanos tem aumentado em detrimento da quantidade de
pessoas que vivem em áreas rurais, este tem crescido timidamente com o passar dos anos. Em 1950
somente 30% da população achava-se em áreas urbanas, essa taxa subiu e atualmente os indicadores
chegaram a 55% da população mundial alocada em limites urbanizados até 2018 e, segundo as
estatísticas, no ano de 2050 espera-se que essa taxa chegue ao patamar dos 65% e a densidade
populacional, também de acordo com o Departamento de Assuntos Sociais e Econômicos da ONU,
tem se intensificado nas áreas consideradas mais desenvolvidas (DESA, 2017).
Tendo base nos alicerces conceituais construídos a partir dos dados obtidos pela ONU
detecta-se um crescimento na população de cidades em limites urbanos e com isso surgem
preocupações tanto com os aspectos ecológicos relacionados a recursos naturais e sua manutenção
quanto com os problemas ambientais decorrentes da urbanização. Existe ainda uma preocupação com
a mobilidade em grandes centros urbanos onde os níveis de densidade populacional, ou seja, a
quantidade de pessoas por quilômetro quadrado é alta e as demandas criadas no intuito de suprir estas
necessidades causam impactos, sejam eles energéticos, ambientais ou de rotinas dos cidadãos, estes
impactos podem ser poluição sonora, emissão de gases que acarretam o efeito estufa, consumo de
matérias primas e de recursos naturais essenciais para a sobrevivência do homem, ocupação do espaço
urbano, entre outros. Para essa conjuntura, surgem as cidades inteligentes (do inglês Smart Cities) que
são compreendidas como um espaço urbano que manipula tecnologias de informação e comunicação e
emprega-as a fim de promover acessibilidade, soluções sustentáveis e modernas de acordo com
Aquino et al. (2015) de modo a tornar o setor urbano mais eficiente para sustentar uma boa qualidade
de vida de modo a gerir seus recursos de forma que a cidade, em relação aos seus agentes biológicos
sejam atuantes.
Partindo de uma visão ampla e analisando o setor de transportes em geral, considerando suas
opções de deslocamento, sua frota disponível para atender a população, sua infraestrutura se subdivide
principalmente em Rodoviária, Metroviária e/ou Ferroviária, temos que a melhor opção para o
ambiente urbano, considerando todos os argumentos expostos anteriormente, é a utilização de malha
metroviária, mais especificamente trens os quais sua fonte de geração de energia mecânica (que
consiste na capacidade de um corpo de produzir trabalho) é feito através do uso de energia elétrica,
por ser um meio de transporte coletivo de capacidade alta, há a redução do uso de transportes
individuais, particulares ou públicos, o que promove a redução da queima de combustíveis fósseis.

1.2. Algoritmos Genéticos


Segundo Linden (2012) os Algoritmos Genéticos (do inglês Genetic Algorithms) são
definidos como técnicas de busca que utilizam a lógica do processo genético biológico de evolução
natural e também descritos como heurísticas de otimização global utilizados de maneira a replicar
mecanismos naturais de adaptação em sistemas computacionais. Os operadores genéticos os quais são
submetidos dada população de indivíduos são: Seleção, recombinação (do inglês crossover) e
mutação. Esses operadores promoverão um processo de evolução que gerará um indivíduo
descendente que terá um bom desempenho como solução para um determinado problema.
Para solucionar problemas utilizando Algoritmos Genéticos, Linden (2012) dá uma série de
passos básicos a serem seguidos e implementados através de um algoritmo, são estes passos:
1. Inicialização da população de cromossomos;
2. Avaliação individual dos cromossomos
3. Seleção dos pais da presente população;
4. Submissão dos pais da população a operações de crossover e mutação a fim de gerar novas
populações;
5. Exclusão dos pais da população presente;
6. Análise e avaliação dos filhos e inserção destes na nova população;
7. Verificação de que já atende ao número de gerações, ou o melhor indivíduo é suficiente para
desempenhar o que foi requisitado, caso for oposto, retorna para o passo 3
Figura 1.1: Exemplo de Algoritmo Genético

Fonte: Linden (2012)

1.3. Definição do Problema


Os perfis de velocidade obtidos para serem estudados podem conter variações de velocidade
bastante acentuadas, sendo essa variação o tempo entre duas medições vizinhas contidas no mesmo
perfil, essas configurações concebidas trariam certo desconforto para os passageiros do metrô/trem
elétrico podendo atingir um nível onde a taxa de variação pode causar danos à saúde e alto
desconforto, por isso técnicas para redução do incomodo gerado por essas variações são aplicadas de
modo a tornar os perfis mais suaves, sem grandes variações de velocidade.
Uma das preocupações para a suavização é obter uma técnica capaz de aumentar o conforto
sem causar, primeiramente, prejuízos ao desempenho energético. Ao mesmo tempo em que são
minimizados os gastos energéticos gerados ou até mesmo levar à melhora a um ponto onde não só
serão minimizados os gastos como apresentará redução no custo energético original do perfil de
velocidade.

2. Objetivos

2.1. Objetivos Gerais

O objetivo deste trabalho consiste em realizar uma análise comparativa sobre estratégias de
suavização em perfis de velocidade, com a finalidade de reduzir o consumo energético em trens
elétricos em uma malha metro-ferroviária.
2.2. Objetivos Específicos

Os objetivos específicos do trabalho são:

 Identificar os estudos presentes na literatura que abordam sobre a suavização,


 Obter um levantamento sobre as técnicas de suavização,
 Identificar perfis de velocidade com maior conforto, e
 Dispor de um módulo para edição dos parâmetros das suavizações.

3. Materiais e Métodos

As técnicas utilizadas para suavizar as curvas de velocidade estão dispostas na Figura 3.1, são
elas: Média com três Elementos, Média com cinco elementos, Média de conforto simples. Seus nomes
foram dados de modo a levar consigo diferenças em suas implementações em código para que uma
breve explicação seja o suficiente para entender como cada uma delas funciona. A seguir serão
explicadas estas técnicas.

Figura 3.1: Esquema das técnicas de suavização

Fonte: Elaborada pelo autor

3.1. Técnica da Média com 3 Elementos e 5 Elementos


A técnica da média com três elementos e cinco elementos são iguais em implementação,
contudo a média na primeira técnica é feita somando-se os três elementos de uma lista e a segunda é
feita somando os cinco elementos de uma lista.
A técnica da média com três elementos funciona como mostrado na Figura 3.2 onde chama-se
um método de uma classe e passa-se como parâmetro uma lista com as velocidades instantâneas e
outra contendo a quantidade de capturas e, uma vez dentro do método, é feita a operação de média
como exemplificado no Código Fonte 3.1.
A operação descrita na Figura 3.2 é feita percorrendo toda a lista de velocidades sempre
somando o elemento atual com o elemento imediatamente anterior e posterior e ao final da soma
dividindo o valor da soma pela quantidade de elementos somados, que nesse método são três, é
importante lembrar que a primeira lista de velocidades contém valores iguais à zero na primeira e na
última posição, portanto ao percorrer para fazer o cálculo da média, começa-se do elemento de índice
um e termina no penúltimo elemento, para que possa ser feita o cálculo, em seus aspectos
programacionais, de maneira correta.

Código Fonte 3.1: Pseudocódigo da média com três elementos

1. Algoritmo aplicaMedia_3 ( tempo, vel )


2. para i  1 até tamanho ( tempo ) - 1 faça
3. vel[ i ]  ( vel[ i - 1 ] + vel[ i ] + vel[ i + 1 ] ) / 3

Figura 3.2: Funcionamento do Algoritmo média com 3 elementos

Fonte: Elaborada pelo autor

Seguindo a mesma lógica tem-se a média com cinco elementos como exposto na Figura 3.3 e
conforme é exposto no Código Fonte 3.2, porém a diferença entre o método anterior e o atual
acontece no tratamento à lista de entrada, pois para efetuar a média no elemento de índice um é
necessário que haja dois elementos anteriormente, o mesmo se repete no final da lista quando o
penúltimo elemento passará a ser o antepenúltimo para que seja efetuada a média de maneira correta
programacionalmente.
Código Fonte 3.2: Pseudocódigo da média com três elementos

1. Algoritmo aplicaMedia_5 ( tempo, vel )


2. para i  2 até tamanho( tempo ) - 2 faça
3. vel[ i ]  ( vel[ i - 2] + vel[ i - 1 ] + vel[ i ] + vel[ i + 1 ] + vel[ i + 2] ) / 5

Figura 3.3: Funcionamento do Algoritmo média com 5 elementos

Fonte: Elaborada pelo autor

Os dois algoritmos podem ser executados quantas vezes o usuário necessitar para suavizar sua
curva, portanto a chamada do método está dentro de uma estrutura de repetição que vai iterar de
acordo com o que receber da escolha do usuário.

3.2. Técnica de média de conforto simples iterada de 3 Elementos e 5 Elementos


A técnica de média de conforto simples iterada de três elementos, representada na Figura 3.4 é
chamada desse modo para que o próprio nome possa elucidar a maneira como ela funciona, também
chamada técnica da média por funcionar exatamente como as anteriores, aplicando a média entre o
elemento atual e seus vizinhos mais próximos.
Contudo a sua diferença com relação às outras é a utilização de uma variação de velocidade
para determinar se deve ser aplicado ou não o conforto quando satisfizer a condição exposta no
Código Fonte 3.3 e Código Fonte 3.4, essa variação funciona o valor posterior ao atual menos o valor
o atual em um momento da execução de uma iteração. A criação de uma lista para armazenar essas
variações é também outra diferença, e é exatamente por isso o método de suavização leva em seu
nome a palavra conforto, para que esteja explicitado em sua designação de modo a induzir o usuário
ao entendimento de qual é o procedimento durante o emprego deste da técnica, apesar de todas as
técnicas serem utilizadas para produzir conforto, coloca-se o substantivo conforto para trazer o
entendimento de que uma lista com valores de variação é utilizada para aplicar a média somente nos
setores que não satisfazem a condição presente no Código Fonte 3.3 e 3.4. Chama-se ainda de iterada
por se repetir até que todos os valores da variação estejam abaixo do definido previamente. Este valor
definido previamente está indicado no Código Fonte 3.3 e 3.4 como CONSTANTE_ESCOLHIDA e
simboliza a velocidade limite escolhida para a variação máxima permitida contida na lista, ou seja,
será percorrida a lista e serão comparados seus valores de cada iteração do laço de repetição com o
valor contido e na variável CONSTANTE_ESCOLHIDA, ou seja, essa variável contém o valor
máximo de conforto que pode estar contido na lista de variação de velocidades.
Ao formar a lista de variações, um último elemento é acrescido ao final, para que não haja
nenhum erro na busca de um índice que não está contido na lista como mostra o Código Fonte 3.4.
Código Fonte 3.3: Pseudocódigo da média simples iterada com três elementos
1. Algoritmo aplicaMediaConfortoIterada_3 ( varia, vel )
2. chave  0
3. para i  2 até tamanho( vel ) - 2 faça
4. se abs( varia[ i ] ) >= CONSTANTE_ESCOLHIDA faça
5. vel [ i ]  ( vel [ i - 1 ] + vel [ i ] + vel [ i + 1 ] ) / 3
6. chave  1

A variável chave dispara um mecanismo de saída de um laço de iteração contida no bloco


principal (do inglês main) do algoritmo, essa variável indica que esse algoritmo acabou de fazer uma
verificação e constatou que havia um valor na lista de variação de velocidades maior do que a definida
como limitante, portanto deve ser repetido o processo de análise da lista para que não haja nenhum
elemento maior que o definido. Na parte principal do código, como descrito, há um laço de iteração
que analisa a variável chave e repete caso tenha o valor um, ou finaliza caso haja o valor zero,
sinalizando que não há mais valores não permitidos na lista.
Código Fonte 3.4: Pseudocódigo da média simples iterada com cinco elementos
1. Algoritmo aplicaMediaConfortoIterada_5 ( varia, vel )
2. chave  0
3. para i  2 até tamanho( vel ) - 2 faça
4. se abs( varia[ i ] ) >= CONSTANTE_ESCOLHIDA faça
5. vel [ i ]  ( vel [ i – 2 ] + vel [ i - 1 ] + vel [ i ] + vel [ i + 1 ] + vel [i + 2] ) / 5
6. chave  1
Figura 3.4: Funcionamento do Algoritmo da média de conforto simples iterada de 3 elementos

Fonte: Elaborada pelo autor

Caso não haja valores na lista de variação de velocidade que satisfaçam a condição, a variável
chave não receberá o valor um e por isso finalizará por não satisfazer a repetição contida no bloco
principal. Caso haja valores que satisfazem a condição, será feita a média e repetir-se-á todo o
processo novamente.
É importante saber que nesse método há a contaminação do cálculo da média, uma vez que a
cada fim de repetição do cálculo o valor de saída é armazenado diretamente na lista de velocidades. O
termo contaminação é utilizado para descrever que a média feita anteriormente pelo código vai ser
utilizada ou propagada no próximo cálculo, como mostra a Figura 3.5.

Figura 3.5: Explicação do termo contaminação


Fonte: Elaborada pelo autor

Na próxima chamada para execução do Código Fonte 3.3, existirá uma nova lista de valores
de velocidades modificadas pela chamada de execução anterior, portanto, será formada uma nova lista
de variação das velocidades, ou seja, a cada iteração usa o perfil gerado anteriormente.
A diferença entre a média de conforto simples iterada de três elementos do Código Fonte 3.3
para a de cinco elementos do Código Fonte 3.4 é que, além de ser feito o cálculo da média com cinco
elementos, como sugere o nome, em sua execução a lista recebe a acreção no seu início e no seu final
de dois elementos com o valor zero, para que não haja erro de índice de lista.

3.3. Técnica da Média de conforto copiada iterada com 3 Elementos e 5 Elementos


A técnica da média de conforto copiada iterada ocorre semelhantemente a técnica da média de
conforto simples, a diferença reside em que será criada uma cópia da lista de velocidades de modo a
utilizar nos cálculos sempre os valores que são recebidos na função até modificação final, sem
contaminação no cálculo da média, levando em consideração a cópia da lista de velocidades feita no
Código Fonte 3.5, como será mostrado na Figura 3.6.

Figura 3.6: Funcionamento do Algoritmo médio de conforto copiado iterado

Fonte: Elaborada pelo autor


Código Fonte 3.5: Pseudocódigo da Média de conforto copiada iterada com 3 elementos
1. Algoritmo aplicaMediaConfortoIterada_3 ( varia, vel )
2. chave  0
3. copia  vel
4. para i  2 até tamanho( vel ) - 2 faça
5. se abs( varia[ i ] ) >= CONSTANTE_ESCOLHIDA faça
6. vel [ i ]  ( vel [ i - 1 ] + vel [ i ] + vel [ i + 1 ] ) / 3
7. chave  1

A criação da cópia da lista onde estão contidas todas as velocidades instantâneas capturadas é
necessária para que não ocorra a contaminação do cálculo da média como acontece no método de
conforto simples iterado, por conseguinte, cada vez que a função for chamada será passada a nova
lista de velocidades procedente da chamada anterior, e só então será criada a lista cópia do estado
atual da velocidade e todo o processo de cálculo da média será feito tendo como base essa lista.
A técnica da média de conforto copiada iterada de cinco variáveis acontece da mesma
maneira que a média de conforto copiada iterada de três variáveis, porém há a necessidade de inserir
um elemento zero no início e no final da lista de velocidades para que não haja erros de índice quando
forem efetuadas as iterações.

3.4. Cálculo Energético


Para calcular a energia em cada ponto do tempo da curva de velocidade, utilizamos a formula
a seguir:
𝑚𝑣 2
𝐸=
2
Consideramos, para fazer a análise das curvas de velocidade, que a massa m do trem ou do
metrô é de uma Tonelada (1000kg) para obtermos as energias instantâneas em cada valor local e para
obter a energia total aplicamos o somatório da energia em cada ponto.

4. Resultados e Discussão
Mediante a utilização das técnicas descritas obtivemos valores referentes a aplicação da
suavização utilizando a média de três e de cinco elementos, a média de conforto simples iterada
também para três e cinco elementos, e por fim a média de conforto copiada iterada de três e cinco
elementos. Partindo deste ponto, será comum observar nomenclaturas para as técnicas expostas no
trabalho, sendo assim veremos nos gráficos as seguintes abreviaturas:
 Média de três elementos – M-3;
 Média de cinco elementos – M-5;
 Média de conforto simples iterada de três elementos – MCSI-3;
 Média de conforto simples iterada de cinco elementos – MCSI-5;
 Média de conforto simples copiada de três elementos – MCCI-3 e
 Média de conforto simples copiada de três elementos – MCCI-5.

O gráfico de barras da figura 4.1 é um comparativo das técnicas MCSI-3, MCSI-5, MCCI-3 e
MCCI-5 mostrando qual a melhor entre as quatro, considerando as diferentes constantes de
suavização de um até dez km/(medida de tempo) (1 – 10). Quando a variável de conforto é igual a
1km/(medida de tempo) temos o melhor desempenho entre todas as escolhas de variáveis analisadas,
constituindo os perfis energeticamente mais econômicos.
Figura 4.1: Comparativo de técnicas para diferentes valores de conforto

Fonte: Elaborada pelo autor

Vemos que no gráfico as variações são algumas vezes imperceptíveis, portanto a Figura 4.2
mostrará a comparação da melhora ou piora da aplicação dos mesmos métodos da Figura 4.1 em
relação à energia total do perfil de velocidade sem os procedimentos aplicados. O que foi constatado
na Figura 4.2 é o fato de que o ganho com relação ao perfil sem aplicação das técnicas de suavização
e o perfil com as técnicas é que há um expressivo ganho energético com baixas variações e algumas
perdas e ganhos à medida que aumenta-se o limite da variável de conforto. Foi averiguado também
que cada perfil de velocidade pode se comportar de maneira diferente quando submetido às aplicações
de cada um dos algoritmos de suavização.

Figura 4.2: Comparativo das melhoras ou pioras com relação ao perfil de velocidade original

Fonte: Elaborada pelo autor


Além das técnicas MCCI-3, MCCI-5, MCSI-3 e MCSI-5, temos M-3 e M-5, essas duas foram
testadas com até três aplicações, a Figura 4.3 mostra a comparação do perfil energético sendo
aplicadas essas duas abordagens.

Figura 4.3: Comparativo de técnicas para diferentes quantidades de aplicações

Fonte: Elaborada pelo autor

Constatamos que o gasto energético é maior quando executamos o algoritmo de suavização


apenas uma vez, e a medida que executamos as repetições da execução, o gasto energético diminui,
conforme mostra a Figura 4.4.

Figura 4.4: Comparativo das melhoras ou pioras com relação ao perfil de velocidade original

Fonte: Elaborada pelo autor


O perfil original de velocidade, Figura 4.5, é o dado que recebemos para tratar antes de ser
executado qualquer dos métodos é repleto de pontas e mudanças bruscas.

Figura 4.5: Perfil de velocidade original

Fonte: Elaborada pelo autor

O melhor perfil energético é aquele que consumiu menos energia para desempenhar uma
função, portanto, comparando os algoritmos M-5 e M-3, temos que o M-5 foi energeticamente mais
eficiente, mediante avaliação de dados foi apurado que três repetições conferem ao perfil de
velocidade um gasto energético menor tal como mostra a Figura 4.6.

Figura 4.6: Perfil de velocidade M-5 com 3 repetições

Fonte: Elaborada pelo autor


Das técnicas MCCI-3, MCCI-5, MCSI-3 e MCSI-5, temos que o melhor desempenho
acontecem quando o limite da constante de conforto que limita a variação de velocidade é 1
Km/(medida de tempo), portanto essa técnica descaracteriza a curva, por isso, na Figura 4.7 teremos a
melhor técnica para o limita de variação da velocidade em 2 Km/(medida de tempo).

Figura 4.7: Perfil de velocidade MCCI-5 para conforto sendo no máximo 2 Km/(tempo).

Fonte: Elaborada pelo autor

5. Conclusões

Com a conclusão deste trabalho foi possível identificar artifícios para assessorar especialistas na
prevenção de dispêndio de energia em trens elétricos ou metrôs. A análise dos algoritmos de suavização
permitiu determinar quais as melhores e as piores soluções, e mostrar todas elas para o especialista, que
então escolherá qual que tem o melhor custo benefício para aplicar em seu projeto ou contexto.
O profissional terá a todos os gráficos que expressam a velocidade, em função de um tempo
determinado, de todas as técnicas de suavização implementadas, a sua comparação uma com a outra.
Além dos benefícios diretos da aplicação, que consiste na economia de energia, com esta economia é
possível incrementar a frota, pois em algumas localidades no Brasil as companhias que fornecem a
energia elétrica limitam o fornecimento e multam caso sejam ultrapassados os limites.

6. Trabalhos Futuros

O desenvolvimento deste trabalho permitiu a identificação das seguintes oportunidades para


trabalhos futuros:
 Uso de técnica de suavização baseada na suavização de curvas de Bézier
 Uso de técnica de suavização baseada na suavização de curavas Hermite
 Uso de técnica que compreende o uso da média do elemento atual e seus dois anteriores ou
seus dois próximos
 Abordar a suavização partindo de um vetor de aceleração
 Usar as técnicas dispostas neste trabalho combinando-as para produzir melhores saídas

7. Referências Bibliográficas
AQUINO, A. L. et al. Cidades inteligentes, um novo paradigma da sociedade do conhecimento.
Blucher Education Proceedings, v. 1, n. 1, p. 165–178, 2015.
DESA. Department of Economic and Social Affairs. 2017. Disponível em:
<https://esa.un.org/unpd/wup/Country-Profiles/>.
LINDEN, R. Algoritmos genéticos (3a ediçao). [S.l.]: Brasport, 2012.
ONU. Organização das Nações Unidas. 2017. Disponível em: <https://esa.un.org/unpd/wpp/>

Você também pode gostar