Skip to content

Commit db89c6b

Browse files
committed
updated user manual: derivative check and elastic-relaxfixed-perturbbnds
1 parent b43e0b3 commit db89c6b

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

doc/src/sections/solver_options.tex

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -169,13 +169,14 @@ \subsubsection{Feasibility restoration}
169169
170170
\subsubsection{Elastic mode}
171171
172-
\noindent \textbf{elastic\_mode}: type of elastic mode used within \Hi:
172+
\noindent \textbf{elastic\_mode}: this is an advanced option that is not supported by all solvers. It dynamically perturbs bounds and inequalities (similar to \textit{bound\_relax\_perturb}): the initial bound perturbation is controlled by \textit{elastic\_mode\_bound\_relax\_initial} and reduced throughout the optimization iterations to be \textit{elastic\_mode\_bound\_relax\_final} at the final solution. Possible values are
173173
\begin{itemize}
174174
\item ``none'' (default): does not apply elastic mode;
175175
\item ``tighten\_bound '': tightens the bounds when $\mu$ changes.
176176
\item ``correct\_it'': tightens the bounds, and corrects the slacks and slack duals when $\mu$ changes.
177177
\item ``correct\_it\_adjust\_bound'': tightens the bounds, corrects the slacks and slack duals, and adjusts the bounds again from the modified iterate when $\mu$ changes.
178178
\end{itemize}
179+
Options \textit{fixed\_var\_perturb} and \textit{bound\_relax\_perturb} are ignored when this option set to a value other than ``none''.
179180
\medskip
180181
181182
\noindent \textbf{elastic\_bound\_strategy}: Strategy used to tighen the bounds, when $\mu$ changes:
@@ -374,6 +375,7 @@ \subsubsection{Problem preprocessing}
374375
\item ``relax'': relax the fixed variables accordingly to ``fixed\_var\_perturb'' option below;
375376
\item ``'remove'': remove variables from the (internal) NLP formulation.
376377
\end{itemize}
378+
When treatment of fixed variables is relaxed, the relaxation is controlled by one of the options \textit{fixed\_var\_perturb}, \textit{bound\_relax\_perturb}, or \textit{elastic\_mode}.
377379
\medskip
378380
379381
\noindent \textbf{fixed\_var\_tolerance}: a variable (say the $i$th) is considered fixed if
@@ -388,15 +390,15 @@ \subsubsection{Problem preprocessing}
388390
(x_l)_i & = (x_l)_i - \max(|(x_u)_i|,1) \times \textnormal{fixed\_var\_perturb}, \\
389391
(x_u)_i & = (x_u)_i + \max(|(x_u)_i|,1) \times \textnormal{fixed\_var\_perturb}.
390392
\end{align*}
391-
This option takes double values in $[10^{-14}, 0.1]$ and has a default value $10^{-8}$.
393+
This option takes double values in $[10^{-14}, 0.1]$ and has a default value $10^{-8}$. This option is ignored when option \textit{bound\_relax\_perturb} has a nonzero value or option \textit{elastic\_mode} is not ``none''.
392394
\medskip
393395
394-
\noindent \textbf{bound\_relax\_perturb}: perturbation of the lower and upper bounds for all variables and all constraints relative to their magnitude. A variable or constraint (say the $i$th) with lower and upper bounds $(x_l)_i$ and $(x_u)_i$, respectively, is ``relaxed'' accordingly to
396+
\noindent \textbf{bound\_relax\_perturb}: perturbation of the lower and upper bounds for all variables and all inequality constraints relative to their magnitude. A variable or constraint (say the $i$th) with lower and upper bounds $(x_l)_i$ and $(x_u)_i$, respectively, is ``relaxed'' accordingly to
395397
\begin{align*}
396398
(x_l)_i & = (x_l)_i - \max(|(x_l)_i|,1) \times \textnormal{bound\_relax\_perturb}, \\
397399
(x_u)_i & = (x_u)_i + \max(|(x_u)_i|,1) \times \textnormal{bound\_relax\_perturb}.
398400
\end{align*}
399-
This option takes double values in $[0, 10^{20}]$ and has a default value $10^{-8}$.
401+
This option takes double values in $[0, 10^{20}]$ and has a default value $10^{-8}$. A nonzero value for this option will cause \textit{fixed\_var\_perturb} to be ignored and all fixed variables will be relaxed accordingly to the value of this option. This option is ignored when option \textit{elastic\_mode} is set to a value other than ``none''.
400402
\medskip
401403
402404
%%%% scaling
@@ -449,6 +451,20 @@ \subsubsection{Miscellaneous options}
449451
\noindent \textbf{time\_kkt}: string option with ``on'' or ``off'' values deciding whether \Hi turns on/off performance timers and reporting of the computational constituents of the KKT solve process. Default value: ``off''.
450452
\medskip
451453
454+
\noindent \textbf{derivative\_check}: string option with ``no'' or ``first-order'' values that can be used to check user-provided derivatives using finite differences and to report comparison. Default value: ``no''. Remark that only first-order derivatives are supported (objective gradient and constraints Jacobian).
455+
\medskip
456+
457+
\noindent \textbf{derivative\_check\_perturbation}: Numeric option (range $[10^{-20}, 10^{3}]$, default $10^{-8}$) that controls the finite difference perturbation of each variables, relative to variable's value.
458+
\medskip
459+
460+
\noindent \textbf{derivative\_check\_tolerance}: Numeric option (range $[10^{-20}, 10^{3}]$, default $10^{-4}$) controlling tolerance for marking a mismatch between user-provided derivative and finite difference, relative to magnitude of derivative value provided by the user.
461+
\medskip
462+
463+
\noindent \textbf{derivative\_check\_print\_all}: String option with values ``no'' (default) and ``yes'' indicating that whether to print the comparison of provided derivatives and finite difference approximation for mismatching or for all derivative entries only, respectively.
464+
465+
466+
\medskip
467+
452468
453469
454470

0 commit comments

Comments
 (0)