diff --git a/presentation/report/.gitignore b/presentation/report/.gitignore new file mode 100644 index 0000000..da3ef61 --- /dev/null +++ b/presentation/report/.gitignore @@ -0,0 +1,6 @@ +* + +!.gitignore +!**/ +!img/* +!*.tex \ No newline at end of file diff --git a/presentation/report/img/angle.png b/presentation/report/img/angle.png new file mode 100644 index 0000000..375941b Binary files /dev/null and b/presentation/report/img/angle.png differ diff --git a/presentation/report/img/angle_chromosome.png b/presentation/report/img/angle_chromosome.png new file mode 100644 index 0000000..c7e219c Binary files /dev/null and b/presentation/report/img/angle_chromosome.png differ diff --git a/presentation/report/img/angle_experiment1.png b/presentation/report/img/angle_experiment1.png new file mode 100644 index 0000000..9598757 Binary files /dev/null and b/presentation/report/img/angle_experiment1.png differ diff --git a/presentation/report/img/angle_experiment2.png b/presentation/report/img/angle_experiment2.png new file mode 100644 index 0000000..421e990 Binary files /dev/null and b/presentation/report/img/angle_experiment2.png differ diff --git a/presentation/report/img/angle_experiment3.png b/presentation/report/img/angle_experiment3.png new file mode 100644 index 0000000..1bf6f69 Binary files /dev/null and b/presentation/report/img/angle_experiment3.png differ diff --git a/presentation/report/img/binary.png b/presentation/report/img/binary.png new file mode 100644 index 0000000..08b4c18 Binary files /dev/null and b/presentation/report/img/binary.png differ diff --git a/presentation/report/img/classification.png b/presentation/report/img/classification.png new file mode 100644 index 0000000..3f426f6 Binary files /dev/null and b/presentation/report/img/classification.png differ diff --git a/presentation/report/img/crossover.png b/presentation/report/img/crossover.png new file mode 100644 index 0000000..a527148 Binary files /dev/null and b/presentation/report/img/crossover.png differ diff --git a/presentation/report/img/decimal.png b/presentation/report/img/decimal.png new file mode 100644 index 0000000..fd1b684 Binary files /dev/null and b/presentation/report/img/decimal.png differ diff --git a/presentation/report/img/experiment1.png b/presentation/report/img/experiment1.png new file mode 100644 index 0000000..ed70221 Binary files /dev/null and b/presentation/report/img/experiment1.png differ diff --git a/presentation/report/img/experiment2.png b/presentation/report/img/experiment2.png new file mode 100644 index 0000000..2404c1b Binary files /dev/null and b/presentation/report/img/experiment2.png differ diff --git a/presentation/report/img/genalg.png b/presentation/report/img/genalg.png new file mode 100644 index 0000000..9a5a9d2 Binary files /dev/null and b/presentation/report/img/genalg.png differ diff --git a/presentation/report/img/grid.png b/presentation/report/img/grid.png new file mode 100644 index 0000000..26064de Binary files /dev/null and b/presentation/report/img/grid.png differ diff --git a/presentation/report/img/obstacle1.png b/presentation/report/img/obstacle1.png new file mode 100644 index 0000000..a31b3be Binary files /dev/null and b/presentation/report/img/obstacle1.png differ diff --git a/presentation/report/img/obstacle2.png b/presentation/report/img/obstacle2.png new file mode 100644 index 0000000..2b48193 Binary files /dev/null and b/presentation/report/img/obstacle2.png differ diff --git a/presentation/report/img/ordered.png b/presentation/report/img/ordered.png new file mode 100644 index 0000000..b03f1ff Binary files /dev/null and b/presentation/report/img/ordered.png differ diff --git a/presentation/report/img/static.png b/presentation/report/img/static.png new file mode 100644 index 0000000..fba8904 Binary files /dev/null and b/presentation/report/img/static.png differ diff --git a/presentation/report/img/table.png b/presentation/report/img/table.png new file mode 100644 index 0000000..c46c841 Binary files /dev/null and b/presentation/report/img/table.png differ diff --git a/presentation/report/img/table1.png b/presentation/report/img/table1.png new file mode 100644 index 0000000..aefbb60 Binary files /dev/null and b/presentation/report/img/table1.png differ diff --git a/presentation/report/img/table2.png b/presentation/report/img/table2.png new file mode 100644 index 0000000..46eee5a Binary files /dev/null and b/presentation/report/img/table2.png differ diff --git a/presentation/report/img/task.png b/presentation/report/img/task.png new file mode 100644 index 0000000..1227012 Binary files /dev/null and b/presentation/report/img/task.png differ diff --git a/presentation/report/ГА. Реферат. Тищенко.tex b/presentation/report/ГА. Реферат. Тищенко.tex new file mode 100644 index 0000000..dcbf93b --- /dev/null +++ b/presentation/report/ГА. Реферат. Тищенко.tex @@ -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. — С. 10–12. +\end{thebibliography} + +\end{document} \ No newline at end of file