\doxysubsubsection{Evolve optimizer }
\hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}{}\label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}\index{Evolve optimizer@{Evolve optimizer}}


Библиотека для эволюционного подбора параметров  


Collaboration diagram for Evolve optimizer\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=280pt]{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r}
\end{center}
\end{figure}
\doxysubsubsubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}}
\begin{DoxyCompactList}\small\item\em Структура эволюционного оптимизатора \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsubsubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\+\_\+\+SCALE}}(x,  min\+\_\+val,  max\+\_\+val)
\begin{DoxyCompactList}\small\item\em Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в диапазон \mbox{[}0, 1) \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\+\_\+\+UNSCALE}}(val,  min\+\_\+val,  max\+\_\+val)
\begin{DoxyCompactList}\small\item\em Обратное линейное масштабирование значения из \mbox{[}0, 1) в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT}}~10
\begin{DoxyCompactList}\small\item\em Минимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT}}~100
\begin{DoxyCompactList}\small\item\em Максимальная мутация (в процентах от Loss) \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE}}~2
\begin{DoxyCompactList}\small\item\em Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{Evolve\+Optimizer\+\_\+\+Init}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, uint16\+\_\+t n\+\_\+params, uint16\+\_\+t n\+\_\+cand, uint16\+\_\+t n\+\_\+best, float mutation\+\_\+amp, float \texorpdfstring{$\ast$}{*}start\+\_\+params)
\begin{DoxyCompactList}\small\item\em Инициализация эволюционного оптимизатора. \end{DoxyCompactList}\item 
\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{Evolve\+Optimizer\+\_\+\+Step}} (\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}opt, float \texorpdfstring{$\ast$}{*}params, float loss)
\begin{DoxyCompactList}\small\item\em Один шаг эволюционного оптимизатора. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsubsubsection{Detailed Description}
Библиотека для эволюционного подбора параметров 

Поддерживает\+:
\begin{DoxyItemize}
\item Любое количество параметров
\item Генерацию новых параметров на основе лучших кандидатов
\item Мутацию для поиска оптимальных параметров
\item Несколько независимых оптимизаторов в одной программе
\end{DoxyItemize}

Параметры для конфигурации\+:
\begin{DoxyItemize}
\item \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION} -\/ Включить оптимизацию параметров Если библиотека отключена \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga2cac097081444a7a9b040f4b11550e47}{ENABLE\+\_\+\+EVOLVE\+\_\+\+OPTIMIZATION}, то вставляются заглушки, никак не влияющие на параметры и остальную программу
\item \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga80d6162495fc3776d8902610657d4fee}{EVOLVE\+\_\+\+MAX\+\_\+\+PARAMS} -\/ Максимальное количество параметров
\item \doxylink{group___e_v_o_l_v_e___c_o_n_f_i_g_ga7c1396e5c95c766afccdb45cbfcf5971}{EVOLVE\+\_\+\+MAX\+\_\+\+CANDIDATES} -\/ Максимальное количество кандидатов для обучения
\item (опционально) \doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT} -\/ Минимальная мутация в процентах от Loss (по умолчанию 10\%)
\item (опционально) \doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}{EVOLVE\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT} -\/ Максимальная мутация в процентах от Loss (по умолчанию 100\%)
\item (опционально) \doxylink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}{ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE} -\/ Количество кандидатов, которые проходят в поколение без изменений
\end{DoxyItemize}

