Development of the intelligent control system of an unmanned car
This study delves into creating an intelligent control system for self-driving vehicles, utilizing cutting-edge machine learning methods. Central to our approach is the NeuroEvolution of Augmenting Topologies (NEAT) algorithm, implemented in the Python programming language. NEAT plays a pivotal role...
Gespeichert in:
| Datum: | 2024 |
|---|---|
| Hauptverfasser: | , , , , |
| Format: | Artikel |
| Sprache: | English |
| Veröffentlicht: |
PROBLEMS IN PROGRAMMING
2024
|
| Schlagworte: | |
| Online Zugang: | https://pp.isofts.kiev.ua/index.php/ojs1/article/view/659 |
| Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
| Назва журналу: | Problems in programming |
| Завантажити файл: | |
Institution
Problems in programming| id |
pp_isofts_kiev_ua-article-659 |
|---|---|
| record_format |
ojs |
| resource_txt_mv |
ppisoftskievua/70/ad951ba6ea512d2fa5b3074c42f3e470.pdf |
| spelling |
pp_isofts_kiev_ua-article-6592025-02-15T15:14:51Z Development of the intelligent control system of an unmanned car Development of the intelligent control system of an unmanned car Dakhno, N.B. Miroshnyk, A.P. Kravchenko, Yu.V. Leshchenko, O.O. Dudnik, A.S. neural networks; evolutionary learning; genetic algorithms; NEAT algorithm; NEAT learning efficiency; neural network architecture UDC 519.711 нейронні мережі; еволюційне навчання; генетичні алгоритми; алгоритм NEAT; ефективність навчання NEAT; архітектура нейронної мережі УДК 519.711 This study delves into creating an intelligent control system for self-driving vehicles, utilizing cutting-edge machine learning methods. Central to our approach is the NeuroEvolution of Augmenting Topologies (NEAT) algorithm, implemented in the Python programming language. NEAT plays a pivotal role in refining artificial neural networks, enabling autonomous cars to navigate diverse road conditions independently. Through rigorous experimentation, we demonstrate NEAT's capability to automate self-driving operations, ensuring adaptability to various driving scenarios. The result of the research is the development of a complex system proficient in autonomously navigating a variety of race tracks. NEAT's dynamic neural network structures help the vehicle learn quickly.The Python language is quite convenient for implementing such tasks thanks to a large number of libraries. Integration with Pygame equips the system with essential tools for graphics rendering and interaction. Iterative cycles of training and refinement significantly enhance the system's performance and adaptability. Neural networks adeptly learn to navigate tracks, maintain optimal speeds, avoid collisions, and tackle diverse racing challenges. This project demonstrates NEAT's capability, alongside Python and Pygame integration, in crafting intelligent control systems for self-driving cars. This holds promise for further development in autonomous driving technology, aiming to handle more intricate scenarios and seamlessly integrate with real-world hardware. In essence, the successful deployment of an intelligent control system for unmanned vehicles based on NEAT demonstrates the efficacy of evolutionary algorithms in tackling complex control problems. This sets the stage for further research and refinement in unmanned driving, fostering the development of safer and more efficient transportation systems.Prombles in programming 2024; 2-3: 375-383 Ця робота присвячена створенню інтелектуальної системи керування безпілотними транспортними засобами з використанням передових методів та підходів машинного навчання. Центральним елементом цього підходу є алгоритм NeuroEvolution of Augmenting Topologies (NEAT), реалізований мовою програмування Python. NEAT відіграє ключову роль у вдосконаленні штучних нейронних мереж, що дозволяє автономним автомобілям самостійно орієнтуватися в різноманітних дорожніх умовах. Здійснення ретельних експериментів довело здатність NEAT автоматизувати роботу самокерованого водіння, забезпечуючи адаптивність до різних сценаріїв. Результатом дослідження стала розробка складної системи, здатної автономно орієнтуватися на різних гоночних трасах. Динамічні структури нейронних мереж NEAT допомагають автомобілю швидко вчитись. Мова Python достатньо зручна для реалізації таких задач завдяки великій кількості різноманітних бібліотек. А інтеграція із Pygame забезпечує систему необхідними інструментами для рендерингу та взаємодії з графікою. Ітеративні цикли навчання та вдосконалення значно підвищують продуктивність та адаптивність системи. Нейронні мережі успішно навчаються орієнтуватися на трасі, підтримувати оптимальну швидкість, уникати зіткнень та вирішувати різноманітні гоночні завдання. Цей проєкт підкреслює можливості NEAT, поряд з інтеграцією Python та Pygame, у створенні інтелектуальних систем керування для безпілотних автомобілів. Він є перспективним для подальшого розвитку технології автономного водіння, спрямованої на обробку більш складних сценаріїв і безперешкодну інтеграцію з реальним обладнанням. Успішне розгортання інтелектуальної системи управління безпілотними автомобілями на основі NEAT демонструє ефективність еволюційних алгоритмів у вирішенні складних проблем управління. Це створює підґрунтя для подальших досліджень і вдосконалення безпілотного водіння, сприяючи розвитку безпечніших і ефективніших транспортних систем.Prombles in programming 2024; 2-3: 375-383 PROBLEMS IN PROGRAMMING ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ ПРОБЛЕМИ ПРОГРАМУВАННЯ 2024-12-17 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/659 10.15407/pp2024.02-03.375 PROBLEMS IN PROGRAMMING; No 2-3 (2024); 375-383 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 2-3 (2024); 375-383 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 2-3 (2024); 375-383 1727-4907 10.15407/pp2024.02-03 en https://pp.isofts.kiev.ua/index.php/ojs1/article/view/659/711 Copyright (c) 2024 PROBLEMS IN PROGRAMMING |
| institution |
Problems in programming |
| baseUrl_str |
https://pp.isofts.kiev.ua/index.php/ojs1/oai |
| datestamp_date |
2025-02-15T15:14:51Z |
| collection |
OJS |
| language |
English |
| topic |
neural networks evolutionary learning genetic algorithms NEAT algorithm NEAT learning efficiency neural network architecture UDC 519.711 |
| spellingShingle |
neural networks evolutionary learning genetic algorithms NEAT algorithm NEAT learning efficiency neural network architecture UDC 519.711 Dakhno, N.B. Miroshnyk, A.P. Kravchenko, Yu.V. Leshchenko, O.O. Dudnik, A.S. Development of the intelligent control system of an unmanned car |
| topic_facet |
neural networks evolutionary learning genetic algorithms NEAT algorithm NEAT learning efficiency neural network architecture UDC 519.711 нейронні мережі еволюційне навчання генетичні алгоритми алгоритм NEAT ефективність навчання NEAT архітектура нейронної мережі УДК 519.711 |
| format |
Article |
| author |
Dakhno, N.B. Miroshnyk, A.P. Kravchenko, Yu.V. Leshchenko, O.O. Dudnik, A.S. |
| author_facet |
Dakhno, N.B. Miroshnyk, A.P. Kravchenko, Yu.V. Leshchenko, O.O. Dudnik, A.S. |
| author_sort |
Dakhno, N.B. |
| title |
Development of the intelligent control system of an unmanned car |
| title_short |
Development of the intelligent control system of an unmanned car |
| title_full |
Development of the intelligent control system of an unmanned car |
| title_fullStr |
Development of the intelligent control system of an unmanned car |
| title_full_unstemmed |
Development of the intelligent control system of an unmanned car |
| title_sort |
development of the intelligent control system of an unmanned car |
| title_alt |
Development of the intelligent control system of an unmanned car |
| description |
This study delves into creating an intelligent control system for self-driving vehicles, utilizing cutting-edge machine learning methods. Central to our approach is the NeuroEvolution of Augmenting Topologies (NEAT) algorithm, implemented in the Python programming language. NEAT plays a pivotal role in refining artificial neural networks, enabling autonomous cars to navigate diverse road conditions independently. Through rigorous experimentation, we demonstrate NEAT's capability to automate self-driving operations, ensuring adaptability to various driving scenarios. The result of the research is the development of a complex system proficient in autonomously navigating a variety of race tracks. NEAT's dynamic neural network structures help the vehicle learn quickly.The Python language is quite convenient for implementing such tasks thanks to a large number of libraries. Integration with Pygame equips the system with essential tools for graphics rendering and interaction. Iterative cycles of training and refinement significantly enhance the system's performance and adaptability. Neural networks adeptly learn to navigate tracks, maintain optimal speeds, avoid collisions, and tackle diverse racing challenges. This project demonstrates NEAT's capability, alongside Python and Pygame integration, in crafting intelligent control systems for self-driving cars. This holds promise for further development in autonomous driving technology, aiming to handle more intricate scenarios and seamlessly integrate with real-world hardware. In essence, the successful deployment of an intelligent control system for unmanned vehicles based on NEAT demonstrates the efficacy of evolutionary algorithms in tackling complex control problems. This sets the stage for further research and refinement in unmanned driving, fostering the development of safer and more efficient transportation systems.Prombles in programming 2024; 2-3: 375-383 |
| publisher |
PROBLEMS IN PROGRAMMING |
| publishDate |
2024 |
| url |
https://pp.isofts.kiev.ua/index.php/ojs1/article/view/659 |
| work_keys_str_mv |
AT dakhnonb developmentoftheintelligentcontrolsystemofanunmannedcar AT miroshnykap developmentoftheintelligentcontrolsystemofanunmannedcar AT kravchenkoyuv developmentoftheintelligentcontrolsystemofanunmannedcar AT leshchenkooo developmentoftheintelligentcontrolsystemofanunmannedcar AT dudnikas developmentoftheintelligentcontrolsystemofanunmannedcar |
| first_indexed |
2025-07-17T10:02:50Z |
| last_indexed |
2025-07-17T10:02:50Z |
| _version_ |
1850410763882070016 |
| fulltext |
375
Експертні та інтелектуальні інформаційні системи, штучний інтелект
УДК 519.711 http://doi.org/10.15407/pp2024.02-03.375
Ю.В. Кравченко, Н.Б. Дахно, О.О. Лещенко, А.С. Дудник, А.П. Мірошник
РОЗРОБКА СИСТЕМИ ІНТЕЛЕКТУАЛЬНОГО
КЕРУВАННЯ БЕЗПІЛОТНИМ АВТОМОБІЛЕМ
Ця робота присвячена створенню інтелектуальної системи керування безпілотними транспортними за-
собами з використанням передових методів та підходів машинного навчання. Центральним елементом
цього підходу є алгоритм NeuroEvolution of Augmenting Topologies (NEAT), реалізований мовою про-
грамування Python. NEAT відіграє ключову роль у вдосконаленні штучних нейронних мереж, що до-
зволяє автономним автомобілям самостійно орієнтуватися в різноманітних дорожніх умовах. Здійс-
нення ретельних експериментів довело здатність NEAT автоматизувати роботу самокерованого во-
діння, забезпечуючи адаптивність до різних сценаріїв. Результатом дослідження стала розробка скла-
дної системи, здатної автономно орієнтуватися на різних гоночних трасах. Динамічні структури ней-
ронних мереж NEAT допомагають автомобілю швидко вчитись. Мова Python достатньо зручна для
реалізації таких задач завдяки великій кількості різноманітних бібліотек. А інтеграція із Pygame забез-
печує систему необхідними інструментами для рендерингу та взаємодії з графікою. Ітеративні цикли
навчання та вдосконалення значно підвищують продуктивність та адаптивність системи. Нейронні ме-
режі успішно навчаються орієнтуватися на трасі, підтримувати оптимальну швидкість, уникати зітк-
нень та вирішувати різноманітні гоночні завдання. Цей проєкт підкреслює можливості NEAT, поряд з
інтеграцією Python та Pygame, у створенні інтелектуальних систем керування для безпілотних автомо-
білів. Він є перспективним для подальшого розвитку технології автономного водіння, спрямованої на
обробку більш складних сценаріїв і безперешкодну інтеграцію з реальним обладнанням. Успішне ро-
згортання інтелектуальної системи управління безпілотними автомобілями на основі NEAT демонст-
рує ефективність еволюційних алгоритмів у вирішенні складних проблем управління. Це створює пі-
дґрунтя для подальших досліджень і вдосконалення безпілотного водіння, сприяючи розвитку безпе-
чніших і ефективніших транспортних систем.
Ключові слова: нейронні мережі, еволюційне навчання, генетичні алгоритми, алгоритм NEAT, ефек-
тивність навчання NEAT, архітектура нейронної мережі.
Yu. Kravchenko, N. Dakhno, O. Leshchenko, A. Dudnik, A. Miroshnyk
DEVELOPMENT OF THE INTELLIGENT CONTROL
SYSTEM OF AN UNMANNED CAR
This study delves into creating an intelligent control system for self-driving vehicles, utilizing cutting-edge
machine learning methods. Central to our approach is the NeuroEvolution of Augmenting Topologies (NEAT)
algorithm, implemented in the Python programming language. NEAT plays a pivotal role in refining artificial
neural networks, enabling autonomous cars to navigate diverse road conditions independently. Through rig-
orous experimentation, we demonstrate NEAT's capability to automate self-driving operations, ensuring
adaptability to various driving scenarios. The result of the research is the development of a complex system
proficient in autonomously navigating a variety of race tracks. NEAT's dynamic neural network structures
help the vehicle learn quickly.The Python language is quite convenient for implementing such tasks thanks to
a large number of libraries. Integration with Pygame equips the system with essential tools for graphics ren-
dering and interaction. Iterative cycles of training and refinement significantly enhance the system's perfor-
mance and adaptability. Neural networks adeptly learn to navigate tracks, maintain optimal speeds, avoid
collisions, and tackle diverse racing challenges. This project demonstrates NEAT's capability, alongside Py-
thon and Pygame integration, in crafting intelligent control systems for self-driving cars. This holds promise
for further development in autonomous driving technology, aiming to handle more intricate scenarios and
seamlessly integrate with real-world hardware. In essence, the successful deployment of an intelligent control
system for unmanned vehicles based on NEAT demonstrates the efficacy of evolutionary algorithms in tack-
ling complex control problems. This sets the stage for further research and refinement in unmanned driving,
fostering the development of safer and more efficient transportation systems.
Keywords: neural networks, evolutionary learning, genetic algorithms, NEAT algorithm, NEAT learning ef-
ficiency, neural network architecture.
© Ю.В. Кравченко, Н.Б. Дахно, О.О. Лещенко, А.С. Дудник, А.П. Мірошник, 2024
ISSN 1727-4907. Проблеми програмування. 2024. №2-3
376
Експертні та інтелектуальні інформаційні системи, штучний інтелект
Introduction
The rapid development of information
technology is quickly changing our lives and
affecting all areas of human activity [1]. Infor-
mation technologies allow automating various
processes, increasing productivity, and reduc-
ing costs.
Such areas as networking, cloud technol-
ogies, Internet of Things technologies, and artifi-
cial intelligence are actively developing [2-3].
The rapid development of technology
has led to significant advances in the field of
unmanned vehicles, both ground and airborne
[4]. One of the most promising areas in this
field is the development of intelligent control
systems for ground-based unmanned vehicles,
also known as self-driving cars.
The development of an intelligent con-
trol system for self-driving cars is an endeavor
that encompasses a variety of advanced soft-
ware development technologies. It involves the
combination of artificial intelligence, machine
learning, computer vision, and advanced algo-
rithms to create a system that allows the vehi-
cle to perceive information from the outside
and make decisions in real time [5]. By using a
multitude of sensors, these systems collect and
process huge amounts of data.
In this paper, we propose to create a
simple system for intelligent control of an un-
manned vehicle in the Python programming
language using the NEAT (NeuroEvolution of
Augmenting Topologies) algorithm. In the
context of self-driving vehicles, a simple
model system developed using NEAT in Py-
thon has great prospects. Such a system makes
it possible to understand the fundamental con-
cepts of intelligent driving.
Main part
Intelligent driverless vehicle control
systems use advanced Machine Learning algo-
rithms [6]. Through a process known as Deep
Learning, these algorithms analyze large data
sets to discover patterns, allowing the vehicle to
improve its decision-making capabilities over
time. This iterative learning process enables the
system to adapt to new scenarios, optimize its
performance, and ultimately improve the safety
and reliability of automated vehicles.
The NEAT (NeuroEvolution of Aug-
menting Topologies) technology was used in
this work. NEAT is an evolutionary algorithm
that creates artificial neural networks. It com-
bines neural networks and genetic algorithms
to create intelligent control systems.
Algorithm description
It is necessary to describe the genetic
coding algorithm used in NEAT. NEAT's ge-
netic coding strategy is designed to facilitate
gene alignment during mating when two ge-
nomes overlap. Genomes serve as linear repre-
sentations of network connections, and each
genome contains a list of connecting genes that
refer to pairs of genes of connected nodes [7].
In NEAT, mutations can affect both the
weights of connections and the structure of the
network. The weights of connections change,
as in other neuroevolutionary systems. At the
same time, each connection is potentially bro-
ken or remains constant in each generation [8].
Each mutation leads to the expansion of
the genome by introducing new genes. In the
"linkage addition" mutation, a new linkage
gene with a random weight is added. In the
"node addition" mutation, the existing linkage
is split and a new node is placed. The linkage
leading to the new node is assigned a weight of
1. This approach to adding nodes was chosen
to minimize the direct impact of mutation [9].
Although the new nonlinearity in the connec-
tion slightly changes the function, new nodes
can be quickly integrated.
As a result of mutations, genomes in
NEAT gradually increase in size, resulting in
genomes of different lengths. Allowing ge-
nomes to grow unlimitedly inevitably leads to
a more complex form of the "controlling con-
vention problem" with different topologies and
combinations of weights [10].
In the course of evolution, there is infor-
mation that accurately reveals the correspond-
ence of genes between individuals. This infor-
mation is the historical origin of each gene.
Genes with the same historical origin neces-
sarily represent the same structural component,
although potentially with different weights.
Therefore, all that the system needs to establish
377
Експертні та інтелектуальні інформаційні системи, штучний інтелект
genetic alignments is to store records of the his-
torical origin of each gene in the system.
Keeping track of these historical jour-
nals requires minimal computing resources.
Each time a new gene appears, the innovation
global number is incremented and assigned to
that gene. These innovation numbers essen-
tially reflect the appearance of each gene in the
system [11].
These historical markers provide
NEAT with powerful capabilities [12]. Now
the system has an accurate knowledge of
which genes correspond to each other. During
the crossing process, genes from both genomes
with matching innovation numbers are paired
and called matching genes. Genes that do not
match are classified as redundant. These re-
dundant genes represent structural components
that are not present in the rest of the genome
[13]. In the generation of offspring, genes are
randomly selected from either parent, while all
redundant genes are included sequentially
from the parent with the best fit. Therefore,
historical markers allow NEAT to perform
crosses using linear genomes.
By introducing new genes into the pop-
ulation and combining genomes with different
structures, the system can create a population
with a diverse topology. However, it is obvious
that this population alone is not enough to pre-
serve topological innovation. Smaller struc-
tures tend to be optimized faster than larger
ones, and adding nodes and connections usu-
ally initially reduces the fitness of the network.
The newly added structures have a limited
probability of surviving longer than one gener-
ation, even though the innovations they repre-
sent may be vital to solving problems [14].
The degree of compatibility between a
pair of genomes is naturally determined by the
number of redundant genes. The greater the di-
vergence between two genomes, the less evo-
lutionary history they share. Therefore, in
NEAT, we can quantify the compatibility dis-
tance, denoted as δ, for different structures
through a direct linear combination of several
factors, including the number of redundant
genes (E), the number of non-overlapping
genes (D), and the average weight differences
between the corresponding genes (W), which
includes even non-functional genes. The
formula for calculating the compatibility dis-
tance is as follows:
1 2
3 .c E c D c W
N N
= + +
The coefficients 1 2 3, ,с с с provide a
means of adjusting the relative importance of
the three factors in calculating the compatibil-
ity distance. The Factor N, which represents
the number of genes in the largest genome, is
used to normalize the genome size. The thresh-
old of compatibility, called t , is used in con-
junction with the distance measure , to deter-
mine how genomes should be classified into
species. An ordered list of species is main-
tained to organize the population into species.
Each existing species is characterized
by a randomly selected genome of the next
generation, which serves as a representative
genome. To assign a given gene, called g ,
from the current generation to a species, it is
placed in the first species, for which g is con-
sidered compatible with the representative ge-
nome of that species. This method ensures that
the species do not overlap and do not share any
common members [15]. If the genome g is in-
compatible with any of the existing species, a
new species is created, where g is a repre-
sentative genome.
The NEAT reproduction mechanism
uses explicit fitness sharing, which means that
organisms belonging to the same species must
collectively share the fitness of their niche.
This arrangement ensures that a species cannot
grow excessively, even if a significant number
of its members are doing very well. Therefore,
it is unlikely that one species will dominate the
entire population. To calculate the adjusted
suitability, denoted as if , for a given organism
i its distance from all other organisms j
in the population is taken into account:
( )( )
1
,
i
i n
j
ff
sh i j
=
=
.
Sharing function sh is set to 0 when
the distance ( ),i j above the threshold value
t , under the other condition ( )( ),sh i j will
be equal to 1. Thus, ( )( )
1
,
n
j
sh i j
=
reduced to
378
Експертні та інтелектуальні інформаційні системи, штучний інтелект
the number of organisms of the same species
as organism i . This decrease is natural, as spe-
cies are already clustered by compatibility with
the threshold t . Each species is assigned a
potentially different number of offspring. Then
the species are multiplied, first excluding the
members with the lowest efficiency from the
population [16]. Then the entire population is
replaced by the offspring of the remaining or-
ganisms in each species.
Description and development
of the system
For the development, we used the Py-
thon programming language together with the
PyGame visualization package. The Python
programming language is best suited for the
development of neural networks, and the
PyGame package is suitable for visualizing the
system's operation [17].
For the successful implementation of
the project, it is necessary to choose the opti-
mal configuration of the NEAT algorithm
(Fig. 1).
Fig. 1. NEAT algorithm configuration
The NEAT section defines parameters
specific to the system:
• fitness_criterion: used to calculate the com-
pletion criterion based on the genome fit-
ness set.
• fitness_threshold: when the value of the fit-
ness function calculated with fitness_crite-
rion, reaches the threshold specified in the
code, the evolution process is completed.
• pop_size: number of individuals in each
generation.
• reset_on_extinction: this parameter is set to
True. When all species die out
simultaneously due to stagnation, a new
random population will be created.
The DefaultGenome section defines
the parameters for the built-in DefaultGenome
class. This section is necessary for the imple-
mentation of the genome when creating an in-
stance of the Config:
• activation_default: attribute of the default
activation function assigned to new nodes.
• activation_mutate_rate: the probability that
a mutation will replace the node's activation
function with a randomly determined acti-
vation_options parameter.
• activation_options: activation functions that
can be used by nodes.
• aggregation_default: attribute of the default
aggregation function assigned to new nodes.
• aggregation_mutate_rate: the probability
that a mutation will replace the node's ag-
gregation function with a randomly deter-
mined aggregation_options parameter.
• aggregation_options: aggregation functions
that can be used by nodes. New aggregation
functions can be defined in the same way as
new activation functions.
A description of the car driving on the
race track is shown in Fig. 2. The program code
describes:
• Uploading a car image, setting car dimen-
sions.
• Determining the starting position and speed
of the car.
• Create a list where data from the car sensors
will be recorded.
• Setting the initial parameter to check if the
car has not crashed.
• Setting the initial parameters of the distance
and time traveled.
Fig. 2. Description of the race car
After that, the system aims to autono-
mously navigate race tracks of varying
379
Експертні та інтелектуальні інформаційні системи, штучний інтелект
complexity by evolving the neural network ar-
chitecture through an iterative evolutionary
process [18]. Our model is a neural network
with five input neurons - sensors - and four out-
put neurons - actions it can perform between
them (Fig. 3).
Fig. 3. Input and output neurons
Next, we added some hidden layers
with additional neurons. These layers increase
the complexity and sophistication of our
model, but they also increase the training time
and the likelihood of neurons "overfitting"
(Fig. 4).
Fig. 4. Hidden layers
All neurons are interconnected, the
connections between neurons have a certain
weight depending on all those values to which
the model will react in a certain way based on
the input data (Fig. 5).
Fig. 5. Connections between neurons
Initially, sensor values and actions are
completely random, but over time, cars learn
to perform actions more rationally and
efficiently. However, for each action that cars
perform, they will receive a reward or a pen-
alty, and this is realized by using a so-called
fitness function. In our simple model, the fit-
ness function of a car increases depending on
the distance it travels without accidents. After
each generation, the cars improve - the cars
with the highest fitness function are likely to
survive and reproduce, while cars that do not
perform as well will disappear after a while.
When a car is reproduced, it won't simply copy
its parent's properties. It'll be similar but not
identical, potentially improving performance
on the track and avoiding accidents. Thus, cars
that are very similar to each other form their
own species. If a species does not improve
within a fixed number of generations, it be-
comes extinct. Taking all these principles into
account, an environment was created in which
the best cars survive and reproduce, while the
worst disappear. The basic principle is that
what works is likely to survive and be repro-
duced.
Testing the system
First, the system was tested for a simple
oval track. The simulation start function is
shown in Fig. 6:
Fig. 6. The function of starting
a simulation
The self-driving car successfully over-
comes the track during the first few genera-
tions. With each new generation, the car in-
creases its speed and completes the track
faster. After the fourth generation, there are
several cars that successfully pass the track.
Further, with the following generations, the
380
Експертні та інтелектуальні інформаційні системи, штучний інтелект
number of cars and their speeds are constantly
increasing.
The implementation of creating popu-
lations and running a simulation with 1000
generations is shown in Fig. 7.
Fig. 7. Code snippet for creating populations
and starting a simulation
We can also see how the cars were di-
vided into two groups, forming two types
(Fig. 8-10).
Fig. 8. Third generation on a simple oval
track
Fig. 9. Fourth generation on a simple oval
track
Fig. 10. The fifth generation on a simple oval
track
Then the system was tested on a more
complex track with many turns. Until the fourth
generation, the cars could not drive through the
first turn. But the model gradually develops,
trains, and therefore, after the fourth generation,
it can easily overcome this turn. Then there are
problems with other turns. With each subsequent
generation, the model improves and covers a
greater distance of the track. More and more cars
successfully complete the track before crashing.
And finally, after twenty-four generations, one
car successfully completes the track without an
accident. With each new generation, there are
more cars and they gradually increase their speed
to drive faster around the track. In this example,
we can clearly see how the NEAT neural net-
work learns and develops (Fig. 11-13).
Fig. 11. Fourth generation on a challenging
track
Fig. 12. Twenty-first generation on a chal-
lenging track
381
Експертні та інтелектуальні інформаційні системи, штучний інтелект
Fig. 13. The twenty-fourth generation on a
difficult track
Testing the system on different tracks
confirmed the system's functionality.
Conclusions
Thanks to the integration of NEAT, Py-
thon, and Pygame, a system capable of auton-
omously navigating race tracks of varying
complexity was successfully created.
Throughout the development process,
the capabilities of NEAT, a neuro-evolutionary
algorithm, were used to develop a neural net-
work architecture that demonstrates intelligent
behavior. NEAT facilitated the automatic gen-
eration and modification of neural network
structures, allowing the system to adapt and
learn based on interaction with the environ-
ment.
The Python language is quite conven-
ient for implementing such tasks thanks to a
large number of libraries. Pygame provided us
with the necessary tools for graphics render-
ing, collision detection, and time control,
which allowed us to create a visually interac-
tive environment for the system.
Iterative cycles of training and evalua-
tion, as well as system refinement and optimi-
zation, have played a crucial role in improving
the system's performance and adaptability.
Thanks to several generations of evolution and
continuous improvement, neural networks
have learned to navigate race tracks, maintain
a high average speed, avoid collisions, and
adapt to various racing challenges.
This project demonstrated the potential
of NEAT and its integration with Python and
Pygame in the development of intelligent con-
trol systems for self-driving cars. The devel-
oped system serves as a basis for further devel-
opment of self-driving cars, as it can be
extended to handle more complex scenarios
and integrate with real-world hardware.
In general, the successful development
of an intelligent control system for an un-
manned vehicle based on NEAT demonstrates
the effectiveness of evolutionary algorithms in
solving complex control problems. This sets
the stage for further research and refinement in
unmanned driving, fostering the development
of safer and more efficient transportation sys-
tems.
References
1. O. V. Barabash, N. B. Dakhno, H. V.
Shevchenko and T. V. Majsak, "Dy-
namic models of decision support sys-
tems for controlling UAV by two-step
variational-gradient method," 2017
IEEE 4th International Conference Ac-
tual Problems of Unmanned Aerial Ve-
hicles Developments (APUAVD),
Kiev, Ukraine, 2017, pp. 108-111, doi:
10.1109/APUAVD.2017.8308787.
2. A. Dudnik, Y. Kravchenko, O. Trush,
O. Leshchenko, N. Dakhno and V.
Rakytskyi, "Study of the Features of
Ensuring Quality Indicators in Multi-
service Networks of the Wi-Fi Stand-
ard," 2021 IEEE 3rd International Con-
ference on Advanced Trends in Infor-
mation Theory (ATIT), Kyiv, Ukraine,
2021, pp. 93-98, doi:
10.1109/ATIT54053.2021.9678691.
3. A. Dudnik, Y. Kravchenko, O. Trush,
O. Leshchenko, N. Dahno and Y.
Ryabokin, "Routing Method in Wire-
less IoT Sensor Networks," 2022 IEEE
3rd International Conference on Sys-
tem Analysis & Intelligent Computing
(SAIC), Kyiv, Ukraine, 2022, pp. 1-6,
doi:10.1109/SAIC57818.2022.992299
8.
4. N. Dakhno, O. Barabash, H.
Shevchenko, O. Leshchenko and A.
Dudnik, "Integro-differential Models
with a K-symmetric Operator for Con-
trolling Unmanned Aerial Vehicles Us-
ing a Improved Gradient Method,"
2021 IEEE 6th International Confer-
ence on Actual Problems of Unmanned
Aerial Vehicles Development
382
Експертні та інтелектуальні інформаційні системи, штучний інтелект
(APUAVD), Kyiv, Ukraine, 2021, pp.
61-65, doi:
10.1109/APUAVD53804.2021.96154
31.
5. S. Bhaggiaraj, M. Priyadharsini, K.
Karuppasamy and R. Snegha, "Deep
Learning Based Self Driving Cars Us-
ing Computer Vision," 2023 Interna-
tional Conference on Networking and
Communications (ICNWC), Chennai,
India, 2023, pp. 1-9, doi: 10.1109/IC-
NWC57852.2023.10127448.
6. S. Bhaggiaraj, M. Priyadharsini, K.
Karuppasamy and R. Snegha, "Deep
Learning Based Self Driving Cars Us-
ing Computer Vision," 2023 Interna-
tional Conference on Networking and
Communications (ICNWC), Chennai,
India, 2023, pp. 1-9, doi: 10.1109/IC-
NWC57852.2023.10127448.
7. K. O. Stanley, Efficient Evolution of
Neural Networks through Complexifi-
cation, 2004, URL: https://citese-
erx.ist.psu.edu/docu-
ment?repid=rep1&type=pdf&doi=e15
8baaec08a54313c74ea0e1af1b72a686
3406c.
8. K. O. Stanley, R. Miikkulainen, Evolv-
ing Neural Networks through Aug-
menting Topologies, 2002. URL:
https://nn.cs.utexas.edu/downloads/pa-
pers/stanley.ec02.pdf.
9. K. O. Stanley, B. D. Bryant, and R.
Miikkulainen. "Evolving Neural Net-
work Agents in the NERO Video
Game". In Proceedings of the IEEE
2005 Symposium on Computational
Intelligence and Games (CIG’05). Pis-
cataway, NJ: IEEE.
10. K. O. Stanley, R. Miikkulainen. "Effi-
cient reinforcement learning through
evolving neural network topologies".
In Proceedings of the Genetic and Evo-
lutionary Computation Conference
(GECCO2002). San Francisco: Kauf-
mann.
11. S. Whiteson, K. O. Stanley, and R.
Miikkulainen. "Automatic feature se-
lection in neuroevolution". In GECCO
2004: Proceedings of the Genetic and
Evolutionary Computation Conference
Workshop on Self-Organization, July
2004.
12. S. Whiteson, P. Stone, K. O. Stanley,
R. Miikkulainen, and N. Kohl. "Auto-
matic Feature Selection in Neuroevolu-
tion". In Proceedings of the Genetic
and Evolutionary Computation Confer-
ence (GECCO 05). pp. 1225-1232,
Washington, D.C., June 2005.
13. X. Yao. Evolving artificial neural net-
works. Proceedings of the IEEE,
87(9):1423–1447, 1999.
14. K. O. Stanley, B. D. Bryant, and R.
Miikkulainen. "Evolving adaptive neu-
ral networks with and without adaptive
synapses". In Proceedings of the 2003
IEEE Congress on Evolutionary Com-
putation (CEC-2003). Canberra, Aus-
tralia: IEEE Press, 2003.
15. K. O. Stanley, and R. Miikkulainen.
"Competitive coevolution through evo-
lutionary complexification". Journal of
Artificial Intelligence Research 21: 63-
100, 2004.
16. K. O. Stanley, and R. Miikkulainen.
"Continual coevolution through com-
plexification". In Proceedings of the
Genetic and Evolutionary Computation
Conference (GECCO-2002). San Fran-
cisco, CA: Morgan Kaufmann, 2002.
17. NEAT-Python 0.92 documentation.
Welcome to NEAT-Python documen-
tation! – NEAT-Python 0.92 documen-
tation, 2022. URL: https://neat-py-
thon.readthedocs.io/en/lat-
est/neat_overview.html.
18. M. E. Timin. The robot auto racing
simulator, 1995. URL:
http://rars.sourceforge.net.
Одержано: 10.04.2024
Внутрішня рецензія отримана: 19.04.2024
Зовнішня рецензія отримана: 23.04.2024
383
Експертні та інтелектуальні інформаційні системи, штучний інтелект
Про авторів:
1Кравченко Юрій Васильович,
Доктор технічних наук,
професор, завідувач кафедри.
https://orcid.org/0000-0002-0281-4396.
1Дахно Наталія Борисівна,
Кандидат технічних наук,
доцент, доцент кафедри.
https://orcid.org/0000-0003-3892-4543
1Лещенко Ольга Олександрівна,
Кандидат технічних наук,
доцент, доцент кафедри
https://orcid.org/0000-0002-3997-2785
1Дуднік Андрій Сергійович,
Доктор технічних наук,
доцент, професор кафедри.
https://orcid.org/0000-0003-1339-7820
1Мірошник Адрій Петрович,
студент.
Місце роботи авторів:
1Київський національний університет
імені Тараса Шевченка,
тел. +38-044-522-62-42
E-mail: fit@knu.ua
Сайт: https://knu.ua
|