\hypertarget{classeo_eval_i_o_hsuite}{}\doxysection{eo\+Eval\+I\+O\+Hsuite$<$ E\+OT, S\+U\+B\+E\+OT, S\+T\+AT $>$ Class Template Reference} \label{classeo_eval_i_o_hsuite}\index{eoEvalIOHsuite$<$ EOT, SUBEOT, STAT $>$@{eoEvalIOHsuite$<$ EOT, SUBEOT, STAT $>$}} {\ttfamily \#include $<$eo\+Eval\+I\+O\+H.\+h$>$} Inheritance diagram for eo\+Eval\+I\+O\+Hsuite$<$ E\+OT, S\+U\+B\+E\+OT, S\+T\+AT $>$\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=298pt]{classeo_eval_i_o_hsuite__inherit__graph} \end{center} \end{figure} Collaboration diagram for eo\+Eval\+I\+O\+Hsuite$<$ E\+OT, S\+U\+B\+E\+OT, S\+T\+AT $>$\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{classeo_eval_i_o_hsuite__coll__graph} \end{center} \end{figure} \doxysubsection*{Public Types} \begin{DoxyCompactItemize} \item \mbox{\Hypertarget{classeo_eval_i_o_hsuite_a1be5a3694b7da071aaf40513ace2130d}\label{classeo_eval_i_o_hsuite_a1be5a3694b7da071aaf40513ace2130d}} using {\bfseries Fitness} = typename E\+O\+T\+::\+Fitness \item \mbox{\Hypertarget{classeo_eval_i_o_hsuite_a47c49b309b581c6cd349897748d86cc8}\label{classeo_eval_i_o_hsuite_a47c49b309b581c6cd349897748d86cc8}} using {\bfseries Scalar\+Type} = typename Fitness\+::\+Scalar\+Type \item \mbox{\Hypertarget{classeo_eval_i_o_hsuite_a34919d04c85839e934443b12ab3ebe44}\label{classeo_eval_i_o_hsuite_a34919d04c85839e934443b12ab3ebe44}} using {\bfseries Sub\+Atom\+Type} = typename S\+U\+B\+E\+O\+T\+::\+Atom\+Type \end{DoxyCompactItemize} \doxysubsection*{Public Member Functions} \begin{DoxyCompactItemize} \item \mbox{\hyperlink{classeo_eval_i_o_hsuite_ae025865e85f57f99f26736e8e871a7c6}{eo\+Eval\+I\+O\+Hsuite}} (\mbox{\hyperlink{classeo_eval_i_o_hproblem}{eo\+Eval\+I\+O\+Hproblem}}$<$ S\+U\+B\+E\+OT $>$ \&eval, \mbox{\hyperlink{classeo_algo_foundry}{eo\+Algo\+Foundry}}$<$ S\+U\+B\+E\+OT $>$ \&foundry, \mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ S\+U\+B\+E\+OT $>$ \&pop, \mbox{\hyperlink{classeo_i_o_h_setup}{eo\+I\+O\+H\+Setup}}$<$ S\+U\+B\+E\+OT $>$ \&setup, I\+O\+Hprofiler\+\_\+suite$<$ Sub\+Atom\+Type $>$ \&\mbox{\hyperlink{classeo_eval_i_o_hsuite_adc459f579863644dea791b9013241ba7}{suite}}, I\+O\+Hprofiler\+\_\+ecdf\+\_\+logger$<$ Sub\+Atom\+Type $>$ \&log, I\+O\+Hprofiler\+\_\+ecdf\+\_\+stat$<$ S\+T\+AT $>$ \&stat) \item \mbox{\Hypertarget{classeo_eval_i_o_hsuite_ac427f0be8d654f01d175cf883453b6b6}\label{classeo_eval_i_o_hsuite_ac427f0be8d654f01d175cf883453b6b6}} virtual void \mbox{\hyperlink{classeo_eval_i_o_hsuite_ac427f0be8d654f01d175cf883453b6b6}{operator()}} (\mbox{\hyperlink{struct_dummy}{E\+OT}} \&sol) \begin{DoxyCompactList}\small\item\em The pure virtual function that needs to be implemented by the subclass. \end{DoxyCompactList}\item void \mbox{\hyperlink{classeo_eval_i_o_hsuite_adc459f579863644dea791b9013241ba7}{suite}} (I\+O\+Hprofiler\+\_\+suite$<$ Sub\+Atom\+Type $>$ \&suite) \end{DoxyCompactItemize} \doxysubsection*{Protected Member Functions} \begin{DoxyCompactItemize} \item \mbox{\Hypertarget{classeo_eval_i_o_hsuite_a2a55804ffe9b96e4e571f6ce1a17fd05}\label{classeo_eval_i_o_hsuite_a2a55804ffe9b96e4e571f6ce1a17fd05}} virtual Fitness {\bfseries call} (\mbox{\hyperlink{struct_dummy}{E\+OT}} \&sol) \end{DoxyCompactItemize} \doxysubsection*{Protected Attributes} \begin{DoxyCompactItemize} \item \mbox{\Hypertarget{classeo_eval_i_o_hsuite_ad10b67bcf2bec8c5cce6688a0822a1a1}\label{classeo_eval_i_o_hsuite_ad10b67bcf2bec8c5cce6688a0822a1a1}} \mbox{\hyperlink{classeo_eval_i_o_hproblem}{eo\+Eval\+I\+O\+Hproblem}}$<$ S\+U\+B\+E\+OT $>$ \& {\bfseries \+\_\+eval} \item \mbox{\Hypertarget{classeo_eval_i_o_hsuite_a25bc305baa5423e7c531a0cf844cdfc1}\label{classeo_eval_i_o_hsuite_a25bc305baa5423e7c531a0cf844cdfc1}} \mbox{\hyperlink{classeo_algo_foundry}{eo\+Algo\+Foundry}}$<$ S\+U\+B\+E\+OT $>$ \& {\bfseries \+\_\+foundry} \item \mbox{\Hypertarget{classeo_eval_i_o_hsuite_a29df4d1ac4b9143283380c1e822f9b45}\label{classeo_eval_i_o_hsuite_a29df4d1ac4b9143283380c1e822f9b45}} \mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ S\+U\+B\+E\+OT $>$ \& {\bfseries \+\_\+pop} \item \mbox{\Hypertarget{classeo_eval_i_o_hsuite_abe88c78df694e94309a74c9836f0d6ca}\label{classeo_eval_i_o_hsuite_abe88c78df694e94309a74c9836f0d6ca}} \mbox{\hyperlink{classeo_i_o_h_setup}{eo\+I\+O\+H\+Setup}}$<$ S\+U\+B\+E\+OT $>$ \& {\bfseries \+\_\+setup} \item \mbox{\Hypertarget{classeo_eval_i_o_hsuite_acd4adf15919cc671f5dcf3fe9a0aa23c}\label{classeo_eval_i_o_hsuite_acd4adf15919cc671f5dcf3fe9a0aa23c}} I\+O\+Hprofiler\+\_\+suite$<$ Sub\+Atom\+Type $>$ $\ast$ {\bfseries \+\_\+ioh\+\_\+suite} \item \mbox{\Hypertarget{classeo_eval_i_o_hsuite_a9fca67cf0b0cf018385fb3ac3cefc190}\label{classeo_eval_i_o_hsuite_a9fca67cf0b0cf018385fb3ac3cefc190}} I\+O\+Hprofiler\+\_\+ecdf\+\_\+logger$<$ Sub\+Atom\+Type $>$ \& {\bfseries \+\_\+ioh\+\_\+log} \item \mbox{\Hypertarget{classeo_eval_i_o_hsuite_a6d2304eee9d8c09aa1de60103fbfe3d3}\label{classeo_eval_i_o_hsuite_a6d2304eee9d8c09aa1de60103fbfe3d3}} I\+O\+Hprofiler\+\_\+ecdf\+\_\+stat$<$ S\+T\+AT $>$ \& {\bfseries \+\_\+ioh\+\_\+stat} \end{DoxyCompactItemize} \doxysubsection*{Additional Inherited Members} \doxysubsection{Detailed Description} \subsubsection*{template$<$class E\+OT, class S\+U\+B\+E\+OT, class S\+T\+AT$>$\newline class eo\+Eval\+I\+O\+Hsuite$<$ E\+O\+T, S\+U\+B\+E\+O\+T, S\+T\+A\+T $>$} Wrap an I\+O\+Hexperimenter\textquotesingle{}s suite class within an \mbox{\hyperlink{classeo_eval_func}{eo\+Eval\+Func}}. Useful for algorithm selection. The idea is to run the given algorithm on a whole suite of problems and output its aggregated performance. See \href{https://github.com/IOHprofiler/IOHexperimenter}{\texttt{ https\+://github.\+com/\+I\+O\+Hprofiler/\+I\+O\+Hexperimenter}} The main template E\+OT defines the interface of this functor, that is how the algorithm instance is encoded (e.\+g. an \mbox{\hyperlink{classeo_algo_foundry}{eo\+Algo\+Foundry}}\textquotesingle{}s integer vector). The S\+U\+B\+E\+OT template defines the encoding of the sub-\/problem, which the encoded algorithm have to solve (e.\+g. a One\+Max problem). \begin{DoxyNote}{Note} \+: This will not reset the given pop between two calls of the given algorithm on new problems. You most probably want to wrap your algorithm in an \mbox{\hyperlink{classeo_algo_restart}{eo\+Algo\+Restart}} to do that for you. \end{DoxyNote} Handle only I\+O\+Hprofiler {\ttfamily stat} classes which template type S\+T\+AT is explicitely convertible to the given fitness. Any scalar is most probably already convertible, but compound classes (i.\+e. for multi-\/objective problems) are most probàbly not. \begin{DoxyNote}{Note} \+: You\textquotesingle{}re responsible of adding a conversion operator to the given S\+T\+AT type, if necessary (this is checked by a static assert in the constructor). \+: You\textquotesingle{}re also responsible of matching the fitness\textquotesingle{} encoding scalar type (I\+OH handle double and int, as of 2020-\/03-\/09). \end{DoxyNote} You will need to pass the I\+OH include directory to your compiler (e.\+g. I\+O\+Hexperimenter/build/\+Cpp/src/). \doxysubsection{Constructor \& Destructor Documentation} \mbox{\Hypertarget{classeo_eval_i_o_hsuite_ae025865e85f57f99f26736e8e871a7c6}\label{classeo_eval_i_o_hsuite_ae025865e85f57f99f26736e8e871a7c6}} \index{eoEvalIOHsuite$<$ EOT, SUBEOT, STAT $>$@{eoEvalIOHsuite$<$ EOT, SUBEOT, STAT $>$}!eoEvalIOHsuite@{eoEvalIOHsuite}} \index{eoEvalIOHsuite@{eoEvalIOHsuite}!eoEvalIOHsuite$<$ EOT, SUBEOT, STAT $>$@{eoEvalIOHsuite$<$ EOT, SUBEOT, STAT $>$}} \doxysubsubsection{\texorpdfstring{eoEvalIOHsuite()}{eoEvalIOHsuite()}} {\footnotesize\ttfamily template$<$class E\+OT , class S\+U\+B\+E\+OT , class S\+T\+AT $>$ \\ \mbox{\hyperlink{classeo_eval_i_o_hsuite}{eo\+Eval\+I\+O\+Hsuite}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, S\+U\+B\+E\+OT, S\+T\+AT $>$\+::\mbox{\hyperlink{classeo_eval_i_o_hsuite}{eo\+Eval\+I\+O\+Hsuite}} (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classeo_eval_i_o_hproblem}{eo\+Eval\+I\+O\+Hproblem}}$<$ S\+U\+B\+E\+OT $>$ \&}]{eval, }\item[{\mbox{\hyperlink{classeo_algo_foundry}{eo\+Algo\+Foundry}}$<$ S\+U\+B\+E\+OT $>$ \&}]{foundry, }\item[{\mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ S\+U\+B\+E\+OT $>$ \&}]{pop, }\item[{\mbox{\hyperlink{classeo_i_o_h_setup}{eo\+I\+O\+H\+Setup}}$<$ S\+U\+B\+E\+OT $>$ \&}]{setup, }\item[{I\+O\+Hprofiler\+\_\+suite$<$ Sub\+Atom\+Type $>$ \&}]{suite, }\item[{I\+O\+Hprofiler\+\_\+ecdf\+\_\+logger$<$ Sub\+Atom\+Type $>$ \&}]{log, }\item[{I\+O\+Hprofiler\+\_\+ecdf\+\_\+stat$<$ S\+T\+AT $>$ \&}]{stat }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} Takes an ecdf\+\_\+logger that computes the base data structure on which a ecdf\+\_\+stat will be called to compute an aggregated performance measure, which will be the evaluated fitness. As such, the logger and the stat are mandatory. \begin{DoxyNote}{Note} \+: The given logger should be at least embedded in the logger thas is bound with the given eval. \end{DoxyNote} \doxysubsection{Member Function Documentation} \mbox{\Hypertarget{classeo_eval_i_o_hsuite_adc459f579863644dea791b9013241ba7}\label{classeo_eval_i_o_hsuite_adc459f579863644dea791b9013241ba7}} \index{eoEvalIOHsuite$<$ EOT, SUBEOT, STAT $>$@{eoEvalIOHsuite$<$ EOT, SUBEOT, STAT $>$}!suite@{suite}} \index{suite@{suite}!eoEvalIOHsuite$<$ EOT, SUBEOT, STAT $>$@{eoEvalIOHsuite$<$ EOT, SUBEOT, STAT $>$}} \doxysubsubsection{\texorpdfstring{suite()}{suite()}} {\footnotesize\ttfamily template$<$class E\+OT , class S\+U\+B\+E\+OT , class S\+T\+AT $>$ \\ void \mbox{\hyperlink{classeo_eval_i_o_hsuite}{eo\+Eval\+I\+O\+Hsuite}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, S\+U\+B\+E\+OT, S\+T\+AT $>$\+::suite (\begin{DoxyParamCaption}\item[{I\+O\+Hprofiler\+\_\+suite$<$ Sub\+Atom\+Type $>$ \&}]{suite }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} Update the suite pointer for a new one. This is useful if you assembled a Paradis\+EO algorithm and call it several time in an I\+O\+Hexperimenter\textquotesingle{}s loop across several suites. Instead of re-\/assembling your algorithm, just update the suite pointer. The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} \item problems/eval/eo\+Eval\+I\+O\+H.\+h\end{DoxyCompactItemize}