Реферат по ГА
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}
|
||||||