\begin{DoxyParagraph}{Пример использования\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{evolve__optimizer_8h}{evolve\_optimizer.h}}"{}}}
\DoxyCodeLine{\textcolor{preprocessor}{\#define\ N\_PARAMS\ \ \ \ \ \ \ \ 4}}
\DoxyCodeLine{\textcolor{preprocessor}{\#define\ N\_CANDIDATES\ \ \ \ 100}}
\DoxyCodeLine{\textcolor{preprocessor}{\#define\ N\_BEST\ \ \ \ \ \ \ \ \ \ 10}}
\DoxyCodeLine{\textcolor{preprocessor}{\#define\ MUTATION\ \ \ \ \ \ \ \ 0.1f}}
\DoxyCodeLine{\textcolor{keywordtype}{float}\ params[N\_PARAMS];}
\DoxyCodeLine{\mbox{\hyperlink{struct_evolve_optimizer__t}{EvolveOptimizer\_t}}\ optimizer;}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{comment}{//\ Формирование\ параметров}}
\DoxyCodeLine{uint16\_t\ \ param\_u16\ =\ 800;}
\DoxyCodeLine{\textcolor{keywordtype}{float}\ \ \ \ \ param\_f\ \ \ =\ 0.01f;}
\DoxyCodeLine{uint8\_t\ \ \ param\_u8\ \ =\ 40;}
\DoxyCodeLine{int16\_t\ \ \ param\_i16\ =\ 1600;}
\DoxyCodeLine{params[0]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_u16,\ \ 0.0f,\ \ \ 1000.0f);}
\DoxyCodeLine{params[1]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_f,\ \ \ \ 0.001f,\ 0.1f);}
\DoxyCodeLine{params[2]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_u8,\ \ \ 10.0f,\ \ 100.0f);}
\DoxyCodeLine{params[3]\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}{PARAM\_SCALE}}(param\_i16,\ \ 500.0f,\ 5000.0f);}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{comment}{//\ Инициалиазция}}
\DoxyCodeLine{\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}{EvolveOptimizer\_Init}}(\&optimizer,\ N\_PARAMS,\ N\_CANDIDATES,\ N\_BEST,\ MUTATION,\ params);}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{comment}{//\ Шаг\ эволюции}}
\DoxyCodeLine{\textcolor{keywordtype}{float}\ loss\ =\ calc\_loss();\ \textcolor{comment}{//\ расчет\ эффективности\ параметров\ (от\ 0\ до\ 1)}}
\DoxyCodeLine{\mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}{EvolveOptimizer\_Step}}(\&optimizer,\ params,\ loss);}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{comment}{//\ Взятие\ следующих\ для\ эволюции\ параметров}}
\DoxyCodeLine{param\_u16\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[0],\ \ 0.0f,\ \ \ 1000.0f);}
\DoxyCodeLine{param\_f\ \ \ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[1],\ \ 0.001f,\ 0.1f);}
\DoxyCodeLine{param\_u8\ \ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[2],\ \ 10.0f,\ \ 100.0f);}
\DoxyCodeLine{param\_i16\ =\ \mbox{\hyperlink{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}{PARAM\_UNSCALE}}(params[3],\ \ 500.0f,\ 5000.0f);}

\end{DoxyCode}
 
\end{DoxyParagraph}


\label{doc-define-members}
\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_doc-define-members}
\doxysubsubsubsection{Macro Definition Documentation}
\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e}\index{Evolve optimizer@{Evolve optimizer}!PARAM\_SCALE@{PARAM\_SCALE}}
\index{PARAM\_SCALE@{PARAM\_SCALE}!Evolve optimizer@{Evolve optimizer}}
\doxysubsubsubsubsection{\texorpdfstring{PARAM\_SCALE}{PARAM\_SCALE}}
{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga83abbcabaff9111c03ae2475ee72ea3e} 
\#define PARAM\+\_\+\+SCALE(\begin{DoxyParamCaption}\item[{}]{x}{, }\item[{}]{min\+\_\+val}{, }\item[{}]{max\+\_\+val}{}\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{(((float)(x)\ -\/\ (float)(min\_val))\ /\ ((float)(max\_val)\ -\/\ (float)(min\_val)))}

\end{DoxyCode}


Линейное масштабирование x из диапазона \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]} в диапазон \mbox{[}0, 1) 



Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00073}{73}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.

\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3}\index{Evolve optimizer@{Evolve optimizer}!PARAM\_UNSCALE@{PARAM\_UNSCALE}}
\index{PARAM\_UNSCALE@{PARAM\_UNSCALE}!Evolve optimizer@{Evolve optimizer}}
\doxysubsubsubsubsection{\texorpdfstring{PARAM\_UNSCALE}{PARAM\_UNSCALE}}
{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaa1d5510fe5f0bd989473f3ebe324bde3} 
\#define PARAM\+\_\+\+UNSCALE(\begin{DoxyParamCaption}\item[{}]{val}{, }\item[{}]{min\+\_\+val}{, }\item[{}]{max\+\_\+val}{}\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{(((float)(val))\ *\ ((float)(max\_val)\ -\/\ (float)(min\_val))\ +\ (float)(min\_val))}

\end{DoxyCode}


Обратное линейное масштабирование значения из \mbox{[}0, 1) в диапазон \mbox{[}min\+\_\+val, max\+\_\+val\mbox{]}. 



Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00079}{79}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.

\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6}\index{Evolve optimizer@{Evolve optimizer}!EVOLVE\_MUTATION\_MIN\_PCT@{EVOLVE\_MUTATION\_MIN\_PCT}}
\index{EVOLVE\_MUTATION\_MIN\_PCT@{EVOLVE\_MUTATION\_MIN\_PCT}!Evolve optimizer@{Evolve optimizer}}
\doxysubsubsubsubsection{\texorpdfstring{EVOLVE\_MUTATION\_MIN\_PCT}{EVOLVE\_MUTATION\_MIN\_PCT}}
{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga2f2b1be34ad4eb1bf3267237200cd6c6} 
\#define EVOLVE\+\_\+\+MUTATION\+\_\+\+MIN\+\_\+\+PCT~10}



Минимальная мутация (в процентах от Loss) 



Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00089}{89}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.

\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc}\index{Evolve optimizer@{Evolve optimizer}!EVOLVE\_MUTATION\_MAX\_PCT@{EVOLVE\_MUTATION\_MAX\_PCT}}
\index{EVOLVE\_MUTATION\_MAX\_PCT@{EVOLVE\_MUTATION\_MAX\_PCT}!Evolve optimizer@{Evolve optimizer}}
\doxysubsubsubsubsection{\texorpdfstring{EVOLVE\_MUTATION\_MAX\_PCT}{EVOLVE\_MUTATION\_MAX\_PCT}}
{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga861c1c6a503c21441abcec0d57b848bc} 
\#define EVOLVE\+\_\+\+MUTATION\+\_\+\+MAX\+\_\+\+PCT~100}



