2 Commits

Author SHA1 Message Date
27f4a8f2d8 Реферат по ГА 2025-10-03 10:52:23 +03:00
9c2e13e90b Подписи таблиц сверху 2025-09-19 11:03:53 +03:00
24 changed files with 590 additions and 4 deletions

View File

@@ -448,6 +448,7 @@
\begin{table}[h!]
\centering
\small
\caption{Результаты для $N = 10$}
\begin{tabularx}{\linewidth}{l *{5}{Y}}
\toprule
$\mathbf{P_c \;\backslash\; P_m}$ & \textbf{0.001} & \textbf{0.010} & \textbf{0.050} & \textbf{0.100} & \textbf{0.200} \\
@@ -460,13 +461,13 @@
\textbf{0.8} & 8.7 (126) & 8.3 (119) & 3.9 (57) & 7.9 (113)& 4.4 (61) \\
\bottomrule
\end{tabularx}
\caption{Результаты для $N = 10$}
\label{tab:pc_pm_results}
\end{table}
\begin{table}[h!]
\centering
\small
\caption{Результаты для $N = 25$}
\begin{tabularx}{\linewidth}{l *{5}{Y}}
\toprule
$\mathbf{P_c \;\backslash\; P_m}$ & \textbf{0.001} & \textbf{0.010} & \textbf{0.050} & \textbf{0.100} & \textbf{0.200} \\
@@ -479,13 +480,13 @@
\textbf{0.8} & 9.2 (64) & 5.8 (41) & 2.5 (18) & 3.0 (22) & 11.2 (78) \\
\bottomrule
\end{tabularx}
\caption{Результаты для $N = 25$}
\label{tab:pc_pm_results2}
\end{table}
\begin{table}[h!]
\centering
\small
\caption{Результаты для $N = 50$}
\begin{tabularx}{\linewidth}{l *{5}{Y}}
\toprule
$\mathbf{P_c \;\backslash\; P_m}$ & \textbf{0.001} & \textbf{0.010} & \textbf{0.050} & \textbf{0.100} & \textbf{0.200} \\
@@ -498,12 +499,12 @@
\textbf{0.8} & 10.8 (44) & 5.0 (21) & 6.1 (24) & 13.9 (56) & 36.5 (145) \\
\bottomrule
\end{tabularx}
\caption{Результаты для $N = 50$}
\label{tab:pc_pm_results3}
\end{table}
\begin{table}[h!]
\centering
\small
\caption{Результаты для $N = 100$}
\begin{tabularx}{\linewidth}{l *{5}{Y}}
\toprule
$\mathbf{P_c \;\backslash\; P_m}$ & \textbf{0.001} & \textbf{0.010} & \textbf{0.050} & \textbf{0.100} & \textbf{0.200} \\
@@ -516,7 +517,6 @@
\textbf{0.8} & 16.4 (34) & 12.1 (25) & 31.4 (64) & 54.9 (114) & -- \\
\bottomrule
\end{tabularx}
\caption{Результаты для $N = 100$}
\label{tab:pc_pm_results4}
\end{table}

6
presentation/report/.gitignore vendored Normal file
View File

