Таблицы

This commit is contained in:
2025-11-12 15:46:37 +03:00
parent 957de42e16
commit 6400996fcf
2 changed files with 401 additions and 35 deletions

View File

@@ -228,38 +228,20 @@
\newpage
\section{Результаты работы}
Для анализа параметров стратегии подготовлен набор серийных экспериментов. В таблице~\ref{tab:configs} представлены базовые комбинации, используемые для минимизации функции при $n=2$ и $n=3$.
Для демонстрации работы алгоритма была выполнена визуализация процесса оптимизации двумерной функции ($n=2$) со следующими параметрами:
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\begin{table}[h!]
\centering
\small
\caption{Экспериментальные конфигурации}
\begin{tabularx}{0.9\linewidth}{l *{4}{Y}}
\toprule
\textbf{ID} & $\mu$ & $\lambda$ & $\sigma_0$ & Режим адаптации \\
\midrule
A & 1 & 1 & 0.5 & правило успеха $1/5$ \\
B & 5 & 25 & 0.3 & логнормальная самоадаптация \\
C & 10 & 70 & 0.2 & фиксированное $\sigma$ \\
D & 15 & 105 & 0.2 & смешанный: рекомбинация $+$ правило $1/5$ \\
\bottomrule
\end{tabularx}
\label{tab:configs}
\end{table}
\begin{itemize}
\item $\mu = 20$ -- размер популяции родителей.
\item $\lambda = 80$ -- число потомков ($\lambda = 4\mu$).
\item $p_{mut} = 0.7$ -- вероятность мутации каждой координаты.
\item Промежуточная рекомбинация двух родителей.
\item $(\mu, \lambda)$-селекция: родители полностью заменяются.
\item Адаптивное масштабирование шага мутации по правилу успеха $1/5$.
\item Начальное стандартное отклонение $\sigma_0 = 0.15 \cdot (x_{max} - x_{min})$.
\end{itemize}
Визуализация для двумерного случая воспроизводит поверхность целевой функции и положение популяции на каждом шаге. Пошаговый режим позволяет наблюдать влияние изменения дисперсий: при успешных мутациях облако точек расширяется, при неудачах сжимается вокруг текущего минимума. Для трёхмерного случая графически отображается последовательность лучших точек и динамика величины функции во времени.
Визуализация воспроизводит поверхность целевой функции и положение популяции на каждом шаге. Пошаговый режим позволяет наблюдать влияние изменения дисперсий: при успешных мутациях облако точек расширяется, при неудачах сжимается вокруг текущего минимума. Популяция постепенно консолидируется вокруг глобального минимума в точке $(0, 0)$.
\subsection{Пошаговая визуализация процесса оптимизации}
Чтобы получить в отчёт те же трёхмерные графики, что присутствовали во второй лабораторной работе, подготовлен отдельный скрипт \texttt{lab5/generate\_report\_figures.py}. Он переиспользует функцию визуализации из модуля \texttt{main.py}, на каждом указанном поколении строит контурный и два трёхмерных вида поверхности и сохраняет кадры в каталог \texttt{lab5/report/img/results}. Команды следует выполнять из корня репозитория, предварительно установив зависимости:
\begin{verbatim}
pip install numpy matplotlib
python lab5/generate_report_figures.py
\end{verbatim}
После выполнения команды изображения автоматически появятся в каталоге отчёта и будут подхвачены при компиляции \LaTeX-документа.
\begin{figure}[H]
\centering
@@ -310,16 +292,73 @@
\end{figure}
При запуске экспериментов собираются следующие показатели:
\newpage
\section{Исследование параметров}
В рамках лабораторной работы было проведено исследование влияния размера популяции $\mu$ и вероятности мутации $p_{mut}$ на эффективность алгоритма. Для экспериментов использовалась $(\mu, \lambda)$-стратегия с $\lambda = 5\mu$, промежуточной рекомбинацией и адаптивным масштабированием шага мутации по правилу успеха $1/5$.
\subsection{Проведение измерений}
Для исследования были выбраны следующие значения параметров:
\begin{itemize}
\item число поколений до достижения целевого порога $f(\mathbf{x}) < 10^{-6}$ либо исчерпания лимита поколений;
\item итоговая точность (значение функции и евклидово расстояние до нулевого вектора);
\item суммарное процессорное время на серию запусков (возвращается в миллисекундах);
\item статистика успехов для правила $1/5$ и распределение актуальных $\sigma_i$.
\item $\mu = 5, 10, 20, 40$ -- размер популяции родителей.
\item $p_{mut} = 0.3, 0.5, 0.7, 0.9, 1.0$ -- вероятность мутации каждой координаты.
\item Количество независимых запусков для усреднения результатов: 5.
\item Критерий остановки: достижение порога $f(\mathbf{x}) < 10^{-6}$ или исчерпание лимита 300 поколений.
\end{itemize}
На практике $(1+1)$-стратегия показывает самую быструю сходимость на гладком рельефе, однако чувствительна к выбору начального $\sigma_0$. Популяционные режимы требовательнее по времени, но надёжнее удерживаются в окрестности минимума и легче масштабируются на $n=3$.
Результаты измерений представлены в таблицах~\ref{tab:es_results_2} и~\ref{tab:es_results_3}. В ячейках указано среднее время выполнения в миллисекундах и среднее число поколений до достижения критерия остановки. Лучшие результаты по времени выполнения и по числу поколений выделены жирным цветом.
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\begin{table}[h!]
\centering
\small
\caption{Результаты для $n = 2$. Формат: время в мс (число поколений)}
\begin{tabularx}{0.95\linewidth}{l *{5}{Y}}
\toprule
$\mathbf{\mu \;\backslash\; p_{mut}}$ & \textbf{0.30} & \textbf{0.50} & \textbf{0.70} & \textbf{0.90} & \textbf{1.00} \\
\midrule
\textbf{5} & 60.6 (37) & 35.1 (23) & 37.9 (25) & 29.2 (20) & \textcolor{magenta}{\textbf{20.4}} (17) \\
\textbf{10} & 69.5 (22) & 84.1 (28) & 61.1 (21) & 48.2 (17) & 38.1 (16) \\
\textbf{20} & 109.6 (18) & 120.4 (20) & 107.0 (18) & 100.2 (17) & 69.4 (15) \\
\textbf{40} & 239.8 (19) & 225.9 (19) & 199.9 (17) & 180.6 (16) & 121.4 (\textcolor{magenta}{\textbf{13}}) \\
\bottomrule
\end{tabularx}
\label{tab:es_results_2}
\end{table}
\begin{table}[h!]
\centering
\small
\caption{Результаты для $n = 3$. Формат: время в мс (число поколений)}
\begin{tabularx}{0.95\linewidth}{l *{5}{Y}}
\toprule
$\mathbf{\mu \;\backslash\; p_{mut}}$ & \textbf{0.30} & \textbf{0.50} & \textbf{0.70} & \textbf{0.90} & \textbf{1.00} \\
\midrule
\textbf{5} & 146.0 (88) & 212.2 (126) & 93.7 (60) & 44.8 (29) & \textcolor{magenta}{\textbf{30.3}} (25) \\
\textbf{10} & 155.9 (49) & 149.3 (48) & 88.7 (30) & 69.8 (24) & 55.7 (23) \\
\textbf{20} & 235.5 (38) & 199.0 (32) & 157.7 (26) & 125.8 (21) & 105.9 (21) \\
\textbf{40} & 670.3 (53) & 374.2 (31) & 311.8 (26) & 258.2 (22) & 194.0 (\textcolor{magenta}{\textbf{20}}) \\
\bottomrule
\end{tabularx}
\label{tab:es_results_3}
\end{table}
\subsection{Анализ результатов}
Анализ экспериментальных данных выявляет следующие закономерности:
\begin{itemize}
\item \textbf{Влияние вероятности мутации:} Увеличение $p_{mut}$ от 0.3 до 1.0 последовательно улучшает результаты как по времени, так и по числу поколений. Это объясняется тем, что более частая мутация всех координат ускоряет исследование пространства и адаптацию популяции. Лучшие результаты достигаются при $p_{mut} = 1.0$ (мутация всех координат на каждом шаге).
\item \textbf{Влияние размера популяции:} При малых $\mu$ (5-10) алгоритм демонстрирует наименьшее время выполнения и умеренное число поколений. С ростом $\mu$ до 40 время увеличивается пропорционально размеру популяции, но число поколений снижается благодаря более широкому охвату пространства поиска. Для двумерной задачи оптимальным является $\mu=5$, $p_{mut}=1.0$ (20.4 мс, 17 поколений).
\item \textbf{Масштабирование на размерность:} При переходе от $n=2$ к $n=3$ время выполнения изменяется незначительно (30.3 мс против 20.4 мс для лучшей конфигурации), однако требуется больше поколений (25 против 17). Это связано с усложнением ландшафта целевой функции и необходимостью большего числа итераций для достижения порога $10^{-6}$.
\item \textbf{Эффективность адаптации:} Правило успеха $1/5$ обеспечивает автоматическую подстройку масштаба мутации, что позволяет алгоритму быстро сходиться без ручной настройки начального $\sigma$. Минимальное число поколений (13 и 20 для $n=2$ и $n=3$ соответственно) достигается при больших популяциях ($\mu=40$) и высокой вероятности мутации ($p_{mut}=1.0$).
\end{itemize}
\newpage
\section{Ответ на контрольный вопрос}