Максимальная мутация (в процентах от Loss) 



Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00092}{92}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.

\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb}\index{Evolve optimizer@{Evolve optimizer}!ELOVLE\_N\_ELITE\_CANDIDATE@{ELOVLE\_N\_ELITE\_CANDIDATE}}
\index{ELOVLE\_N\_ELITE\_CANDIDATE@{ELOVLE\_N\_ELITE\_CANDIDATE}!Evolve optimizer@{Evolve optimizer}}
\doxysubsubsubsubsection{\texorpdfstring{ELOVLE\_N\_ELITE\_CANDIDATE}{ELOVLE\_N\_ELITE\_CANDIDATE}}
{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga38607e23d9234524bc7de5869b15b8eb} 
\#define ELOVLE\+\_\+\+N\+\_\+\+ELITE\+\_\+\+CANDIDATE~2}



Количество кандидатов, которые проходят в поколение без изменений (по умолчанию 2) 



Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00095}{95}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.



\label{doc-func-members}
\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_doc-func-members}
\doxysubsubsubsection{Function Documentation}
\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21}\index{Evolve optimizer@{Evolve optimizer}!EvolveOptimizer\_Init@{EvolveOptimizer\_Init}}
\index{EvolveOptimizer\_Init@{EvolveOptimizer\_Init}!Evolve optimizer@{Evolve optimizer}}
\doxysubsubsubsubsection{\texorpdfstring{EvolveOptimizer\_Init()}{EvolveOptimizer\_Init()}}
{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_ga4e3ea118b5b9068619c57724a925ba21} 
\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int Evolve\+Optimizer\+\_\+\+Init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}}]{opt}{, }\item[{uint16\+\_\+t}]{n\+\_\+params}{, }\item[{uint16\+\_\+t}]{n\+\_\+cand}{, }\item[{uint16\+\_\+t}]{n\+\_\+best}{, }\item[{float}]{mutation\+\_\+amp}{, }\item[{float \texorpdfstring{$\ast$}{*}}]{start\+\_\+params}{}\end{DoxyParamCaption})}



Инициализация эволюционного оптимизатора. 


\begin{DoxyParams}{Parameters}
{\em opt} & Указатель на структуру оптимизатора \\
\hline
{\em n\+\_\+params} & Количество параметров в одном кандидате \\
\hline
{\em n\+\_\+cand} & Количество кандидатов \\
\hline
{\em n\+\_\+best} & Количество лучших, усредняемых \\
\hline
{\em mutation\+\_\+amp} & Амплитуда мутации (в диапазоне 0.\+0–1.0) \\
\hline
{\em start\+\_\+params} & Начальные параметры (в диапазоне 0.\+0–1.0) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 — если окей, -\/1 — если ошибка 
\end{DoxyReturn}


Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00155}{155}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.

\Hypertarget{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef}\index{Evolve optimizer@{Evolve optimizer}!EvolveOptimizer\_Step@{EvolveOptimizer\_Step}}
\index{EvolveOptimizer\_Step@{EvolveOptimizer\_Step}!Evolve optimizer@{Evolve optimizer}}
\doxysubsubsubsubsection{\texorpdfstring{EvolveOptimizer\_Step()}{EvolveOptimizer\_Step()}}
{\footnotesize\ttfamily \label{group___e_v_o_l_v_e___o_p_t_i_m_i_z_e_r_gaef44a1f3298514569cc2b396a92101ef} 
\+\_\+\+\_\+\+STATIC\+\_\+\+INLINE int Evolve\+Optimizer\+\_\+\+Step (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{struct_evolve_optimizer__t}{Evolve\+Optimizer\+\_\+t}} \texorpdfstring{$\ast$}{*}}]{opt}{, }\item[{float \texorpdfstring{$\ast$}{*}}]{params}{, }\item[{float}]{loss}{}\end{DoxyParamCaption})}



Один шаг эволюционного оптимизатора. 


\begin{DoxyParams}{Parameters}
{\em opt} & Указатель на структуру оптимизатора \\
\hline
{\em params} & Массив параметров, которые будут обновлены (на выходе — новые параметры) \\
\hline
{\em loss} & Loss текущего кандидата \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 — если окей, -\/1 — если ошибка
\end{DoxyReturn}
Сохраняет loss текущего кандидата и формирует параметры следующего кандидата. Если накоплено n\+\_\+cand кандидатов, генерируется новое поколение. Новое поколение формируется случайным выбором из n\+\_\+best лучших с добавлением мутации.

На выходе params содержит параметры следующего кандидата для измерений. \begin{DoxyNote}{Note}
Функция использует глобальную внутреннюю переменную для сортировки. Надо убедится что только один экземпляр функции запущен в момент времени 
\end{DoxyNote}


Definition at line \mbox{\hyperlink{evolve__optimizer_8h_source_l00225}{225}} of file \mbox{\hyperlink{evolve__optimizer_8h_source}{evolve\+\_\+optimizer.\+h}}.