@@ -0,0 +1,6 @@
*
!.gitignore
!**/
!img/*
!*.tex

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -0,0 +1,580 @@
\documentclass[a4paper, final]{article}
%\usepackage{literat} % Нормальные шрифты
\usepackage[14pt]{extsizes} % для того чтобы задать нестандартный 14-ый размер шрифта
\usepackage{tabularx}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\usepackage{amsmath}
\usepackage[left=25mm, top=20mm, right=20mm, bottom=20mm, footskip=10mm]{geometry}
\usepackage{ragged2e} %для растягивания по ширине
\usepackage{setspace} %для межстрочно го интервала
\usepackage{moreverb} %для работы с листингами
\usepackage{indentfirst} % для абзацного отступа
\usepackage{moreverb} %для печати в листинге исходного кода программ
\usepackage{pdfpages} %для вставки других pdf файлов
\usepackage{tikz}
\usepackage{graphicx}
\usepackage{afterpage}
\usepackage{longtable}
\usepackage{float}
% \usepackage[paper=A4,DIV=12]{typearea}
\usepackage{pdflscape}
% \usepackage{lscape}
\usepackage{array}
\usepackage{multirow}
\renewcommand\verbatimtabsize{4\relax}
\renewcommand\listingoffset{0.2em} %отступ от номеров строк в листинге
\renewcommand{\arraystretch}{1.4} % изменяю высоту строки в таблице
\usepackage[font=small, singlelinecheck=false, justification=centering, format=plain, labelsep=period]{caption} %для настройки заголовка таблицы
\usepackage{listings} %листинги
\usepackage{xcolor} % цвета
\usepackage{hyperref}% для гиперссылок
\usepackage{enumitem} %для перечислений
\newcommand{\specialcell}[2][l]{\begin{tabular}[#1]{@{}l@{}}#2\end{tabular}}
\setlist[enumerate,itemize]{leftmargin=1.2cm} %отступ в перечислениях
\hypersetup{colorlinks,
allcolors=[RGB]{010 090 200}} %красивые гиперссылки (не красные)
% подгружаемые языки — подробнее в документации listings (это всё для листингов)
\lstloadlanguages{ SQL}
% включаем кириллицу и добавляем кое−какие опции
\lstset{tabsize=2,
breaklines,
basicstyle=\footnotesize,
columns=fullflexible,
flexiblecolumns,
numbers=left,
numberstyle={\footnotesize},
keywordstyle=\color{blue},
inputencoding=cp1251,
extendedchars=true
}
\lstdefinelanguage{MyC}{
language=SQL,
% ndkeywordstyle=\color{darkgray}\bfseries,
% identifierstyle=\color{black},
% morecomment=[n]{/**}{*/},
% commentstyle=\color{blue}\ttfamily,
% stringstyle=\color{red}\ttfamily,
% morestring=[b]",
% showstringspaces=false,
% morecomment=[l][\color{gray}]{//},
keepspaces=true,
escapechar=\%,
texcl=true
}
\textheight=24cm % высота текста
\textwidth=16cm % ширина текста
\oddsidemargin=0pt % отступ от левого края
\topmargin=-1.5cm % отступ от верхнего края
\parindent=24pt % абзацный отступ
\parskip=5pt % интервал между абзацами
\tolerance=2000 % терпимость к "жидким" строкам
\flushbottom % выравнивание высоты страниц
% Настройка листингов
\lstset{
language=python,
extendedchars=\true,
inputencoding=utf8,
keepspaces=true,
% captionpos=b, % подписи листингов снизу
}
\begin{document} % начало документа
% НАЧАЛО ТИТУЛЬНОГО ЛИСТА
\begin{center}
\hfill \break
\hfill \break
\normalsize{МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ\\
федеральное государственное автономное образовательное учреждение высшего образования «Санкт-Петербургский политехнический университет Петра Великого»\\[10pt]}
\normalsize{Институт компьютерных наук и кибербезопасности}\\[10pt]
\normalsize{Высшая школа технологий искусственного интеллекта}\\[10pt]
\normalsize{Направление: 02.03.01 <<Математика и компьютерные науки>>}\\
\hfill \break
\hfill \break
\hfill \break
\hfill \break
\large{Реферат по дисциплине}\\
\large{<<Генетические алгоритмы>>}\\
\large{<<Планирование пути робота>>}\\
\hfill \break
\hfill \break
\end{center}
\small{
\begin{tabular}{lrrl}
\!\!\!Студент, & \hspace{2cm} & & \\
\!\!\!группы 5130201/20102 & \hspace{2cm} & \underline{\hspace{3cm}} &Тищенко А. А. \\\\
\!\!\!Преподаватель & \hspace{2cm} & \underline{\hspace{3cm}} & Большаков А. А. \\\\
&&\hspace{4cm}
\end{tabular}
\begin{flushright}
<<\underline{\hspace{1cm}}>>\underline{\hspace{2.5cm}} 2025г.
\end{flushright}
}
\hfill \break
% \hfill \break
\begin{center} \small{Санкт-Петербург, 2025} \end{center}
\thispagestyle{empty} % выключаем отображение номера для этой страницы
% КОНЕЦ ТИТУЛЬНОГО ЛИСТА
\newpage
\tableofcontents
\newpage
\section*{Введение}
\addcontentsline{toc}{section}{Введение}
Планирование пути мобильного робота — это задача построения коллизие-свободной траектории из начальной точки в целевую в присутствии препятствий и ограничений среды. Актуальность задачи обусловлена широким спектром приложений: от автономной логистики и сельского хозяйства до роботизированной инспекции и сервисной робототехники. Традиционные графовые методы (Дейкстра, A*) обеспечивают точный поиск на известных картах, однако их эффективность снижается при росте размерности, наличии динамики и сложных ограничений. Эволюционные подходы, в частности генетические алгоритмы (ГА), предоставляют гибкую эвристическую альтернативу, позволяя естественно учитывать несколько критериев качества и штрафы за нарушения ограничений.
Цель работы — исследовать применение ГА для планирования пути на дискретном представлении среды (grid) и в параметризации траекторий через направления движения (угловое кодирование), а также сравнить различные способы кодирования хромосом и их влияние на качество маршрутов и вычислительные затраты.
В работе:
\begin{itemize}
\item кратко рассмотрена классификация алгоритмов планирования пути по характеру среды (статическая/динамическая), принципу (глобальные/локальные) и полноте (точные/эвристические);
\item формализована фитнесс-функция с учётом длины пути и штрафов за пересечение препятствий, а для углового кодирования — с дополнительными слагаемыми за число поворотов;
\item изучены три варианта grid-кодирования узлов пути (двоичное, десятичное, упорядоченное) и угловое кодирование с 4 и 8 направлениями движения;
\item проведены эксперименты в статических сценах и сценарии с поэтапным появлением новых препятствий (offline/online-перепланирование);
\item сопоставлены метрики: длина маршрута, число поколений и время решения.
\end{itemize}
Полученные результаты демонстрируют применимость ГА к задачам планирования как в статических, так и в динамически меняющихся средах, а также выявляют влияние выбора представления пути на качество и стоимость поиска.
\newpage
\section{Постановка задачи}
Планирование пути робота -- вычисление пути, свободного от столкновений, от начальной позиции до конечной
среди множества препятствий
\begin{figure}[h!]
\centering
\includegraphics[width=0.8\linewidth]{img/task.png}
\caption{Задача планирования пути}
\label{fig:task}
\end{figure}
\newpage
\section{Классификация алгоритмов планирования пути}
На схеме \ref{fig:classification} показана классификация алгоритмов планирования пути.
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/classification.png}
\caption{Классификация алгоритмов планирования пути}
\label{fig:classification}
\end{figure}
Алгоритмы планирования пути можно классифицировать по трём главным признакам:
\begin{itemize}
\item По характеру среды (based on environment)
\begin{itemize}
\item \textbf{Статические (Static)}
Используются, когда карта среды известна заранее и не меняется. Все препятствия заранее заданы, и алгоритм строит маршрут до старта движения.
Пример: классические алгоритмы поиска пути на графе (A*, Дейкстра).
\item \textbf{Динамические (Dynamic)}
Применяются в условиях, где препятствия могут появляться или перемещаться во время движения робота. Алгоритм должен уметь перестраивать путь «на лету» (онлайн-планирование).
Пример: D* Lite, Anytime Repairing A*, алгоритмы на основе предсказаний и реактивного управления.
\end{itemize}
\item По принципу алгоритма (based on algorithm)
\begin{itemize}
\item \textbf{Глобальные (Global)}
Предполагают знание полной карты окружающей среды. Алгоритм ищет оптимальный путь целиком от старта до цели.
Пример: A*, Дейкстра, волновой алгоритм (Wavefront).
\item \textbf{Локальные (Local)}
Робот строит путь только на основе данных с датчиков «здесь и сейчас». Такие методы хорошо работают в неизвестных или частично известных средах.
Пример: Bug Algorithms, Potential Fields, Dynamic Window Approach.
\end{itemize}
\item По полноте поиска (based on completeness)
\begin{itemize}
\item \textbf{Точные (Exact)}
Гарантируют нахождение решения (если оно существует), а также могут обеспечить оптимальность. Но часто требуют много вычислительных ресурсов.
Пример: алгоритм Дейкстры, точный A*.
\item \textbf{Эвристические (Heuristic)}
Используют приближённые методы и эвристики для ускорения поиска. Решение находится быстрее, но не всегда оптимальное.
Пример: эвристический A*, эволюционные методы (генетические алгоритмы, рой частиц, муравьиные алгоритмы).
\end{itemize}
\end{itemize}
\newpage
\section{Генетические алгоритмы для построения пути}
Для решения произвольной задачи с помощью ГА необходимо определить:
\begin{itemize}
\item особь и популяцию;
\item генетические операторы;
\item фитнесс функцию;
\item параметры ГА.
\end{itemize}
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/genalg.png}
\caption{Составляющие ГА}
\label{fig:genalg}
\end{figure}
\subsection{Grid-кодирование пути}
\subsubsection*{Кодирование хромосом}
Рассмотрим часто используемое на практике представление окружения робота в виде «решетки» -- сетки
(grid).
Для представления окружения используется:
\begin{itemize}
\item двоичное;
\item десятичное;
\item упорядоченное кодирование;
\end{itemize}
показанное на рисунке \ref{fig:grid} (белые клетки--свободное пространство, серые -- препятствия).
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/grid.png}
\caption{Grid-кодирование пути}
\label{fig:grid}
\end{figure}
Тогда хромосома (особь популяции) представляет потенциальное решение -
Путь от начальной точки S (левый верхний угол) до конечной точки- цели T (правый нижний угол)
Хромосома (путь робота) содержит начальную и конечную вершины графа, представляющего решетку, а
также вершины, пересекаемые роботом
Эти вершины (или шаги) называются генами хромосомы.
Различные методы кодирования используются для хромосомы, в зависимости от формы представления
окружения:
\newpage
\begin{enumerate}
\item Двоичное кодирование содержит двоичные коды номеров строк и столбцов (координаты x,y)
«узловых» вершин пути.
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/binary.png}
\caption{Двоичное кодирование}
\label{fig:binary}
\end{figure}
\item Десятичное кодирование содержит десятичные номера строк и столбцов (координаты x,y)
«узловых» вершин пути.
\begin{figure}[h!]
\centering
\includegraphics[width=0.45\linewidth]{img/decimal.png}
\caption{Десятичное кодирование}
\label{fig:decimal}
\end{figure}
\item Упорядоченное кодирование - содержит номера(в общем порядке ячеек - вершин) проходимых
«узловых» вершин пути.
\begin{figure}[h!]
\centering
\includegraphics[width=0.4\linewidth]{img/ordered.png}
\caption{Упорядоченное кодирование}
\label{fig:ordered}
\end{figure}
\end{enumerate}
\subsubsection*{Инициализация популяции}
Выполняется случайно
При этом некоторые построенные хромосомы соответствуют нереализуемым путям, которые пересекают
препятствия
В таблице представлены экспериментальные данные по генерации начальной популяции
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/table.png}
\caption{Таблица экспериментальных данных}
\label{fig:table}
\end{figure}
Далее находятся оптимальные или близкие к оптимальным решения (пути роботов), даже если начальная
популяция содержит нереализуемые решения
\subsubsection*{Фитнесс функция}
Целью планирования пути является построение пути робота между начальной и конечной точками.
Оптимальный путь должен иметь минимальную длину, время и минимальные энергозатраты.
Прежде всего, минимизируется длина пути.
Поэтому все эволюционные методы построения пути включают в фитнесс-функцию длину пути робота,
которая может быть определена следующим образом.
Здесь $P_i$
- i-й ген хромосомы $P$ , $d$ - расстояние между 2-мя узлами.
Фитнесс-функция для реализуемых путей определяется как сумма расстояний между узлами пути.
Заметим, что для нереализуемых путей (имеющих пересечения с препятствия) фитнесс-функция имеет
дополнительную штрафную функцию. Если между узлами встречается препятствие, то в фитнессфункцию добавляется штраф.
Для поиска пути робота используется классический ГА.
На последнем шаге итерации (поколения) в соответствии с вычисленными значениями фитнесс-функции
отбираются хромосомы для производства потомков с помощью генетических операторов кроссинговера
и мутации.
Для выбора родителей применяется ранговый отбор
\begin{equation}
f =
\begin{cases}
\displaystyle \sum_{i=1}^{n-1} d(p_i, p_{i+1}), & \text{для допустимых путей (без столкновений)}, \\[1.5ex]
\displaystyle \sum_{i=1}^{n-1} d(p_i, p_{i+1}) + \text{штраф}, & \text{для недопустимых путей}.
\end{cases}
\end{equation}
\begin{equation}
d(p_i, p_{i+1}) = \sqrt{(x_{(i+1)} - x_i)^2 + (y_{(i+1)} - y_i)^2},
\end{equation}
где $p_i = (x_i, y_i)$ — координаты $i$-й вершины пути.
\subsubsection*{Генетические операторы}
Для генерации потомков используется обычный 1-точечный кроссинговер с заданной вероятностью $P_c$.
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\linewidth]{img/crossover.png}
\caption{Одноточечный кроссинговер}
\label{fig:crossover}
\end{figure}
Пример на Рис.~\ref{fig:crossover} показывает кроссинговер для упорядоченного кодирования хромосом.
Далее к потомкам (каждому гену) с малой вероятностью $P_m$ применяется оператор мутации, который вносит
небольшое изменение в ген в зависимости от способа кодирования.
Мутация расширяет пространство поиска и препятствует преждевременной сходимости в локальном
экстремуме
\subsubsection*{Эксперименты}
\textbf{Эксперимент 1.} Построение пути проводилось в следующем окружении (сетка 16х16) с 8
препятствиями с использованием указанных выше методов кодирования хромосом.
Параметры ГА:
\begin{itemize}
\item Мощность популяции $N=60$;
\item Вероятности: кроссинговера $P_c=1.0$, мутации $P_m=0.1$
\end{itemize}
После 10 запусков ГА для каждого метода получены средние значения расстояния, число поколений и
время решения, которые представлены на
Рис.~\ref{fig:table1}.
\begin{figure}[h!]
\centering
\includegraphics[width=0.45\linewidth]{img/experiment1.png}
\caption{Эксперимент 1}
\label{fig:experiment1}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.8\linewidth]{img/table1.png}
\caption{Таблица эксперимента 1}
\label{fig:table1}
\end{figure}
\newpage
\textbf{Эксперимент 2.} Эксперимент 2 для окружения с 7 препятствиями. Параметры ГА те же.
Данные для различных методов кодирования представлены на рисунке \ref{fig:table3}. Видно, что десятичное и упорядоченное кодирование показывают лучшие результаты.
\begin{figure}[h!]
\centering
\includegraphics[width=0.45\linewidth]{img/experiment2.png}
\caption{Эксперимент 2}
\label{fig:experiment2}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.8\linewidth]{img/table2.png}
\caption{Таблица эксперимента 2}
\label{fig:table2}
\end{figure}
\subsection{Угловое кодирование пути}
\subsubsection*{Кодирование хромосом}
Для кодирования пути робота эволюционные методы используют различные методы.
Альтернативным рассмотренному ранее кодированию (узлов) вершин проходимого пути,
является кодирование на основе углов направлений движения робота.
Это можно сделать по-разному (с различной точностью).
На Рис.~\ref{fig:angle} представлены 2 варианта кодирования направлений движения:
а) 4 направления - робот может передвигаться по горизонталям и вертикалям.
б) 8 направлений- робот может передвигаться также по диагоналям.
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\linewidth]{img/angle.png}
\caption{Для кодирования направлений используются целые числа:\\ а) (0,1,2,3), либо
б) (0,1,2,3,4,5,6,7)}
\label{fig:angle}
\end{figure}
Тогда каждый ген в хромосоме представляет направление движения робота на следующем
шаге.
В этом случае хромосома (см. Рис.~\ref{fig:angle_chromosome}) представляет «коллекцию» направлений движения робота в каждой
точке, начиная от старта, и кончая финалом.
\begin{figure}[h!]
\centering
\includegraphics[width=0.9\linewidth]{img/angle_chromosome.png}
\caption{Хромосома с угловым кодированием пути. D целое число, определяющее направление движения на следующем шаге.}
\label{fig:angle_chromosome}
\end{figure}
\subsubsection*{Фитнесс-функция}
Фитнесс-функция в задаче планирования пути робота определяется следующим образом:
\begin{equation}
\text{Cost}(P) = w_1 D + w_2 O + w_3 C,
\end{equation}
где:
\begin{itemize}
\item $w_1, w_2, w_3$ -- коэффициенты (константы), задающие вклад каждой компоненты;
\item $D$ -- расстояние (длина) пути;
\item $O$ -- число пересекаемых ячеек препятствий;
\item $C$ -- число изменений направлений движения.
\end{itemize}
Особь (маршрут) с минимальным значением фитнесс-функции соответствует оптимальному пути.
Очевидно, что увеличение числа изменений направления приводит к увеличению времени движения,
а каждое пересечение препятствия сопровождается значительным штрафом.
\subsubsection*{Эксперименты}
\textbf{Эксперимент 1}. Метод апробирован на различного типа препятствиях с разным числом направлений движений (4 или 8).
Начальная точка -- (0,0). Конечная точка -- (15, 9).
В 1-м эксперименте использовались только статические препятствия.
На Рис.~\ref{fig:angle_experiment1}-\ref{fig:angle_experiment2} представлены результаты для 2- вариантов направлений движений(4 или 8), которые показывают способность ГА решать данную проблему.
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\linewidth]{img/angle_experiment1.png}
\caption{Загроможденные препятствия. \\ (a) 4 направления, (b) 8 направлений}
\label{fig:angle_experiment1}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\linewidth]{img/angle_experiment2.png}
\caption{Региональные препятствия. \\ (c) 4 направления, (d) 8 направлений}
\label{fig:angle_experiment2}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\linewidth]{img/angle_experiment3.png}
\caption{Препятствия окружают конечную точку. \\ (e) 4 направления, (f) 8 направлений}
\label{fig:angle_experiment3}
\end{figure}
\newpage
\textbf{Эксперимент 2.} Динамическую систему поиска пути можно разделить на две компоненты.
\begin{itemize}
\item Ищем маршрут по заранее заданной карте ещё до запуска робота (offline компонента).
\item Если робот встретил новые препятствия, которых не было в исходной карте, то запускается новый алгоритм поиска с актуальной точки (online компонента).
\end{itemize}
Сначал генетический алгоритм был запущен для статической среды (см.~Рис.~\ref{fig:static}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\linewidth]{img/static.png}
\caption{Запуск для статической среды (offline компонента)}
\label{fig:static}
\end{figure}
\newpage
И далее добавлялись (случайно) 1 препятствие (см. Рис.~\ref{fig:obstacle1}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\linewidth]{img/obstacle1.png}
\caption{Обновлённый путь после добавления ещё одного препятствия.}
\label{fig:obstacle1}
\end{figure}
И ещё одно препятствие (см. Рис.~\ref{fig:obstacle2}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\linewidth]{img/obstacle2.png}
\caption{Обновлённый путь после добавления второго препятствия.}
\label{fig:obstacle2}
\end{figure}
\newpage
% ---------- ЗАКЛЮЧЕНИЕ ----------
\section*{Заключение}
\addcontentsline{toc}{section}{Заключение}
В работе рассмотрено применение генетических алгоритмов к задаче планирования пути робота на дискретной карте и в форме углового (направленного) кодирования. Показано, что:
\begin{enumerate}
\item Для grid-представления десятичное и упорядоченное кодирование обеспечивают в среднем более короткие пути и/или меньшее время поиска по сравнению с двоичным кодированием при сопоставимых параметрах ГА (\(N=60\), \(P_c=1.0\), \(P_m=0.1\)).
\item Угловое кодирование с 8 направлениями, как правило, даёт более гибкие и короткие траектории, чем с 4 направлениями, однако требует контроля числа поворотов (штраф \(C\)) для предотвращения «ломаных» маршрутов.
\item В динамическом сценарии поэтапное появление препятствий эффективно обрабатывается за счёт online-перепланирования: повторный запуск ГА из текущего положения восстанавливает коллизие-свободный путь без полной переразметки карты.
\end{enumerate}
Ограничения подхода включают чувствительность к настройкам операторов и вероятностей, риск преждевременной сходимости и вычислительные затраты при частых проверках коллизий.
ГА представляют собой практичный и переносимый инструмент планирования пути в условиях неопределённости и динамики, при этом выбор кодирования и архитектуры фитнесс-функции критически влияет на компромисс между качеством траектории и затратами вычислений.
\newpage
\section*{Список литературы}
\addcontentsline{toc}{section}{Список литературы}
\vspace{-1.5cm}
\begin{thebibliography}{0}
\bibitem{skobtsov} М.В. Прохоров, Ю.А. Скобцов. Многокритериальный генетический алгоритм построения пути робота в сложной среде. — Санкт-Петербург: СПбПУ, 2016. — 36с.
\bibitem{matveeva} Матвеева А.В. Оптимизация построения маршрута с помощью генетического алгоритма // Финансовый университет при Правительстве Российской Федерации, 2022. — С. 1012.
\end{thebibliography}
\end{document}