TODO: Compare current implementation with this pseudocode:
\section{Pseudcodes for Nontopology Optimization}
\begin{algorithm}
\DontPrintSemicolon
\KwIn{The current network $annNetwork$ with parameter vector $\vartheta$; the optimization type $type$.}
\KwOut{The current network, with optimized non-topology parameters in $\vartheta$.}
score_epsilon $\gets 0.01$;
max_rounds_slow $\gets 2$;
act_rounds_slow $\gets 0$;
got_better_slow $\gets$ True;
\While{got_better_slow \textbf{and} act_rounds_slow $<$ max_rounds_slow}{
score_slow_before $\gets$ scoreNetwork(annNetwork);
got_better_slow $\gets$ False;
do_brlen_opt $\gets$ True;
do_model_opt $\gets$ True;
do_reticulation_opt $\gets$ True;
got_better $\gets$ True;
\While{got_better}{
got_better $\gets$ False;
score_before $\gets$ scoreNetwork(annNetwork);
\If{do_model_opt}{
score_before_modelopt $\gets$ scoreNetwork(annNetwork);
optimizeModel(annNetwork);
score_after_modelopt $\gets$ scoreNetwork(annNetwork);
\If{score_before_modelopt - score_after_modelopt $<$ score_epsilon}
{
do_model_opt $\gets$ False;
}
}
\If{do_brlen_opt}{
score_before_brlenopt $\gets$ scoreNetwork(annNetwork);
optimizeBranches(annNetwork);
score_after_brlenopt $\gets$ scoreNetwork(annNetwork);
\If{score_before_brlenopt - score_after_brlenopt $<$ score_epsilon}
{
do_brlen_opt $\gets$ False;
}
}
\If{do_reticulation_opt}{
score_before_reticulation_opt $\gets$ scoreNetwork(annNetwork);
optimizeReticulations(annNetwork);
score_after_reticulation_opt $\gets$ scoreNetwork(annNetwork);
\If{score_before_reticulation_opt - score_after_reticulation_opt $>$ score_epsilon}
{
do_reticulation_opt $\gets$ False;
}
}
score_after $\gets$ scoreNetwork(annNetwork);
\If{score_before - score_after $>$ score_epsilon}
{
\If{type $\neq$ QUICK}
{
got_better $\gets$ True;
}
}
}
score_slow_after $\gets$ scoreNetwork(annNetwork);
\If{score_before - score_after $>$ score_epsilon \textbf{and} type = SLOW}{
got_better_slow $\gets$ True;
}
act_rounds_slow += 1;
}
\Return{annNetwork};
\caption{optimizeNonTopology: Optimize all non-topology parameters.}
\label{alg:nontopology_opt}
\end{algorithm}
TODO: Compare current implementation with this pseudocode:
\section{Pseudcodes for Nontopology Optimization}
\begin{algorithm}$annNetwork$ with parameter vector $\vartheta$ ; the optimization type $type$ .}$\vartheta$ .}$\gets 0.01$ ;$\gets 2$ ;$\gets 0$ ;$\gets$ True;$<$ max_rounds_slow}{$\gets$ scoreNetwork(annNetwork);$\gets$ False;$\gets$ True;$\gets$ True;$\gets$ True;$\gets$ True;$\gets$ False;$\gets$ scoreNetwork(annNetwork);$\gets$ scoreNetwork(annNetwork);$\gets$ scoreNetwork(annNetwork);$<$ score_epsilon}$\gets$ False;$\gets$ scoreNetwork(annNetwork);$\gets$ scoreNetwork(annNetwork);$<$ score_epsilon}$\gets$ False;$\gets$ scoreNetwork(annNetwork);$\gets$ scoreNetwork(annNetwork);$>$ score_epsilon}$\gets$ False;$\gets$ scoreNetwork(annNetwork);$>$ score_epsilon}$\neq$ QUICK}$\gets$ True;$\gets$ scoreNetwork(annNetwork);$>$ score_epsilon \textbf{and} type = SLOW}{$\gets$ True;
\DontPrintSemicolon
\KwIn{The current network
\KwOut{The current network, with optimized non-topology parameters in
score_epsilon
max_rounds_slow
act_rounds_slow
got_better_slow
\While{got_better_slow \textbf{and} act_rounds_slow
score_slow_before
got_better_slow
do_brlen_opt
do_model_opt
do_reticulation_opt
got_better
\While{got_better}{
got_better
score_before
\If{do_model_opt}{
score_before_modelopt
optimizeModel(annNetwork);
score_after_modelopt
\If{score_before_modelopt - score_after_modelopt
{
do_model_opt
}
}
\If{do_brlen_opt}{
score_before_brlenopt
optimizeBranches(annNetwork);
score_after_brlenopt
\If{score_before_brlenopt - score_after_brlenopt
{
do_brlen_opt
}
}
\If{do_reticulation_opt}{
score_before_reticulation_opt
optimizeReticulations(annNetwork);
score_after_reticulation_opt
\If{score_before_reticulation_opt - score_after_reticulation_opt
{
do_reticulation_opt
}
}
score_after
\If{score_before - score_after
{
\If{type
{
got_better
}
}
}
score_slow_after
\If{score_before - score_after
got_better_slow
}
act_rounds_slow += 1;
}
\Return{annNetwork};
\caption{optimizeNonTopology: Optimize all non-topology parameters.}
\label{alg:nontopology_opt}
\end{algorithm}