Реферат по ГА
6
presentation/report/.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
*
|
||||
|
||||
!.gitignore
|
||||
!**/
|
||||
!img/*
|
||||
!*.tex
|
||||
BIN
presentation/report/img/angle.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
presentation/report/img/angle_chromosome.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
presentation/report/img/angle_experiment1.png
Normal file
|
After Width: | Height: | Size: 205 KiB |
BIN
presentation/report/img/angle_experiment2.png
Normal file
|
After Width: | Height: | Size: 122 KiB |
BIN
presentation/report/img/angle_experiment3.png
Normal file
|
After Width: | Height: | Size: 132 KiB |
BIN
presentation/report/img/binary.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
presentation/report/img/classification.png
Normal file
|
After Width: | Height: | Size: 152 KiB |
BIN
presentation/report/img/crossover.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
presentation/report/img/decimal.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
presentation/report/img/experiment1.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
presentation/report/img/experiment2.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
presentation/report/img/genalg.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
presentation/report/img/grid.png
Normal file
|
After Width: | Height: | Size: 143 KiB |
BIN
presentation/report/img/obstacle1.png
Normal file
|
After Width: | Height: | Size: 151 KiB |
BIN
presentation/report/img/obstacle2.png
Normal file
|
After Width: | Height: | Size: 201 KiB |
BIN
presentation/report/img/ordered.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
presentation/report/img/static.png
Normal file
|
After Width: | Height: | Size: 151 KiB |
BIN
presentation/report/img/table.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
presentation/report/img/table1.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
presentation/report/img/table2.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
presentation/report/img/task.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
580
presentation/report/ГА. Реферат. Тищенко.tex
Normal 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. — С. 10–12.
|
||||
\end{thebibliography}
|
||||
|
||||
\end{document}
|
||||