\latexhtml{}{
\HCode{
<table border="1">
<tr>
<td>Option </td>
<td> type </td>
<td> B-BB</td>
<td> B-OA</td>
<td> B-QG</td>
<td> B-Hyb</td>
</tr>
<tr>
<td> <a href="#sec:sb">sb</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:Barrier_Parameter_Update">Barrier Parameter Update</a> </th>
</tr>
<tr>
<td> <a href="#sec:adaptive_mu_globalization">adaptive_mu_globalization</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:adaptive_mu_kkt_norm_type">adaptive_mu_kkt_norm_type</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:adaptive_mu_kkterror_red_fact">adaptive_mu_kkterror_red_fact</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:adaptive_mu_kkterror_red_iters">adaptive_mu_kkterror_red_iters</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:adaptive_mu_monotone_init_factor">adaptive_mu_monotone_init_factor</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:adaptive_mu_restore_previous_iterate">adaptive_mu_restore_previous_iterate</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:barrier_tol_factor">barrier_tol_factor</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:filter_margin_fact">filter_margin_fact</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:filter_max_margin">filter_max_margin</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:fixed_mu_oracle">fixed_mu_oracle</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mu_allow_fast_monotone_decrease">mu_allow_fast_monotone_decrease</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mu_init">mu_init</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mu_linear_decrease_factor">mu_linear_decrease_factor</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mu_max">mu_max</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mu_max_fact">mu_max_fact</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mu_min">mu_min</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mu_oracle">mu_oracle</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mu_strategy">mu_strategy</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mu_superlinear_decrease_power">mu_superlinear_decrease_power</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:quality_function_balancing_term">quality_function_balancing_term</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:quality_function_centrality">quality_function_centrality</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:quality_function_max_section_steps">quality_function_max_section_steps</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:quality_function_norm_type">quality_function_norm_type</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:quality_function_section_qf_tol">quality_function_section_qf_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:quality_function_section_sigma_tol">quality_function_section_sigma_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:sigma_max">sigma_max</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:sigma_min">sigma_min</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:tau_min">tau_min</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:Convergence">Convergence</a> </th>
</tr>
<tr>
<td> <a href="#sec:acceptable_compl_inf_tol">acceptable_compl_inf_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:acceptable_constr_viol_tol">acceptable_constr_viol_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:acceptable_dual_inf_tol">acceptable_dual_inf_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:acceptable_iter">acceptable_iter</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:acceptable_obj_change_tol">acceptable_obj_change_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:acceptable_tol">acceptable_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:compl_inf_tol">compl_inf_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:constr_viol_tol">constr_viol_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:diverging_iterates_tol">diverging_iterates_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:dual_inf_tol">dual_inf_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:max_cpu_time">max_cpu_time</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:max_iter">max_iter</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mu_target">mu_target</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:s_max">s_max</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:tol">tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:Derivative_Checker">Derivative Checker</a> </th>
</tr>
<tr>
<td> <a href="#sec:derivative_test">derivative_test</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:derivative_test_first_index">derivative_test_first_index</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:derivative_test_perturbation">derivative_test_perturbation</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:derivative_test_print_all">derivative_test_print_all</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:derivative_test_tol">derivative_test_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:findiff_perturbation">findiff_perturbation</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:jacobian_approximation">jacobian_approximation</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:point_perturbation_radius">point_perturbation_radius</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:Hessian_Approximation">Hessian Approximation</a> </th>
</tr>
<tr>
<td> <a href="#sec:hessian_approximation">hessian_approximation</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:hessian_approximation_space">hessian_approximation_space</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:limited_memory_aug_solver">limited_memory_aug_solver</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:limited_memory_init_val">limited_memory_init_val</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:limited_memory_init_val_max">limited_memory_init_val_max</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:limited_memory_init_val_min">limited_memory_init_val_min</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:limited_memory_initialization">limited_memory_initialization</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:limited_memory_max_history">limited_memory_max_history</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:limited_memory_max_skipping">limited_memory_max_skipping</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:limited_memory_special_for_resto">limited_memory_special_for_resto</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:limited_memory_update_type">limited_memory_update_type</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:Initialization">Initialization</a> </th>
</tr>
<tr>
<td> <a href="#sec:bound_frac">bound_frac</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:bound_mult_init_method">bound_mult_init_method</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:bound_mult_init_val">bound_mult_init_val</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:bound_push">bound_push</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:constr_mult_init_max">constr_mult_init_max</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:least_square_init_duals">least_square_init_duals</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:least_square_init_primal">least_square_init_primal</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:slack_bound_frac">slack_bound_frac</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:slack_bound_push">slack_bound_push</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:Line_Search">Line Search</a> </th>
</tr>
<tr>
<td> <a href="#sec:accept_after_max_steps">accept_after_max_steps</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:accept_every_trial_step">accept_every_trial_step</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:alpha_for_y">alpha_for_y</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:alpha_for_y_tol">alpha_for_y_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:alpha_min_frac">alpha_min_frac</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:alpha_red_factor">alpha_red_factor</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:constraint_violation_norm_type">constraint_violation_norm_type</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:corrector_compl_avrg_red_fact">corrector_compl_avrg_red_fact</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:corrector_type">corrector_type</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:delta">delta</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:eta_phi">eta_phi</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:filter_reset_trigger">filter_reset_trigger</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:gamma_phi">gamma_phi</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:gamma_theta">gamma_theta</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:kappa_sigma">kappa_sigma</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:kappa_soc">kappa_soc</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:line_search_method">line_search_method</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:max_filter_resets">max_filter_resets</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:max_soc">max_soc</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:nu_inc">nu_inc</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:nu_init">nu_init</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:obj_max_inc">obj_max_inc</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:recalc_y">recalc_y</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:recalc_y_feas_tol">recalc_y_feas_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:rho">rho</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:s_phi">s_phi</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:s_theta">s_theta</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:skip_corr_if_neg_curv">skip_corr_if_neg_curv</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:skip_corr_in_monotone_mode">skip_corr_in_monotone_mode</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:slack_move">slack_move</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:theta_max_fact">theta_max_fact</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:theta_min_fact">theta_min_fact</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:tiny_step_tol">tiny_step_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:tiny_step_y_tol">tiny_step_y_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:watchdog_shortened_iter_trigger">watchdog_shortened_iter_trigger</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:watchdog_trial_iter_max">watchdog_trial_iter_max</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:Linear_Solver">Linear Solver</a> </th>
</tr>
<tr>
<td> <a href="#sec:linear_scaling_on_demand">linear_scaling_on_demand</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:linear_solver">linear_solver</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:linear_system_scaling">linear_system_scaling</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:MA27_Linear_Solver">MA27 Linear Solver</a> </th>
</tr>
<tr>
<td> <a href="#sec:ma27_ignore_singularity">ma27_ignore_singularity</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma27_la_init_factor">ma27_la_init_factor</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma27_liw_init_factor">ma27_liw_init_factor</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma27_meminc_factor">ma27_meminc_factor</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma27_pivtol">ma27_pivtol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma27_pivtolmax">ma27_pivtolmax</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma27_skip_inertia_check">ma27_skip_inertia_check</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:MA28_Linear_Solver">MA28 Linear Solver</a> </th>
</tr>
<tr>
<td> <a href="#sec:ma28_pivtol">ma28_pivtol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:MA57_Linear_Solver">MA57 Linear Solver</a> </th>
</tr>
<tr>
<td> <a href="#sec:ma57_automatic_scaling">ma57_automatic_scaling</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma57_block_size">ma57_block_size</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma57_node_amalgamation">ma57_node_amalgamation</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma57_pivot_order">ma57_pivot_order</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma57_pivtol">ma57_pivtol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma57_pivtolmax">ma57_pivtolmax</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma57_pre_alloc">ma57_pre_alloc</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma57_small_pivot_flag">ma57_small_pivot_flag</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:MA86_Linear_Solver">MA86 Linear Solver</a> </th>
</tr>
<tr>
<td> <a href="#sec:ma86_nemin">ma86_nemin</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma86_print_level">ma86_print_level</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma86_small">ma86_small</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma86_static">ma86_static</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma86_u">ma86_u</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:ma86_umax">ma86_umax</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:Mumps_Linear_Solver">Mumps Linear Solver</a> </th>
</tr>
<tr>
<td> <a href="#sec:mumps_dep_tol">mumps_dep_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mumps_mem_percent">mumps_mem_percent</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mumps_permuting_scaling">mumps_permuting_scaling</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mumps_pivot_order">mumps_pivot_order</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mumps_pivtol">mumps_pivtol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mumps_pivtolmax">mumps_pivtolmax</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mumps_scaling">mumps_scaling</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:NLP">NLP</a> </th>
</tr>
<tr>
<td> <a href="#sec:bound_relax_factor">bound_relax_factor</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:check_derivatives_for_naninf">check_derivatives_for_naninf</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:dependency_detection_with_rhs">dependency_detection_with_rhs</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:dependency_detector">dependency_detector</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:fixed_variable_treatment">fixed_variable_treatment</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:hessian_constant">hessian_constant</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:honor_original_bounds">honor_original_bounds</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:jac_c_constant">jac_c_constant</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:jac_d_constant">jac_d_constant</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:kappa_d">kappa_d</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:nlp_lower_bound_inf">nlp_lower_bound_inf</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:nlp_upper_bound_inf">nlp_upper_bound_inf</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:num_linear_variables">num_linear_variables</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:NLP_Scaling">NLP Scaling</a> </th>
</tr>
<tr>
<td> <a href="#sec:nlp_scaling_constr_target_gradient">nlp_scaling_constr_target_gradient</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:nlp_scaling_max_gradient">nlp_scaling_max_gradient</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:nlp_scaling_method">nlp_scaling_method</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:nlp_scaling_min_value">nlp_scaling_min_value</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:nlp_scaling_obj_target_gradient">nlp_scaling_obj_target_gradient</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:obj_scaling_factor">obj_scaling_factor</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:Output">Output</a> </th>
</tr>
<tr>
<td> <a href="#sec:file_print_level">file_print_level</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:inf_pr_output">inf_pr_output</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:option_file_name">option_file_name</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:output_file">output_file</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:print_info_string">print_info_string</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:print_level">print_level</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:print_options_documentation">print_options_documentation</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:print_timing_statistics">print_timing_statistics</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:print_user_options">print_user_options</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:replace_bounds">replace_bounds</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:skip_finalize_solution_call">skip_finalize_solution_call</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:Pardiso_Linear_Solver">Pardiso Linear Solver</a> </th>
</tr>
<tr>
<td> <a href="#sec:pardiso_iter_coarse_size">pardiso_iter_coarse_size</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pardiso_iter_dropping_factor">pardiso_iter_dropping_factor</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pardiso_iter_dropping_schur">pardiso_iter_dropping_schur</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pardiso_iter_inverse_norm_factor">pardiso_iter_inverse_norm_factor</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pardiso_iter_max_levels">pardiso_iter_max_levels</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pardiso_iter_max_row_fill">pardiso_iter_max_row_fill</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pardiso_iter_relative_tol">pardiso_iter_relative_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pardiso_iterative">pardiso_iterative</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pardiso_matching_strategy">pardiso_matching_strategy</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pardiso_max_droptol_corrections">pardiso_max_droptol_corrections</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pardiso_max_iter">pardiso_max_iter</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pardiso_msglvl">pardiso_msglvl</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pardiso_out_of_core_power">pardiso_out_of_core_power</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pardiso_redo_symbolic_fact_only_if_inertia_wrong">pardiso_redo_symbolic_fact_only_if_inertia_wrong</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pardiso_repeated_perturbation_means_singular">pardiso_repeated_perturbation_means_singular</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pardiso_skip_inertia_check">pardiso_skip_inertia_check</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:Restoration_Phase">Restoration Phase</a> </th>
</tr>
<tr>
<td> <a href="#sec:bound_mult_reset_threshold">bound_mult_reset_threshold</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:constr_mult_reset_threshold">constr_mult_reset_threshold</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:evaluate_orig_obj_at_resto_trial">evaluate_orig_obj_at_resto_trial</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:expect_infeasible_problem">expect_infeasible_problem</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:expect_infeasible_problem_ctol">expect_infeasible_problem_ctol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:expect_infeasible_problem_ytol">expect_infeasible_problem_ytol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:max_resto_iter">max_resto_iter</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:max_soft_resto_iters">max_soft_resto_iters</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:required_infeasibility_reduction">required_infeasibility_reduction</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:resto_failure_feasibility_threshold">resto_failure_feasibility_threshold</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:resto_penalty_parameter">resto_penalty_parameter</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:resto_proximity_weight">resto_proximity_weight</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:soft_resto_pderror_reduction_factor">soft_resto_pderror_reduction_factor</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:start_with_resto">start_with_resto</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:Step_Calculation">Step Calculation</a> </th>
</tr>
<tr>
<td> <a href="#sec:fast_step_computation">fast_step_computation</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:first_hessian_perturbation">first_hessian_perturbation</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:jacobian_regularization_exponent">jacobian_regularization_exponent</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:jacobian_regularization_value">jacobian_regularization_value</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:max_hessian_perturbation">max_hessian_perturbation</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:max_refinement_steps">max_refinement_steps</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mehrotra_algorithm">mehrotra_algorithm</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:min_hessian_perturbation">min_hessian_perturbation</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:min_refinement_steps">min_refinement_steps</a> </td>
<td>I</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:neg_curv_test_tol">neg_curv_test_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:perturb_always_cd">perturb_always_cd</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:perturb_dec_fact">perturb_dec_fact</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:perturb_inc_fact">perturb_inc_fact</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:perturb_inc_fact_first">perturb_inc_fact_first</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:residual_improvement_factor">residual_improvement_factor</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:residual_ratio_max">residual_ratio_max</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:residual_ratio_singular">residual_ratio_singular</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:Uncategorized">Uncategorized</a> </th>
</tr>
<tr>
<td> <a href="#sec:warm_start_target_mu">warm_start_target_mu</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:Undocumented">Undocumented</a> </th>
</tr>
<tr>
<td> <a href="#sec:adaptive_mu_safeguard_factor">adaptive_mu_safeguard_factor</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:chi_cup">chi_cup</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:chi_hat">chi_hat</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:chi_tilde">chi_tilde</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:delta_y_max">delta_y_max</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:epsilon_c">epsilon_c</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:eta_min">eta_min</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:eta_penalty">eta_penalty</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:fast_des_fact">fast_des_fact</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:gamma_hat">gamma_hat</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:gamma_tilde">gamma_tilde</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:kappa_x_dis">kappa_x_dis</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:kappa_y_dis">kappa_y_dis</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:magic_steps">magic_steps</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:min_alpha_primal">min_alpha_primal</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mult_diverg_feasibility_tol">mult_diverg_feasibility_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:mult_diverg_y_tol">mult_diverg_y_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:never_use_fact_cgpen_direction">never_use_fact_cgpen_direction</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:never_use_piecewise_penalty_ls">never_use_piecewise_penalty_ls</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pen_des_fact">pen_des_fact</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pen_init_fac">pen_init_fac</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:pen_theta_max_fact">pen_theta_max_fact</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:penalty_init_max">penalty_init_max</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:penalty_init_min">penalty_init_min</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:penalty_max">penalty_max</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:penalty_update_compl_tol">penalty_update_compl_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:penalty_update_infeasibility_tol">penalty_update_infeasibility_tol</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:piecewisepenalty_gamma_infeasi">piecewisepenalty_gamma_infeasi</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:piecewisepenalty_gamma_obj">piecewisepenalty_gamma_obj</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:print_options_latex_mode">print_options_latex_mode</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:suppress_all_output">suppress_all_output</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:theta_min">theta_min</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:vartheta">vartheta</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:wsmp_iterative">wsmp_iterative</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>   <th colspan=9> <a href="#sec:Warm_Start">Warm Start</a> </th>
</tr>
<tr>
<td> <a href="#sec:warm_start_bound_frac">warm_start_bound_frac</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:warm_start_bound_push">warm_start_bound_push</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:warm_start_entire_iterate">warm_start_entire_iterate</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:warm_start_init_point">warm_start_init_point</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:warm_start_mult_bound_push">warm_start_mult_bound_push</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:warm_start_mult_init_max">warm_start_mult_init_max</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:warm_start_same_structure">warm_start_same_structure</a> </td>
<td>S</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:warm_start_slack_bound_frac">warm_start_slack_bound_frac</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td> <a href="#sec:warm_start_slack_bound_push">warm_start_slack_bound_push</a> </td>
<td>F</td>
<td> +</td>
<td>+</td>
<td>+</td>
<td>+</td>
</tr>
</tr>
</table>
}
}
\htmlanchor{sec:sb}
\paragraph{sb:}\label{sec:sb}  $\;$ \\

The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: 
   \item yes: 
\end{itemize}

\subsection{Barrier Parameter Update}
\label{sec:Barrier_Parameter_Update}
\htmlanchor{sec:Barrier_Parameter_Update}
\htmlanchor{sec:adaptive_mu_globalization}
\paragraph{adaptive\_mu\_globalization:}\label{sec:adaptive_mu_globalization} Globalization strategy for the adaptive mu selection mode. $\;$ \\
 To achieve global convergence of the adaptive
version, the algorithm has to switch to the
monotone mode (Fiacco-McCormick approach) when
convergence does not seem to appear.  This option
sets the criterion used to decide when to do this
switch. (Only used if option "mu\_strategy" is
chosen as "adaptive".)
The default value for this string option is "obj-constr-filter".
\\ 
Possible values:
\begin{itemize}
   \item kkt-error: nonmonotone decrease of kkt-error
   \item obj-constr-filter: 2-dim filter for objective and constraint
violation
   \item never-monotone-mode: disables globalization
\end{itemize}

\htmlanchor{sec:adaptive_mu_kkt_norm_type}
\paragraph{adaptive\_mu\_kkt\_norm\_type:}\label{sec:adaptive_mu_kkt_norm_type} Norm used for the KKT error in the adaptive mu globalization strategies. $\;$ \\
 When computing the KKT error for the
globalization strategies, the norm to be used is
specified with this option. Note, this options is
also used in the QualityFunctionMuOracle.
The default value for this string option is "2-norm-squared".
\\ 
Possible values:
\begin{itemize}
   \item 1-norm: use the 1-norm (abs sum)
   \item 2-norm-squared: use the 2-norm squared (sum of squares)
   \item max-norm: use the infinity norm (max)
   \item 2-norm: use 2-norm
\end{itemize}

\htmlanchor{sec:adaptive_mu_kkterror_red_fact}
\paragraph{adaptive\_mu\_kkterror\_red\_fact:}\label{sec:adaptive_mu_kkterror_red_fact} Sufficient decrease factor for "kkt-error" globalization strategy. $\;$ \\
 For the "kkt-error" based globalization strategy,
the error must decrease by this factor to be
deemed sufficient decrease. The valid range for this real option is 
$0 <  {\tt adaptive\_mu\_kkterror\_red\_fact } <  1$
and its default value is $0.9999$.


\htmlanchor{sec:adaptive_mu_kkterror_red_iters}
\paragraph{adaptive\_mu\_kkterror\_red\_iters:}\label{sec:adaptive_mu_kkterror_red_iters} Maximum number of iterations requiring sufficient progress. $\;$ \\
 For the "kkt-error" based globalization strategy,
sufficient progress must be made for
"adaptive\_mu\_kkterror\_red\_iters" iterations.
If this number of iterations is exceeded, the
globalization strategy switches to the monotone
mode. The valid range for this integer option is
$0 \le {\tt adaptive\_mu\_kkterror\_red\_iters } <  {\tt +inf}$
and its default value is $4$.


\htmlanchor{sec:adaptive_mu_monotone_init_factor}
\paragraph{adaptive\_mu\_monotone\_init\_factor:}\label{sec:adaptive_mu_monotone_init_factor} Determines the initial value of the barrier parameter when switching to the monotone mode. $\;$ \\
 When the globalization strategy for the adaptive
barrier algorithm switches to the monotone mode
and fixed\_mu\_oracle is chosen as
"average\_compl", the barrier parameter is set to
the current average complementarity times the
value of "adaptive\_mu\_monotone\_init\_factor". The valid range for this real option is 
$0 <  {\tt adaptive\_mu\_monotone\_init\_factor } <  {\tt +inf}$
and its default value is $0.8$.


\htmlanchor{sec:adaptive_mu_restore_previous_iterate}
\paragraph{adaptive\_mu\_restore\_previous\_iterate:}\label{sec:adaptive_mu_restore_previous_iterate} Indicates if the previous iterate should be restored if the monotone mode is entered. $\;$ \\
 When the globalization strategy for the adaptive
barrier algorithm switches to the monotone mode,
it can either start from the most recent iterate
(no), or from the last iterate that was accepted
(yes).
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: don't restore accepted iterate
   \item yes: restore accepted iterate
\end{itemize}

\htmlanchor{sec:barrier_tol_factor}
\paragraph{barrier\_tol\_factor:}\label{sec:barrier_tol_factor} Factor for mu in barrier stop test. $\;$ \\
 The convergence tolerance for each barrier
problem in the monotone mode is the value of the
barrier parameter times "barrier\_tol\_factor".
This option is also used in the adaptive mu
strategy during the monotone mode. (This is
kappa\_epsilon in implementation paper). The valid range for this real option is 
$0 <  {\tt barrier\_tol\_factor } <  {\tt +inf}$
and its default value is $10$.


\htmlanchor{sec:filter_margin_fact}
\paragraph{filter\_margin\_fact:}\label{sec:filter_margin_fact} Factor determining width of margin for obj-constr-filter adaptive globalization strategy. $\;$ \\
 When using the adaptive globalization strategy,
"obj-constr-filter", sufficient progress for a
filter entry is defined as follows: (new obj) <
(filter obj) - filter\_margin\_fact*(new
constr-viol) OR (new constr-viol) < (filter
constr-viol) - filter\_margin\_fact*(new
constr-viol).  For the description of the
"kkt-error-filter" option see
"filter\_max\_margin". The valid range for this real option is 
$0 <  {\tt filter\_margin\_fact } <  1$
and its default value is $1 \cdot 10^{-05}$.


\htmlanchor{sec:filter_max_margin}
\paragraph{filter\_max\_margin:}\label{sec:filter_max_margin} Maximum width of margin in obj-constr-filter adaptive globalization strategy. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt filter\_max\_margin } <  {\tt +inf}$
and its default value is $1$.


\htmlanchor{sec:fixed_mu_oracle}
\paragraph{fixed\_mu\_oracle:}\label{sec:fixed_mu_oracle} Oracle for the barrier parameter when switching to fixed mode. $\;$ \\
 Determines how the first value of the barrier
parameter should be computed when switching to
the "monotone mode" in the adaptive strategy.
(Only considered if "adaptive" is selected for
option "mu\_strategy".)
The default value for this string option is "average\_compl".
\\ 
Possible values:
\begin{itemize}
   \item probing: Mehrotra's probing heuristic
   \item loqo: LOQO's centrality rule
   \item quality-function: minimize a quality function
   \item average\_compl: base on current average complementarity
\end{itemize}

\htmlanchor{sec:mu_allow_fast_monotone_decrease}
\paragraph{mu\_allow\_fast\_monotone\_decrease:}\label{sec:mu_allow_fast_monotone_decrease} Allow skipping of barrier problem if barrier test is already met. $\;$ \\
 If set to "no", the algorithm enforces at least
one iteration per barrier problem, even if the
barrier test is already met for the updated
barrier parameter.
The default value for this string option is "yes".
\\ 
Possible values:
\begin{itemize}
   \item no: Take at least one iteration per barrier problem
   \item yes: Allow fast decrease of mu if barrier test it met
\end{itemize}

\htmlanchor{sec:mu_init}
\paragraph{mu\_init:}\label{sec:mu_init} Initial value for the barrier parameter. $\;$ \\
 This option determines the initial value for the
barrier parameter (mu).  It is only relevant in
the monotone, Fiacco-McCormick version of the
algorithm. (i.e., if "mu\_strategy" is chosen as
"monotone") The valid range for this real option is 
$0 <  {\tt mu\_init } <  {\tt +inf}$
and its default value is $0.1$.


\htmlanchor{sec:mu_linear_decrease_factor}
\paragraph{mu\_linear\_decrease\_factor:}\label{sec:mu_linear_decrease_factor} Determines linear decrease rate of barrier parameter. $\;$ \\
 For the Fiacco-McCormick update procedure the new
barrier parameter mu is obtained by taking the
minimum of mu*"mu\_linear\_decrease\_factor" and
mu\^"superlinear\_decrease\_power".  (This is
kappa\_mu in implementation paper.) This option
is also used in the adaptive mu strategy during
the monotone mode. The valid range for this real option is 
$0 <  {\tt mu\_linear\_decrease\_factor } <  1$
and its default value is $0.2$.


\htmlanchor{sec:mu_max}
\paragraph{mu\_max:}\label{sec:mu_max} Maximum value for barrier parameter. $\;$ \\
 This option specifies an upper bound on the
barrier parameter in the adaptive mu selection
mode.  If this option is set, it overwrites the
effect of mu\_max\_fact. (Only used if option
"mu\_strategy" is chosen as "adaptive".) The valid range for this real option is 
$0 <  {\tt mu\_max } <  {\tt +inf}$
and its default value is $100000$.


\htmlanchor{sec:mu_max_fact}
\paragraph{mu\_max\_fact:}\label{sec:mu_max_fact} Factor for initialization of maximum value for barrier parameter. $\;$ \\
 This option determines the upper bound on the
barrier parameter.  This upper bound is computed
as the average complementarity at the initial
point times the value of this option. (Only used
if option "mu\_strategy" is chosen as "adaptive".) The valid range for this real option is 
$0 <  {\tt mu\_max\_fact } <  {\tt +inf}$
and its default value is $1000$.


\htmlanchor{sec:mu_min}
\paragraph{mu\_min:}\label{sec:mu_min} Minimum value for barrier parameter. $\;$ \\
 This option specifies the lower bound on the
barrier parameter in the adaptive mu selection
mode. By default, it is set to the minimum of
1e-11 and
min("tol","compl\_inf\_tol")/("barrier\_tol\_fact-
or"+1), which should be a reasonable value. (Only
used if option "mu\_strategy" is chosen as
"adaptive".) The valid range for this real option is 
$0 <  {\tt mu\_min } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-11}$.


\htmlanchor{sec:mu_oracle}
\paragraph{mu\_oracle:}\label{sec:mu_oracle} Oracle for a new barrier parameter in the adaptive strategy. $\;$ \\
 Determines how a new barrier parameter is
computed in each "free-mode" iteration of the
adaptive barrier parameter strategy. (Only
considered if "adaptive" is selected for option
"mu\_strategy").
The default value for this string option is "quality-function".
\\ 
Possible values:
\begin{itemize}
   \item probing: Mehrotra's probing heuristic
   \item loqo: LOQO's centrality rule
   \item quality-function: minimize a quality function
\end{itemize}

\htmlanchor{sec:mu_strategy}
\paragraph{mu\_strategy:}\label{sec:mu_strategy} Update strategy for barrier parameter. $\;$ \\
 Determines which barrier parameter update
strategy is to be used.
The default value for this string option is "monotone".
\\ 
Possible values:
\begin{itemize}
   \item monotone: use the monotone (Fiacco-McCormick) strategy
   \item adaptive: use the adaptive update strategy
\end{itemize}

\htmlanchor{sec:mu_superlinear_decrease_power}
\paragraph{mu\_superlinear\_decrease\_power:}\label{sec:mu_superlinear_decrease_power} Determines superlinear decrease rate of barrier parameter. $\;$ \\
 For the Fiacco-McCormick update procedure the new
barrier parameter mu is obtained by taking the
minimum of mu*"mu\_linear\_decrease\_factor" and
mu\^"superlinear\_decrease\_power".  (This is
theta\_mu in implementation paper.) This option
is also used in the adaptive mu strategy during
the monotone mode. The valid range for this real option is 
$1 <  {\tt mu\_superlinear\_decrease\_power } <  2$
and its default value is $1.5$.


\htmlanchor{sec:quality_function_balancing_term}
\paragraph{quality\_function\_balancing\_term:}\label{sec:quality_function_balancing_term} The balancing term included in the quality function for centrality. $\;$ \\
 This determines whether a term is added to the
quality function that penalizes situations where
the complementarity is much smaller than dual and
primal infeasibilities. (Only used if option
"mu\_oracle" is set to "quality-function".)
The default value for this string option is "none".
\\ 
Possible values:
\begin{itemize}
   \item none: no balancing term is added
   \item cubic: Max(0,Max(dual\_inf,primal\_inf)-compl)\^3
\end{itemize}

\htmlanchor{sec:quality_function_centrality}
\paragraph{quality\_function\_centrality:}\label{sec:quality_function_centrality} The penalty term for centrality that is included in quality function. $\;$ \\
 This determines whether a term is added to the
quality function to penalize deviation from
centrality with respect to complementarity.  The
complementarity measure here is the xi in the
Loqo update rule. (Only used if option
"mu\_oracle" is set to "quality-function".)
The default value for this string option is "none".
\\ 
Possible values:
\begin{itemize}
   \item none: no penalty term is added
   \item log: complementarity * the log of the centrality
measure
   \item reciprocal: complementarity * the reciprocal of the
centrality measure
   \item cubed-reciprocal: complementarity * the reciprocal of the
centrality measure cubed
\end{itemize}

\htmlanchor{sec:quality_function_max_section_steps}
\paragraph{quality\_function\_max\_section\_steps:}\label{sec:quality_function_max_section_steps} Maximum number of search steps during direct search procedure determining the optimal centering parameter. $\;$ \\
 The golden section search is performed for the
quality function based mu oracle. (Only used if
option "mu\_oracle" is set to "quality-function".) The valid range for this integer option is
$0 \le {\tt quality\_function\_max\_section\_steps } <  {\tt +inf}$
and its default value is $8$.


\htmlanchor{sec:quality_function_norm_type}
\paragraph{quality\_function\_norm\_type:}\label{sec:quality_function_norm_type} Norm used for components of the quality function. $\;$ \\
 (Only used if option "mu\_oracle" is set to
"quality-function".)
The default value for this string option is "2-norm-squared".
\\ 
Possible values:
\begin{itemize}
   \item 1-norm: use the 1-norm (abs sum)
   \item 2-norm-squared: use the 2-norm squared (sum of squares)
   \item max-norm: use the infinity norm (max)
   \item 2-norm: use 2-norm
\end{itemize}

\htmlanchor{sec:quality_function_section_qf_tol}
\paragraph{quality\_function\_section\_qf\_tol:}\label{sec:quality_function_section_qf_tol} Tolerance for the golden section search procedure determining the optimal centering parameter (in the function value space). $\;$ \\
 The golden section search is performed for the
quality function based mu oracle. (Only used if
option "mu\_oracle" is set to "quality-function".) The valid range for this real option is 
$0 \le {\tt quality\_function\_section\_qf\_tol } <  1$
and its default value is $0$.


\htmlanchor{sec:quality_function_section_sigma_tol}
\paragraph{quality\_function\_section\_sigma\_tol:}\label{sec:quality_function_section_sigma_tol} Tolerance for the section search procedure determining the optimal centering parameter (in sigma space). $\;$ \\
 The golden section search is performed for the
quality function based mu oracle. (Only used if
option "mu\_oracle" is set to "quality-function".) The valid range for this real option is 
$0 \le {\tt quality\_function\_section\_sigma\_tol } <  1$
and its default value is $0.01$.


\htmlanchor{sec:sigma_max}
\paragraph{sigma\_max:}\label{sec:sigma_max} Maximum value of the centering parameter. $\;$ \\
 This is the upper bound for the centering
parameter chosen by the quality function based
barrier parameter update. (Only used if option
"mu\_oracle" is set to "quality-function".) The valid range for this real option is 
$0 <  {\tt sigma\_max } <  {\tt +inf}$
and its default value is $100$.


\htmlanchor{sec:sigma_min}
\paragraph{sigma\_min:}\label{sec:sigma_min} Minimum value of the centering parameter. $\;$ \\
 This is the lower bound for the centering
parameter chosen by the quality function based
barrier parameter update. (Only used if option
"mu\_oracle" is set to "quality-function".) The valid range for this real option is 
$0 \le {\tt sigma\_min } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-06}$.


\htmlanchor{sec:tau_min}
\paragraph{tau\_min:}\label{sec:tau_min} Lower bound on fraction-to-the-boundary parameter tau. $\;$ \\
 (This is tau\_min in the implementation paper.) 
This option is also used in the adaptive mu
strategy during the monotone mode. The valid range for this real option is 
$0 <  {\tt tau\_min } <  1$
and its default value is $0.99$.


\subsection{Convergence}
\label{sec:Convergence}
\htmlanchor{sec:Convergence}
\htmlanchor{sec:acceptable_compl_inf_tol}
\paragraph{acceptable\_compl\_inf\_tol:}\label{sec:acceptable_compl_inf_tol} "Acceptance" threshold for the complementarity conditions. $\;$ \\
 Absolute tolerance on the complementarity.
"Acceptable" termination requires that the
max-norm of the (unscaled) complementarity is
less than this threshold; see also
acceptable\_tol. The valid range for this real option is 
$0 <  {\tt acceptable\_compl\_inf\_tol } <  {\tt +inf}$
and its default value is $0.01$.


\htmlanchor{sec:acceptable_constr_viol_tol}
\paragraph{acceptable\_constr\_viol\_tol:}\label{sec:acceptable_constr_viol_tol} "Acceptance" threshold for the constraint violation. $\;$ \\
 Absolute tolerance on the constraint violation.
"Acceptable" termination requires that the
max-norm of the (unscaled) constraint violation
is less than this threshold; see also
acceptable\_tol. The valid range for this real option is 
$0 <  {\tt acceptable\_constr\_viol\_tol } <  {\tt +inf}$
and its default value is $0.01$.


\htmlanchor{sec:acceptable_dual_inf_tol}
\paragraph{acceptable\_dual\_inf\_tol:}\label{sec:acceptable_dual_inf_tol} "Acceptance" threshold for the dual infeasibility. $\;$ \\
 Absolute tolerance on the dual infeasibility.
"Acceptable" termination requires that the
(max-norm of the unscaled) dual infeasibility is
less than this threshold; see also
acceptable\_tol. The valid range for this real option is 
$0 <  {\tt acceptable\_dual\_inf\_tol } <  {\tt +inf}$
and its default value is $1 \cdot 10^{+10}$.


\htmlanchor{sec:acceptable_iter}
\paragraph{acceptable\_iter:}\label{sec:acceptable_iter} Number of "acceptable" iterates before triggering termination. $\;$ \\
 If the algorithm encounters this many successive
"acceptable" iterates (see "acceptable\_tol"), it
terminates, assuming that the problem has been
solved to best possible accuracy given round-off.
 If it is set to zero, this heuristic is disabled. The valid range for this integer option is
$0 \le {\tt acceptable\_iter } <  {\tt +inf}$
and its default value is $15$.


\htmlanchor{sec:acceptable_obj_change_tol}
\paragraph{acceptable\_obj\_change\_tol:}\label{sec:acceptable_obj_change_tol} "Acceptance" stopping criterion based on objective function change. $\;$ \\
 If the relative change of the objective function
(scaled by Max(1,|f(x)|)) is less than this
value, this part of the acceptable tolerance
termination is satisfied; see also
acceptable\_tol.  This is useful for the
quasi-Newton option, which has trouble to bring
down the dual infeasibility. The valid range for this real option is 
$0 \le {\tt acceptable\_obj\_change\_tol } <  {\tt +inf}$
and its default value is $1 \cdot 10^{+20}$.


\htmlanchor{sec:acceptable_tol}
\paragraph{acceptable\_tol:}\label{sec:acceptable_tol} "Acceptable" convergence tolerance (relative). $\;$ \\
 Determines which (scaled) overall optimality
error is considered to be "acceptable." There are
two levels of termination criteria.  If the usual
"desired" tolerances (see tol, dual\_inf\_tol
etc) are satisfied at an iteration, the algorithm
immediately terminates with a success message. 
On the other hand, if the algorithm encounters
"acceptable\_iter" many iterations in a row that
are considered "acceptable", it will terminate
before the desired convergence tolerance is met.
This is useful in cases where the algorithm might
not be able to achieve the "desired" level of
accuracy. The valid range for this real option is 
$0 <  {\tt acceptable\_tol } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-06}$.


\htmlanchor{sec:compl_inf_tol}
\paragraph{compl\_inf\_tol:}\label{sec:compl_inf_tol} Desired threshold for the complementarity conditions. $\;$ \\
 Absolute tolerance on the complementarity.
Successful termination requires that the max-norm
of the (unscaled) complementarity is less than
this threshold. The valid range for this real option is 
$0 <  {\tt compl\_inf\_tol } <  {\tt +inf}$
and its default value is $0.0001$.


\htmlanchor{sec:constr_viol_tol}
\paragraph{constr\_viol\_tol:}\label{sec:constr_viol_tol} Desired threshold for the constraint violation. $\;$ \\
 Absolute tolerance on the constraint violation.
Successful termination requires that the max-norm
of the (unscaled) constraint violation is less
than this threshold. The valid range for this real option is 
$0 <  {\tt constr\_viol\_tol } <  {\tt +inf}$
and its default value is $0.0001$.


\htmlanchor{sec:diverging_iterates_tol}
\paragraph{diverging\_iterates\_tol:}\label{sec:diverging_iterates_tol} Threshold for maximal value of primal iterates. $\;$ \\
 If any component of the primal iterates exceeded
this value (in absolute terms), the optimization
is aborted with the exit message that the
iterates seem to be diverging. The valid range for this real option is 
$0 <  {\tt diverging\_iterates\_tol } <  {\tt +inf}$
and its default value is $1 \cdot 10^{+20}$.


\htmlanchor{sec:dual_inf_tol}
\paragraph{dual\_inf\_tol:}\label{sec:dual_inf_tol} Desired threshold for the dual infeasibility. $\;$ \\
 Absolute tolerance on the dual infeasibility.
Successful termination requires that the max-norm
of the (unscaled) dual infeasibility is less than
this threshold. The valid range for this real option is 
$0 <  {\tt dual\_inf\_tol } <  {\tt +inf}$
and its default value is $1$.


\htmlanchor{sec:max_cpu_time}
\paragraph{max\_cpu\_time:}\label{sec:max_cpu_time} Maximum number of CPU seconds. $\;$ \\
 A limit on CPU seconds that Ipopt can use to
solve one problem.  If during the convergence
check this limit is exceeded, Ipopt will
terminate with a corresponding error message. The valid range for this real option is 
$0 <  {\tt max\_cpu\_time } <  {\tt +inf}$
and its default value is $1 \cdot 10^{+06}$.


\htmlanchor{sec:max_iter}
\paragraph{max\_iter:}\label{sec:max_iter} Maximum number of iterations. $\;$ \\
 The algorithm terminates with an error message if
the number of iterations exceeded this number. The valid range for this integer option is
$0 \le {\tt max\_iter } <  {\tt +inf}$
and its default value is $3000$.


\htmlanchor{sec:mu_target}
\paragraph{mu\_target:}\label{sec:mu_target} Desired value of complementarity. $\;$ \\
 Usually, the barrier parameter is driven to zero
and the termination test for complementarity is
measured with respect to zero complementarity. 
However, in some cases it might be desired to
have Ipopt solve barrier problem for strictly
positive value of the barrier parameter.  In this
case, the value of "mu\_target" specifies the
final value of the barrier parameter, and the
termination tests are then defined with respect
to the barrier problem for this value of the
barrier parameter. The valid range for this real option is 
$0 \le {\tt mu\_target } <  {\tt +inf}$
and its default value is $0$.


\htmlanchor{sec:s_max}
\paragraph{s\_max:}\label{sec:s_max} Scaling threshold for the NLP error. $\;$ \\
 (See paragraph after Eqn. (6) in the
implementation paper.) The valid range for this real option is 
$0 <  {\tt s\_max } <  {\tt +inf}$
and its default value is $100$.


\htmlanchor{sec:tol}
\paragraph{tol:}\label{sec:tol} Desired convergence tolerance (relative). $\;$ \\
 Determines the convergence tolerance for the
algorithm.  The algorithm terminates
successfully, if the (scaled) NLP error becomes
smaller than this value, and if the (absolute)
criteria according to "dual\_inf\_tol",
"primal\_inf\_tol", and "compl\_inf\_tol" are
met.  (This is epsilon\_tol in Eqn. (6) in
implementation paper).  See also
"acceptable\_tol" as a second termination
criterion.  Note, some other algorithmic features
also use this quantity to determine thresholds
etc. The valid range for this real option is 
$0 <  {\tt tol } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-08}$.


\subsection{Derivative Checker}
\label{sec:Derivative_Checker}
\htmlanchor{sec:Derivative_Checker}
\htmlanchor{sec:derivative_test}
\paragraph{derivative\_test:}\label{sec:derivative_test} Enable derivative checker $\;$ \\
 If this option is enabled, a (slow!) derivative
test will be performed before the optimization. 
The test is performed at the user provided
starting point and marks derivative values that
seem suspicious
The default value for this string option is "none".
\\ 
Possible values:
\begin{itemize}
   \item none: do not perform derivative test
   \item first-order: perform test of first derivatives at starting
point
   \item second-order: perform test of first and second derivatives at
starting point
   \item only-second-order: perform test of second derivatives at starting
point
\end{itemize}

\htmlanchor{sec:derivative_test_first_index}
\paragraph{derivative\_test\_first\_index:}\label{sec:derivative_test_first_index} Index of first quantity to be checked by derivative checker $\;$ \\
 If this is set to -2, then all derivatives are
checked.  Otherwise, for the first derivative
test it specifies the first variable for which
the test is done (counting starts at 0).  For
second derivatives, it specifies the first
constraint for which the test is done; counting
of constraint indices starts at 0, and -1 refers
to the objective function Hessian. The valid range for this integer option is
$-2 \le {\tt derivative\_test\_first\_index } <  {\tt +inf}$
and its default value is $-2$.


\htmlanchor{sec:derivative_test_perturbation}
\paragraph{derivative\_test\_perturbation:}\label{sec:derivative_test_perturbation} Size of the finite difference perturbation in derivative test. $\;$ \\
 This determines the relative perturbation of the
variable entries. The valid range for this real option is 
$0 <  {\tt derivative\_test\_perturbation } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-08}$.


\htmlanchor{sec:derivative_test_print_all}
\paragraph{derivative\_test\_print\_all:}\label{sec:derivative_test_print_all} Indicates whether information for all estimated derivatives should be printed. $\;$ \\
 Determines verbosity of derivative checker.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: Print only suspect derivatives
   \item yes: Print all derivatives
\end{itemize}

\htmlanchor{sec:derivative_test_tol}
\paragraph{derivative\_test\_tol:}\label{sec:derivative_test_tol} Threshold for indicating wrong derivative. $\;$ \\
 If the relative deviation of the estimated
derivative from the given one is larger than this
value, the corresponding derivative is marked as
wrong. The valid range for this real option is 
$0 <  {\tt derivative\_test\_tol } <  {\tt +inf}$
and its default value is $0.0001$.


\htmlanchor{sec:findiff_perturbation}
\paragraph{findiff\_perturbation:}\label{sec:findiff_perturbation} Size of the finite difference perturbation for derivative approximation. $\;$ \\
 This determines the relative perturbation of the
variable entries. The valid range for this real option is 
$0 <  {\tt findiff\_perturbation } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-07}$.


\htmlanchor{sec:jacobian_approximation}
\paragraph{jacobian\_approximation:}\label{sec:jacobian_approximation} Specifies technique to compute constraint Jacobian $\;$ \\

The default value for this string option is "exact".
\\ 
Possible values:
\begin{itemize}
   \item exact: user-provided derivatives
   \item finite-difference-values: user-provided structure, values by finite
differences
\end{itemize}

\htmlanchor{sec:point_perturbation_radius}
\paragraph{point\_perturbation\_radius:}\label{sec:point_perturbation_radius} Maximal perturbation of an evaluation point. $\;$ \\
 If a random perturbation of a points is required,
this number indicates the maximal perturbation. 
This is for example used when determining the
center point at which the finite difference
derivative test is executed. The valid range for this real option is 
$0 \le {\tt point\_perturbation\_radius } <  {\tt +inf}$
and its default value is $10$.


\subsection{Hessian Approximation}
\label{sec:Hessian_Approximation}
\htmlanchor{sec:Hessian_Approximation}
\htmlanchor{sec:hessian_approximation}
\paragraph{hessian\_approximation:}\label{sec:hessian_approximation} Indicates what Hessian information is to be used. $\;$ \\
 This determines which kind of information for the
Hessian of the Lagrangian function is used by the
algorithm.
The default value for this string option is "exact".
\\ 
Possible values:
\begin{itemize}
   \item exact: Use second derivatives provided by the NLP.
   \item limited-memory: Perform a limited-memory quasi-Newton
approximation
\end{itemize}

\htmlanchor{sec:hessian_approximation_space}
\paragraph{hessian\_approximation\_space:}\label{sec:hessian_approximation_space} Indicates in which subspace the Hessian information is to be approximated. $\;$ \\

The default value for this string option is "nonlinear-variables".
\\ 
Possible values:
\begin{itemize}
   \item nonlinear-variables: only in space of nonlinear variables.
   \item all-variables: in space of all variables (without slacks)
\end{itemize}

\htmlanchor{sec:limited_memory_aug_solver}
\paragraph{limited\_memory\_aug\_solver:}\label{sec:limited_memory_aug_solver} Strategy for solving the augmented system for low-rank Hessian. $\;$ \\

The default value for this string option is "sherman-morrison".
\\ 
Possible values:
\begin{itemize}
   \item sherman-morrison: use Sherman-Morrison formula
   \item extended: use an extended augmented system
\end{itemize}

\htmlanchor{sec:limited_memory_init_val}
\paragraph{limited\_memory\_init\_val:}\label{sec:limited_memory_init_val} Value for B0 in low-rank update. $\;$ \\
 The starting matrix in the low rank update, B0,
is chosen to be this multiple of the identity in
the first iteration (when no updates have been
performed yet), and is constantly chosen as this
value, if "limited\_memory\_initialization" is
"constant". The valid range for this real option is 
$0 <  {\tt limited\_memory\_init\_val } <  {\tt +inf}$
and its default value is $1$.


\htmlanchor{sec:limited_memory_init_val_max}
\paragraph{limited\_memory\_init\_val\_max:}\label{sec:limited_memory_init_val_max} Upper bound on value for B0 in low-rank update. $\;$ \\
 The starting matrix in the low rank update, B0,
is chosen to be this multiple of the identity in
the first iteration (when no updates have been
performed yet), and is constantly chosen as this
value, if "limited\_memory\_initialization" is
"constant". The valid range for this real option is 
$0 <  {\tt limited\_memory\_init\_val\_max } <  {\tt +inf}$
and its default value is $1 \cdot 10^{+08}$.


\htmlanchor{sec:limited_memory_init_val_min}
\paragraph{limited\_memory\_init\_val\_min:}\label{sec:limited_memory_init_val_min} Lower bound on value for B0 in low-rank update. $\;$ \\
 The starting matrix in the low rank update, B0,
is chosen to be this multiple of the identity in
the first iteration (when no updates have been
performed yet), and is constantly chosen as this
value, if "limited\_memory\_initialization" is
"constant". The valid range for this real option is 
$0 <  {\tt limited\_memory\_init\_val\_min } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-08}$.


\htmlanchor{sec:limited_memory_initialization}
\paragraph{limited\_memory\_initialization:}\label{sec:limited_memory_initialization} Initialization strategy for the limited memory quasi-Newton approximation. $\;$ \\
 Determines how the diagonal Matrix B\_0 as the
first term in the limited memory approximation
should be computed.
The default value for this string option is "scalar1".
\\ 
Possible values:
\begin{itemize}
   \item scalar1: sigma = s\^Ty/s\^Ts
   \item scalar2: sigma = y\^Ty/s\^Ty
   \item scalar3: arithmetic average of scalar1 and scalar2
   \item scalar4: geometric average of scalar1 and scalar2
   \item constant: sigma = limited\_memory\_init\_val
\end{itemize}

\htmlanchor{sec:limited_memory_max_history}
\paragraph{limited\_memory\_max\_history:}\label{sec:limited_memory_max_history} Maximum size of the history for the limited quasi-Newton Hessian approximation. $\;$ \\
 This option determines the number of most recent
iterations that are taken into account for the
limited-memory quasi-Newton approximation. The valid range for this integer option is
$0 \le {\tt limited\_memory\_max\_history } <  {\tt +inf}$
and its default value is $6$.


\htmlanchor{sec:limited_memory_max_skipping}
\paragraph{limited\_memory\_max\_skipping:}\label{sec:limited_memory_max_skipping} Threshold for successive iterations where update is skipped. $\;$ \\
 If the update is skipped more than this number of
successive iterations, we quasi-Newton
approximation is reset. The valid range for this integer option is
$1 \le {\tt limited\_memory\_max\_skipping } <  {\tt +inf}$
and its default value is $2$.


\htmlanchor{sec:limited_memory_special_for_resto}
\paragraph{limited\_memory\_special\_for\_resto:}\label{sec:limited_memory_special_for_resto} Determines if the quasi-Newton updates should be special during the restoration phase. $\;$ \\
 Until Nov 2010, Ipopt used a special update
during the restoration phase, but it turned out
that this does not work well.  The new default
uses the regular update procedure and it improves
results.  If for some reason you want to get back
to the original update, set this option to "yes".
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: use the same update as in regular iterations
   \item yes: use the a special update during restoration
phase
\end{itemize}

\htmlanchor{sec:limited_memory_update_type}
\paragraph{limited\_memory\_update\_type:}\label{sec:limited_memory_update_type} Quasi-Newton update formula for the limited memory approximation. $\;$ \\
 Determines which update formula is to be used for
the limited-memory quasi-Newton approximation.
The default value for this string option is "bfgs".
\\ 
Possible values:
\begin{itemize}
   \item bfgs: BFGS update (with skipping)
   \item sr1: SR1 (not working well)
\end{itemize}

\subsection{Initialization}
\label{sec:Initialization}
\htmlanchor{sec:Initialization}
\htmlanchor{sec:bound_frac}
\paragraph{bound\_frac:}\label{sec:bound_frac} Desired minimum relative distance from the initial point to bound. $\;$ \\
 Determines how much the initial point might have
to be modified in order to be sufficiently inside
the bounds (together with "bound\_push").  (This
is kappa\_2 in Section 3.6 of implementation
paper.) The valid range for this real option is 
$0 <  {\tt bound\_frac } \le 0.5$
and its default value is $0.01$.


\htmlanchor{sec:bound_mult_init_method}
\paragraph{bound\_mult\_init\_method:}\label{sec:bound_mult_init_method} Initialization method for bound multipliers $\;$ \\
 This option defines how the iterates for the
bound multipliers are initialized.  If "constant"
is chosen, then all bound multipliers are
initialized to the value of
"bound\_mult\_init\_val".  If "mu-based" is
chosen, the each value is initialized to the the
value of "mu\_init" divided by the corresponding
slack variable.  This latter option might be
useful if the starting point is close to the
optimal solution.
The default value for this string option is "constant".
\\ 
Possible values:
\begin{itemize}
   \item constant: set all bound multipliers to the value of
bound\_mult\_init\_val
   \item mu-based: initialize to mu\_init/x\_slack
\end{itemize}

\htmlanchor{sec:bound_mult_init_val}
\paragraph{bound\_mult\_init\_val:}\label{sec:bound_mult_init_val} Initial value for the bound multipliers. $\;$ \\
 All dual variables corresponding to bound
constraints are initialized to this value. The valid range for this real option is 
$0 <  {\tt bound\_mult\_init\_val } <  {\tt +inf}$
and its default value is $1$.


\htmlanchor{sec:bound_push}
\paragraph{bound\_push:}\label{sec:bound_push} Desired minimum absolute distance from the initial point to bound. $\;$ \\
 Determines how much the initial point might have
to be modified in order to be sufficiently inside
the bounds (together with "bound\_frac").  (This
is kappa\_1 in Section 3.6 of implementation
paper.) The valid range for this real option is 
$0 <  {\tt bound\_push } <  {\tt +inf}$
and its default value is $0.01$.


\htmlanchor{sec:constr_mult_init_max}
\paragraph{constr\_mult\_init\_max:}\label{sec:constr_mult_init_max} Maximum allowed least-square guess of constraint multipliers. $\;$ \\
 Determines how large the initial least-square
guesses of the constraint multipliers are allowed
to be (in max-norm). If the guess is larger than
this value, it is discarded and all constraint
multipliers are set to zero.  This options is
also used when initializing the restoration
phase. By default,
"resto.constr\_mult\_init\_max" (the one used in
RestoIterateInitializer) is set to zero. The valid range for this real option is 
$0 \le {\tt constr\_mult\_init\_max } <  {\tt +inf}$
and its default value is $1000$.


\htmlanchor{sec:least_square_init_duals}
\paragraph{least\_square\_init\_duals:}\label{sec:least_square_init_duals} Least square initialization of all dual variables $\;$ \\
 If set to yes, Ipopt tries to compute
least-square multipliers (considering ALL dual
variables).  If successful, the bound multipliers
are possibly corrected to be at least
bound\_mult\_init\_val. This might be useful if
the user doesn't know anything about the starting
point, or for solving an LP or QP.  This
overwrites option "bound\_mult\_init\_method".
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: use bound\_mult\_init\_val and least-square
equality constraint multipliers
   \item yes: overwrite user-provided point with least-square
estimates
\end{itemize}

\htmlanchor{sec:least_square_init_primal}
\paragraph{least\_square\_init\_primal:}\label{sec:least_square_init_primal} Least square initialization of the primal variables $\;$ \\
 If set to yes, Ipopt ignores the user provided
point and solves a least square problem for the
primal variables (x and s), to fit the linearized
equality and inequality constraints.  This might
be useful if the user doesn't know anything about
the starting point, or for solving an LP or QP.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: take user-provided point
   \item yes: overwrite user-provided point with least-square
estimates
\end{itemize}

\htmlanchor{sec:slack_bound_frac}
\paragraph{slack\_bound\_frac:}\label{sec:slack_bound_frac} Desired minimum relative distance from the initial slack to bound. $\;$ \\
 Determines how much the initial slack variables
might have to be modified in order to be
sufficiently inside the inequality bounds
(together with "slack\_bound\_push").  (This is
kappa\_2 in Section 3.6 of implementation paper.) The valid range for this real option is 
$0 <  {\tt slack\_bound\_frac } \le 0.5$
and its default value is $0.01$.


\htmlanchor{sec:slack_bound_push}
\paragraph{slack\_bound\_push:}\label{sec:slack_bound_push} Desired minimum absolute distance from the initial slack to bound. $\;$ \\
 Determines how much the initial slack variables
might have to be modified in order to be
sufficiently inside the inequality bounds
(together with "slack\_bound\_frac").  (This is
kappa\_1 in Section 3.6 of implementation paper.) The valid range for this real option is 
$0 <  {\tt slack\_bound\_push } <  {\tt +inf}$
and its default value is $0.01$.


\subsection{Line Search}
\label{sec:Line_Search}
\htmlanchor{sec:Line_Search}
\htmlanchor{sec:accept_after_max_steps}
\paragraph{accept\_after\_max\_steps:}\label{sec:accept_after_max_steps} Accept a trial point after maximal this number of steps. $\;$ \\
 Even if it does not satisfy line search
conditions. The valid range for this integer option is
$-1 \le {\tt accept\_after\_max\_steps } <  {\tt +inf}$
and its default value is $-1$.


\htmlanchor{sec:accept_every_trial_step}
\paragraph{accept\_every\_trial\_step:}\label{sec:accept_every_trial_step} Always accept the first trial step. $\;$ \\
 Setting this option to "yes" essentially disables
the line search and makes the algorithm take
aggressive steps, without global convergence
guarantees.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: don't arbitrarily accept the full step
   \item yes: always accept the full step
\end{itemize}

\htmlanchor{sec:alpha_for_y}
\paragraph{alpha\_for\_y:}\label{sec:alpha_for_y} Method to determine the step size for constraint multipliers. $\;$ \\
 This option determines how the step size
(alpha\_y) will be calculated when updating the
constraint multipliers.
The default value for this string option is "primal".
\\ 
Possible values:
\begin{itemize}
   \item primal: use primal step size
   \item bound-mult: use step size for the bound multipliers (good
for LPs)
   \item min: use the min of primal and bound multipliers
   \item max: use the max of primal and bound multipliers
   \item full: take a full step of size one
   \item min-dual-infeas: choose step size minimizing new dual
infeasibility
   \item safer-min-dual-infeas: like "min\_dual\_infeas", but safeguarded by
"min" and "max"
   \item primal-and-full: use the primal step size, and full step if
delta\_x <= alpha\_for\_y\_tol
   \item dual-and-full: use the dual step size, and full step if
delta\_x <= alpha\_for\_y\_tol
   \item acceptor: Call LSAcceptor to get step size for y
\end{itemize}

\htmlanchor{sec:alpha_for_y_tol}
\paragraph{alpha\_for\_y\_tol:}\label{sec:alpha_for_y_tol} Tolerance for switching to full equality multiplier steps. $\;$ \\
 This is only relevant if "alpha\_for\_y" is
chosen "primal-and-full" or "dual-and-full".  The
step size for the equality constraint multipliers
is taken to be one if the max-norm of the primal
step is less than this tolerance. The valid range for this real option is 
$0 \le {\tt alpha\_for\_y\_tol } <  {\tt +inf}$
and its default value is $10$.


\htmlanchor{sec:alpha_min_frac}
\paragraph{alpha\_min\_frac:}\label{sec:alpha_min_frac} Safety factor for the minimal step size (before switching to restoration phase). $\;$ \\
 (This is gamma\_alpha in Eqn. (20) in the
implementation paper.) The valid range for this real option is 
$0 <  {\tt alpha\_min\_frac } <  1$
and its default value is $0.05$.


\htmlanchor{sec:alpha_red_factor}
\paragraph{alpha\_red\_factor:}\label{sec:alpha_red_factor} Fractional reduction of the trial step size in the backtracking line search. $\;$ \\
 At every step of the backtracking line search,
the trial step size is reduced by this factor. The valid range for this real option is 
$0 <  {\tt alpha\_red\_factor } <  1$
and its default value is $0.5$.


\htmlanchor{sec:constraint_violation_norm_type}
\paragraph{constraint\_violation\_norm\_type:}\label{sec:constraint_violation_norm_type} Norm to be used for the constraint violation in the line search. $\;$ \\
 Determines which norm should be used when the
algorithm computes the constraint violation in
the line search.
The default value for this string option is "1-norm".
\\ 
Possible values:
\begin{itemize}
   \item 1-norm: use the 1-norm
   \item 2-norm: use the 2-norm
   \item max-norm: use the infinity norm
\end{itemize}

\htmlanchor{sec:corrector_compl_avrg_red_fact}
\paragraph{corrector\_compl\_avrg\_red\_fact:}\label{sec:corrector_compl_avrg_red_fact} Complementarity tolerance factor for accepting corrector step (unsupported!). $\;$ \\
 This option determines the factor by which
complementarity is allowed to increase for a
corrector step to be accepted. The valid range for this real option is 
$0 <  {\tt corrector\_compl\_avrg\_red\_fact } <  {\tt +inf}$
and its default value is $1$.


\htmlanchor{sec:corrector_type}
\paragraph{corrector\_type:}\label{sec:corrector_type} The type of corrector steps that should be taken (unsupported!). $\;$ \\
 If "mu\_strategy" is "adaptive", this option
determines what kind of corrector steps should be
tried.
The default value for this string option is "none".
\\ 
Possible values:
\begin{itemize}
   \item none: no corrector
   \item affine: corrector step towards mu=0
   \item primal-dual: corrector step towards current mu
\end{itemize}

\htmlanchor{sec:delta}
\paragraph{delta:}\label{sec:delta} Multiplier for constraint violation in the switching rule. $\;$ \\
 (See Eqn. (19) in the implementation paper.) The valid range for this real option is 
$0 <  {\tt delta } <  {\tt +inf}$
and its default value is $1$.


\htmlanchor{sec:eta_phi}
\paragraph{eta\_phi:}\label{sec:eta_phi} Relaxation factor in the Armijo condition. $\;$ \\
 (See Eqn. (20) in the implementation paper) The valid range for this real option is 
$0 <  {\tt eta\_phi } <  0.5$
and its default value is $1 \cdot 10^{-08}$.


\htmlanchor{sec:filter_reset_trigger}
\paragraph{filter\_reset\_trigger:}\label{sec:filter_reset_trigger} Number of iterations that trigger the filter reset. $\;$ \\
 If the filter reset heuristic is active and the
number of successive iterations in which the last
rejected trial step size was rejected because of
the filter, the filter is reset. The valid range for this integer option is
$1 \le {\tt filter\_reset\_trigger } <  {\tt +inf}$
and its default value is $5$.


\htmlanchor{sec:gamma_phi}
\paragraph{gamma\_phi:}\label{sec:gamma_phi} Relaxation factor in the filter margin for the barrier function. $\;$ \\
 (See Eqn. (18a) in the implementation paper.) The valid range for this real option is 
$0 <  {\tt gamma\_phi } <  1$
and its default value is $1 \cdot 10^{-08}$.


\htmlanchor{sec:gamma_theta}
\paragraph{gamma\_theta:}\label{sec:gamma_theta} Relaxation factor in the filter margin for the constraint violation. $\;$ \\
 (See Eqn. (18b) in the implementation paper.) The valid range for this real option is 
$0 <  {\tt gamma\_theta } <  1$
and its default value is $1 \cdot 10^{-05}$.


\htmlanchor{sec:kappa_sigma}
\paragraph{kappa\_sigma:}\label{sec:kappa_sigma} Factor limiting the deviation of dual variables from primal estimates. $\;$ \\
 If the dual variables deviate from their primal
estimates, a correction is performed. (See Eqn.
(16) in the implementation paper.) Setting the
value to less than 1 disables the correction. The valid range for this real option is 
$0 <  {\tt kappa\_sigma } <  {\tt +inf}$
and its default value is $1 \cdot 10^{+10}$.


\htmlanchor{sec:kappa_soc}
\paragraph{kappa\_soc:}\label{sec:kappa_soc} Factor in the sufficient reduction rule for second order correction. $\;$ \\
 This option determines how much a second order
correction step must reduce the constraint
violation so that further correction steps are
attempted.  (See Step A-5.9 of Algorithm A in the
implementation paper.) The valid range for this real option is 
$0 <  {\tt kappa\_soc } <  {\tt +inf}$
and its default value is $0.99$.


\htmlanchor{sec:line_search_method}
\paragraph{line\_search\_method:}\label{sec:line_search_method} Globalization method used in backtracking line search $\;$ \\
 Only the "filter" choice is officially supported.
 But sometimes, good results might be obtained
with the other choices.
The default value for this string option is "filter".
\\ 
Possible values:
\begin{itemize}
   \item filter: Filter method
   \item cg-penalty: Chen-Goldfarb penalty function
   \item penalty: Standard penalty function
\end{itemize}

\htmlanchor{sec:max_filter_resets}
\paragraph{max\_filter\_resets:}\label{sec:max_filter_resets} Maximal allowed number of filter resets $\;$ \\
 A positive number enables a heuristic that resets
the filter, whenever in more than
"filter\_reset\_trigger" successive iterations
the last rejected trial steps size was rejected
because of the filter.  This option determine the
maximal number of resets that are allowed to take
place. The valid range for this integer option is
$0 \le {\tt max\_filter\_resets } <  {\tt +inf}$
and its default value is $5$.


\htmlanchor{sec:max_soc}
\paragraph{max\_soc:}\label{sec:max_soc} Maximum number of second order correction trial steps at each iteration. $\;$ \\
 Choosing 0 disables the second order corrections.
(This is p\^{max} of Step A-5.9 of Algorithm A in
the implementation paper.) The valid range for this integer option is
$0 \le {\tt max\_soc } <  {\tt +inf}$
and its default value is $4$.


\htmlanchor{sec:nu_inc}
\paragraph{nu\_inc:}\label{sec:nu_inc} Increment of the penalty parameter. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt nu\_inc } <  {\tt +inf}$
and its default value is $0.0001$.


\htmlanchor{sec:nu_init}
\paragraph{nu\_init:}\label{sec:nu_init} Initial value of the penalty parameter. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt nu\_init } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-06}$.


\htmlanchor{sec:obj_max_inc}
\paragraph{obj\_max\_inc:}\label{sec:obj_max_inc} Determines the upper bound on the acceptable increase of barrier objective function. $\;$ \\
 Trial points are rejected if they lead to an
increase in the barrier objective function by
more than obj\_max\_inc orders of magnitude. The valid range for this real option is 
$1 <  {\tt obj\_max\_inc } <  {\tt +inf}$
and its default value is $5$.


\htmlanchor{sec:recalc_y}
\paragraph{recalc\_y:}\label{sec:recalc_y} Tells the algorithm to recalculate the equality and inequality multipliers as least square estimates. $\;$ \\
 This asks the algorithm to recompute the
multipliers, whenever the current infeasibility
is less than recalc\_y\_feas\_tol. Choosing yes
might be helpful in the quasi-Newton option. 
However, each recalculation requires an extra
factorization of the linear system.  If a limited
memory quasi-Newton option is chosen, this is
used by default.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: use the Newton step to update the multipliers
   \item yes: use least-square multiplier estimates
\end{itemize}

\htmlanchor{sec:recalc_y_feas_tol}
\paragraph{recalc\_y\_feas\_tol:}\label{sec:recalc_y_feas_tol} Feasibility threshold for recomputation of multipliers. $\;$ \\
 If recalc\_y is chosen and the current
infeasibility is less than this value, then the
multipliers are recomputed. The valid range for this real option is 
$0 <  {\tt recalc\_y\_feas\_tol } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-06}$.


\htmlanchor{sec:rho}
\paragraph{rho:}\label{sec:rho} Value in penalty parameter update formula. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt rho } <  1$
and its default value is $0.1$.


\htmlanchor{sec:s_phi}
\paragraph{s\_phi:}\label{sec:s_phi} Exponent for linear barrier function model in the switching rule. $\;$ \\
 (See Eqn. (19) in the implementation paper.) The valid range for this real option is 
$1 <  {\tt s\_phi } <  {\tt +inf}$
and its default value is $2.3$.


\htmlanchor{sec:s_theta}
\paragraph{s\_theta:}\label{sec:s_theta} Exponent for current constraint violation in the switching rule. $\;$ \\
 (See Eqn. (19) in the implementation paper.) The valid range for this real option is 
$1 <  {\tt s\_theta } <  {\tt +inf}$
and its default value is $1.1$.


\htmlanchor{sec:skip_corr_if_neg_curv}
\paragraph{skip\_corr\_if\_neg\_curv:}\label{sec:skip_corr_if_neg_curv} Skip the corrector step in negative curvature iteration (unsupported!). $\;$ \\
 The corrector step is not tried if negative
curvature has been encountered during the
computation of the search direction in the
current iteration. This option is only used if
"mu\_strategy" is "adaptive".
The default value for this string option is "yes".
\\ 
Possible values:
\begin{itemize}
   \item no: don't skip
   \item yes: skip
\end{itemize}

\htmlanchor{sec:skip_corr_in_monotone_mode}
\paragraph{skip\_corr\_in\_monotone\_mode:}\label{sec:skip_corr_in_monotone_mode} Skip the corrector step during monotone barrier parameter mode (unsupported!). $\;$ \\
 The corrector step is not tried if the algorithm
is currently in the monotone mode (see also
option "barrier\_strategy").This option is only
used if "mu\_strategy" is "adaptive".
The default value for this string option is "yes".
\\ 
Possible values:
\begin{itemize}
   \item no: don't skip
   \item yes: skip
\end{itemize}

\htmlanchor{sec:slack_move}
\paragraph{slack\_move:}\label{sec:slack_move} Correction size for very small slacks. $\;$ \\
 Due to numerical issues or the lack of an
interior, the slack variables might become very
small.  If a slack becomes very small compared to
machine precision, the corresponding bound is
moved slightly.  This parameter determines how
large the move should be.  Its default value is
mach\_eps\^{3/4}.  (See also end of Section 3.5
in implementation paper - but actual
implementation might be somewhat different.) The valid range for this real option is 
$0 \le {\tt slack\_move } <  {\tt +inf}$
and its default value is $1.81899 \cdot 10^{-12}$.


\htmlanchor{sec:theta_max_fact}
\paragraph{theta\_max\_fact:}\label{sec:theta_max_fact} Determines upper bound for constraint violation in the filter. $\;$ \\
 The algorithmic parameter theta\_max is
determined as theta\_max\_fact times the maximum
of 1 and the constraint violation at initial
point.  Any point with a constraint violation
larger than theta\_max is unacceptable to the
filter (see Eqn. (21) in the implementation
paper). The valid range for this real option is 
$0 <  {\tt theta\_max\_fact } <  {\tt +inf}$
and its default value is $10000$.


\htmlanchor{sec:theta_min_fact}
\paragraph{theta\_min\_fact:}\label{sec:theta_min_fact} Determines constraint violation threshold in the switching rule. $\;$ \\
 The algorithmic parameter theta\_min is
determined as theta\_min\_fact times the maximum
of 1 and the constraint violation at initial
point.  The switching rules treats an iteration
as an h-type iteration whenever the current
constraint violation is larger than theta\_min
(see paragraph before Eqn. (19) in the
implementation paper). The valid range for this real option is 
$0 <  {\tt theta\_min\_fact } <  {\tt +inf}$
and its default value is $0.0001$.


\htmlanchor{sec:tiny_step_tol}
\paragraph{tiny\_step\_tol:}\label{sec:tiny_step_tol} Tolerance for detecting numerically insignificant steps. $\;$ \\
 If the search direction in the primal variables
(x and s) is, in relative terms for each
component, less than this value, the algorithm
accepts the full step without line search.  If
this happens repeatedly, the algorithm will
terminate with a corresponding exit message. The
default value is 10 times machine precision. The valid range for this real option is 
$0 \le {\tt tiny\_step\_tol } <  {\tt +inf}$
and its default value is $2.22045 \cdot 10^{-15}$.


\htmlanchor{sec:tiny_step_y_tol}
\paragraph{tiny\_step\_y\_tol:}\label{sec:tiny_step_y_tol} Tolerance for quitting because of numerically insignificant steps. $\;$ \\
 If the search direction in the primal variables
(x and s) is, in relative terms for each
component, repeatedly less than tiny\_step\_tol,
and the step in the y variables is smaller than
this threshold, the algorithm will terminate. The valid range for this real option is 
$0 \le {\tt tiny\_step\_y\_tol } <  {\tt +inf}$
and its default value is $0.01$.


\htmlanchor{sec:watchdog_shortened_iter_trigger}
\paragraph{watchdog\_shortened\_iter\_trigger:}\label{sec:watchdog_shortened_iter_trigger} Number of shortened iterations that trigger the watchdog. $\;$ \\
 If the number of successive iterations in which
the backtracking line search did not accept the
first trial point exceeds this number, the
watchdog procedure is activated.  Choosing "0"
here disables the watchdog procedure. The valid range for this integer option is
$0 \le {\tt watchdog\_shortened\_iter\_trigger } <  {\tt +inf}$
and its default value is $10$.


\htmlanchor{sec:watchdog_trial_iter_max}
\paragraph{watchdog\_trial\_iter\_max:}\label{sec:watchdog_trial_iter_max} Maximum number of watchdog iterations. $\;$ \\
 This option determines the number of trial
iterations allowed before the watchdog procedure
is aborted and the algorithm returns to the
stored point. The valid range for this integer option is
$1 \le {\tt watchdog\_trial\_iter\_max } <  {\tt +inf}$
and its default value is $3$.


\subsection{Linear Solver}
\label{sec:Linear_Solver}
\htmlanchor{sec:Linear_Solver}
\htmlanchor{sec:linear_scaling_on_demand}
\paragraph{linear\_scaling\_on\_demand:}\label{sec:linear_scaling_on_demand} Flag indicating that linear scaling is only done if it seems required. $\;$ \\
 This option is only important if a linear scaling
method (e.g., mc19) is used.  If you choose "no",
then the scaling factors are computed for every
linear system from the start.  This can be quite
expensive. Choosing "yes" means that the
algorithm will start the scaling method only when
the solutions to the linear system seem not good,
and then use it until the end.
The default value for this string option is "yes".
\\ 
Possible values:
\begin{itemize}
   \item no: Always scale the linear system.
   \item yes: Start using linear system scaling if solutions
seem not good.
\end{itemize}

\htmlanchor{sec:linear_solver}
\paragraph{linear\_solver:}\label{sec:linear_solver} Linear solver used for step computations. $\;$ \\
 Determines which linear algebra package is to be
used for the solution of the augmented linear
system (for obtaining the search directions).
Note, the code must have been compiled with the
linear solver you want to choose. Depending on
your Ipopt installation, not all options are
available.
The default value for this string option is "ma27".
\\ 
Possible values:
\begin{itemize}
   \item ma27: use the Harwell routine MA27
   \item ma57: use the Harwell routine MA57
   \item ma77: use the Harwell routine HSL\_MA77
   \item ma86: use the Harwell routine HSL\_MA86
   \item pardiso: use the Pardiso package
   \item wsmp: use WSMP package
   \item mumps: use MUMPS package
   \item custom: use custom linear solver
\end{itemize}

\htmlanchor{sec:linear_system_scaling}
\paragraph{linear\_system\_scaling:}\label{sec:linear_system_scaling} Method for scaling the linear system. $\;$ \\
 Determines the method used to compute symmetric
scaling factors for the augmented system (see
also the "linear\_scaling\_on\_demand" option). 
This scaling is independent of the NLP problem
scaling.  By default, MC19 is only used if MA27
or MA57 are selected as linear solvers. This
value is only available if Ipopt has been
compiled with MC19.
The default value for this string option is "mc19".
\\ 
Possible values:
\begin{itemize}
   \item none: no scaling will be performed
   \item mc19: use the Harwell routine MC19
   \item slack-based: use the slack values
\end{itemize}

\subsection{MA27 Linear Solver}
\label{sec:MA27_Linear_Solver}
\htmlanchor{sec:MA27_Linear_Solver}
\htmlanchor{sec:ma27_ignore_singularity}
\paragraph{ma27\_ignore\_singularity:}\label{sec:ma27_ignore_singularity} Enables MA27's ability to solve a linear system even if the matrix is singular. $\;$ \\
 Setting this option to "yes" means that Ipopt
will call MA27 to compute solutions for right
hand sides, even if MA27 has detected that the
matrix is singular (but is still able to solve
the linear system). In some cases this might be
better than using Ipopt's heuristic of small
perturbation of the lower diagonal of the KKT
matrix.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: Don't have MA27 solve singular systems
   \item yes: Have MA27 solve singular systems
\end{itemize}

\htmlanchor{sec:ma27_la_init_factor}
\paragraph{ma27\_la\_init\_factor:}\label{sec:ma27_la_init_factor} Real workspace memory for MA27. $\;$ \\
 The initial real workspace memory =
la\_init\_factor * memory required by unfactored
system. Ipopt will increase the workspace size by
meminc\_factor if required.  This option is only
available if  Ipopt has been compiled with MA27. The valid range for this real option is 
$1 \le {\tt ma27\_la\_init\_factor } <  {\tt +inf}$
and its default value is $5$.


\htmlanchor{sec:ma27_liw_init_factor}
\paragraph{ma27\_liw\_init\_factor:}\label{sec:ma27_liw_init_factor} Integer workspace memory for MA27. $\;$ \\
 The initial integer workspace memory =
liw\_init\_factor * memory required by unfactored
system. Ipopt will increase the workspace size by
meminc\_factor if required.  This option is only
available if Ipopt has been compiled with MA27. The valid range for this real option is 
$1 \le {\tt ma27\_liw\_init\_factor } <  {\tt +inf}$
and its default value is $5$.


\htmlanchor{sec:ma27_meminc_factor}
\paragraph{ma27\_meminc\_factor:}\label{sec:ma27_meminc_factor} Increment factor for workspace size for MA27. $\;$ \\
 If the integer or real workspace is not large
enough, Ipopt will increase its size by this
factor.  This option is only available if Ipopt
has been compiled with MA27. The valid range for this real option is 
$1 \le {\tt ma27\_meminc\_factor } <  {\tt +inf}$
and its default value is $10$.


\htmlanchor{sec:ma27_pivtol}
\paragraph{ma27\_pivtol:}\label{sec:ma27_pivtol} Pivot tolerance for the linear solver MA27. $\;$ \\
 A smaller number pivots for sparsity, a larger
number pivots for stability.  This option is only
available if Ipopt has been compiled with MA27. The valid range for this real option is 
$0 <  {\tt ma27\_pivtol } <  1$
and its default value is $1 \cdot 10^{-08}$.


\htmlanchor{sec:ma27_pivtolmax}
\paragraph{ma27\_pivtolmax:}\label{sec:ma27_pivtolmax} Maximum pivot tolerance for the linear solver MA27. $\;$ \\
 Ipopt may increase pivtol as high as pivtolmax to
get a more accurate solution to the linear
system.  This option is only available if Ipopt
has been compiled with MA27. The valid range for this real option is 
$0 <  {\tt ma27\_pivtolmax } <  1$
and its default value is $0.0001$.


\htmlanchor{sec:ma27_skip_inertia_check}
\paragraph{ma27\_skip\_inertia\_check:}\label{sec:ma27_skip_inertia_check} Always pretend inertia is correct. $\;$ \\
 Setting this option to "yes" essentially disables
inertia check. This option makes the algorithm
non-robust and easily fail, but it might give
some insight into the necessity of inertia
control.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: check inertia
   \item yes: skip inertia check
\end{itemize}

\subsection{MA28 Linear Solver}
\label{sec:MA28_Linear_Solver}
\htmlanchor{sec:MA28_Linear_Solver}
\htmlanchor{sec:ma28_pivtol}
\paragraph{ma28\_pivtol:}\label{sec:ma28_pivtol} Pivot tolerance for linear solver MA28. $\;$ \\
 This is used when MA28 tries to find the
dependent constraints. The valid range for this real option is 
$0 <  {\tt ma28\_pivtol } \le 1$
and its default value is $0.01$.


\subsection{MA57 Linear Solver}
\label{sec:MA57_Linear_Solver}
\htmlanchor{sec:MA57_Linear_Solver}
\htmlanchor{sec:ma57_automatic_scaling}
\paragraph{ma57\_automatic\_scaling:}\label{sec:ma57_automatic_scaling} Controls MA57 automatic scaling $\;$ \\
 This option controls the internal scaling option
of MA57.This is ICNTL(15) in MA57.
The default value for this string option is "yes".
\\ 
Possible values:
\begin{itemize}
   \item no: Do not scale the linear system matrix
   \item yes: Scale the linear system matrix
\end{itemize}

\htmlanchor{sec:ma57_block_size}
\paragraph{ma57\_block\_size:}\label{sec:ma57_block_size} Controls block size used by Level 3 BLAS in MA57BD $\;$ \\
 This is ICNTL(11) in MA57. The valid range for this integer option is
$1 \le {\tt ma57\_block\_size } <  {\tt +inf}$
and its default value is $16$.


\htmlanchor{sec:ma57_node_amalgamation}
\paragraph{ma57\_node\_amalgamation:}\label{sec:ma57_node_amalgamation} Node amalgamation parameter $\;$ \\
 This is ICNTL(12) in MA57. The valid range for this integer option is
$1 \le {\tt ma57\_node\_amalgamation } <  {\tt +inf}$
and its default value is $16$.


\htmlanchor{sec:ma57_pivot_order}
\paragraph{ma57\_pivot\_order:}\label{sec:ma57_pivot_order} Controls pivot order in MA57 $\;$ \\
 This is ICNTL(6) in MA57. The valid range for this integer option is
$0 \le {\tt ma57\_pivot\_order } \le 5$
and its default value is $5$.


\htmlanchor{sec:ma57_pivtol}
\paragraph{ma57\_pivtol:}\label{sec:ma57_pivtol} Pivot tolerance for the linear solver MA57. $\;$ \\
 A smaller number pivots for sparsity, a larger
number pivots for stability. This option is only
available if Ipopt has been compiled with MA57. The valid range for this real option is 
$0 <  {\tt ma57\_pivtol } <  1$
and its default value is $1 \cdot 10^{-08}$.


\htmlanchor{sec:ma57_pivtolmax}
\paragraph{ma57\_pivtolmax:}\label{sec:ma57_pivtolmax} Maximum pivot tolerance for the linear solver MA57. $\;$ \\
 Ipopt may increase pivtol as high as
ma57\_pivtolmax to get a more accurate solution
to the linear system.  This option is only
available if Ipopt has been compiled with MA57. The valid range for this real option is 
$0 <  {\tt ma57\_pivtolmax } <  1$
and its default value is $0.0001$.


\htmlanchor{sec:ma57_pre_alloc}
\paragraph{ma57\_pre\_alloc:}\label{sec:ma57_pre_alloc} Safety factor for work space memory allocation for the linear solver MA57. $\;$ \\
 If 1 is chosen, the suggested amount of work
space is used.  However, choosing a larger number
might avoid reallocation if the suggest values do
not suffice.  This option is only available if
Ipopt has been compiled with MA57. The valid range for this real option is 
$1 \le {\tt ma57\_pre\_alloc } <  {\tt +inf}$
and its default value is $1.05$.


\htmlanchor{sec:ma57_small_pivot_flag}
\paragraph{ma57\_small\_pivot\_flag:}\label{sec:ma57_small_pivot_flag} If set to 1, then when small entries defined by CNTL(2) are detected they are removed and the corresponding pivots placed at the end of the factorization.  This can be particularly efficient if the matrix is highly rank deficient. $\;$ \\
 This is ICNTL(16) in MA57. The valid range for this integer option is
$0 \le {\tt ma57\_small\_pivot\_flag } \le 1$
and its default value is $0$.


\subsection{MA86 Linear Solver}
\label{sec:MA86_Linear_Solver}
\htmlanchor{sec:MA86_Linear_Solver}
\htmlanchor{sec:ma86_nemin}
\paragraph{ma86\_nemin:}\label{sec:ma86_nemin} Node Amalgamation parameter $\;$ \\
 Two nodes in elimination tree are merged if
result has fewer than ma86\_nemin variables. The valid range for this integer option is
$1 \le {\tt ma86\_nemin } <  {\tt +inf}$
and its default value is $32$.


\htmlanchor{sec:ma86_print_level}
\paragraph{ma86\_print\_level:}\label{sec:ma86_print_level} Debug printing level for the linear solver MA86 $\;$ \\
 Meep The valid range for this integer option is
${\tt -inf} <  {\tt ma86\_print\_level } <  {\tt +inf}$
and its default value is $0$.


\htmlanchor{sec:ma86_small}
\paragraph{ma86\_small:}\label{sec:ma86_small} Zero Pivot Threshold $\;$ \\
 Any pivot less than ma86\_small is treated as
zero. The valid range for this real option is 
$0 \le {\tt ma86\_small } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-20}$.


\htmlanchor{sec:ma86_static}
\paragraph{ma86\_static:}\label{sec:ma86_static} Static Pivoting Threshold $\;$ \\
 See MA86 documentation. Either ma86\_static=0.0
or ma86\_static>ma86\_small. ma86\_static=0.0
disables static pivoting. The valid range for this real option is 
$0 \le {\tt ma86\_static } <  {\tt +inf}$
and its default value is $0$.


\htmlanchor{sec:ma86_u}
\paragraph{ma86\_u:}\label{sec:ma86_u} Pivoting Threshold $\;$ \\
 See MA86 documentation. The valid range for this real option is 
$0 \le {\tt ma86\_u } \le 0.5$
and its default value is $1 \cdot 10^{-08}$.


\htmlanchor{sec:ma86_umax}
\paragraph{ma86\_umax:}\label{sec:ma86_umax} Maximum Pivoting Threshold $\;$ \\
 See MA86 documentation. The valid range for this real option is 
$0 \le {\tt ma86\_umax } \le 0.5$
and its default value is $0.0001$.


\subsection{Mumps Linear Solver}
\label{sec:Mumps_Linear_Solver}
\htmlanchor{sec:Mumps_Linear_Solver}
\htmlanchor{sec:mumps_dep_tol}
\paragraph{mumps\_dep\_tol:}\label{sec:mumps_dep_tol} Pivot threshold for detection of linearly dependent constraints in MUMPS. $\;$ \\
 When MUMPS is used to determine linearly
dependent constraints, this is determines the
threshold for a pivot to be considered zero. 
This is CNTL(3) in MUMPS. The valid range for this real option is 
${\tt -inf} <  {\tt mumps\_dep\_tol } <  {\tt +inf}$
and its default value is $-1$.


\htmlanchor{sec:mumps_mem_percent}
\paragraph{mumps\_mem\_percent:}\label{sec:mumps_mem_percent} Percentage increase in the estimated working space for MUMPS. $\;$ \\
 In MUMPS when significant extra fill-in is caused
by numerical pivoting, larger values of
mumps\_mem\_percent may help use the workspace
more efficiently.  On the other hand, if memory
requirement are too large at the very beginning
of the optimization, choosing a much smaller
value for this option, such as 5, might reduce
memory requirements. The valid range for this integer option is
$0 \le {\tt mumps\_mem\_percent } <  {\tt +inf}$
and its default value is $1000$.


\htmlanchor{sec:mumps_permuting_scaling}
\paragraph{mumps\_permuting\_scaling:}\label{sec:mumps_permuting_scaling} Controls permuting and scaling in MUMPS $\;$ \\
 This is ICNTL(6) in MUMPS. The valid range for this integer option is
$0 \le {\tt mumps\_permuting\_scaling } \le 7$
and its default value is $7$.


\htmlanchor{sec:mumps_pivot_order}
\paragraph{mumps\_pivot\_order:}\label{sec:mumps_pivot_order} Controls pivot order in MUMPS $\;$ \\
 This is ICNTL(7) in MUMPS. The valid range for this integer option is
$0 \le {\tt mumps\_pivot\_order } \le 7$
and its default value is $7$.


\htmlanchor{sec:mumps_pivtol}
\paragraph{mumps\_pivtol:}\label{sec:mumps_pivtol} Pivot tolerance for the linear solver MUMPS. $\;$ \\
 A smaller number pivots for sparsity, a larger
number pivots for stability.  This option is only
available if Ipopt has been compiled with MUMPS. The valid range for this real option is 
$0 \le {\tt mumps\_pivtol } \le 1$
and its default value is $1 \cdot 10^{-06}$.


\htmlanchor{sec:mumps_pivtolmax}
\paragraph{mumps\_pivtolmax:}\label{sec:mumps_pivtolmax} Maximum pivot tolerance for the linear solver MUMPS. $\;$ \\
 Ipopt may increase pivtol as high as pivtolmax to
get a more accurate solution to the linear
system.  This option is only available if Ipopt
has been compiled with MUMPS. The valid range for this real option is 
$0 \le {\tt mumps\_pivtolmax } \le 1$
and its default value is $0.1$.


\htmlanchor{sec:mumps_scaling}
\paragraph{mumps\_scaling:}\label{sec:mumps_scaling} Controls scaling in MUMPS $\;$ \\
 This is ICNTL(8) in MUMPS. The valid range for this integer option is
$-2 \le {\tt mumps\_scaling } \le 77$
and its default value is $77$.


\subsection{NLP}
\label{sec:NLP}
\htmlanchor{sec:NLP}
\htmlanchor{sec:bound_relax_factor}
\paragraph{bound\_relax\_factor:}\label{sec:bound_relax_factor} Factor for initial relaxation of the bounds. $\;$ \\
 Before start of the optimization, the bounds
given by the user are relaxed.  This option sets
the factor for this relaxation.  If it is set to
zero, then then bounds relaxation is disabled.
(See Eqn.(35) in implementation paper.) The valid range for this real option is 
$0 \le {\tt bound\_relax\_factor } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-08}$.


\htmlanchor{sec:check_derivatives_for_naninf}
\paragraph{check\_derivatives\_for\_naninf:}\label{sec:check_derivatives_for_naninf} Indicates whether it is desired to check for Nan/Inf in derivative matrices $\;$ \\
 Activating this option will cause an error if an
invalid number is detected in the constraint
Jacobians or the Lagrangian Hessian.  If this is
not activated, the test is skipped, and the
algorithm might proceed with invalid numbers and
fail.  If test is activated and an invalid number
is detected, the matrix is written to output with
print\_level corresponding to J\_MORE\_DETAILED;
so beware of large output!
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: Don't check (faster).
   \item yes: Check Jacobians and Hessian for Nan and Inf.
\end{itemize}

\htmlanchor{sec:dependency_detection_with_rhs}
\paragraph{dependency\_detection\_with\_rhs:}\label{sec:dependency_detection_with_rhs} Indicates if the right hand sides of the constraints should be considered during dependency detection $\;$ \\

The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: only look at gradients
   \item yes: also consider right hand side
\end{itemize}

\htmlanchor{sec:dependency_detector}
\paragraph{dependency\_detector:}\label{sec:dependency_detector} Indicates which linear solver should be used to detect linearly dependent equality constraints. $\;$ \\
 The default and available choices depend on how
Ipopt has been compiled.  This is experimental
and does not work well.
The default value for this string option is "none".
\\ 
Possible values:
\begin{itemize}
   \item none: don't check; no extra work at beginning
   \item mumps: use MUMPS
   \item wsmp: use WSMP
   \item ma28: use MA28
\end{itemize}

\htmlanchor{sec:fixed_variable_treatment}
\paragraph{fixed\_variable\_treatment:}\label{sec:fixed_variable_treatment} Determines how fixed variables should be handled. $\;$ \\
 The main difference between those options is that
the starting point in the "make\_constraint" case
still has the fixed variables at their given
values, whereas in the case "make\_parameter" the
functions are always evaluated with the fixed
values for those variables.  Also, for
"relax\_bounds", the fixing bound constraints are
relaxed (according to" bound\_relax\_factor").
For both "make\_constraints" and "relax\_bounds",
bound multipliers are computed for the fixed
variables.
The default value for this string option is "make\_parameter".
\\ 
Possible values:
\begin{itemize}
   \item make\_parameter: Remove fixed variable from optimization
variables
   \item make\_constraint: Add equality constraints fixing variables
   \item relax\_bounds: Relax fixing bound constraints
\end{itemize}

\htmlanchor{sec:hessian_constant}
\paragraph{hessian\_constant:}\label{sec:hessian_constant} Indicates whether the problem is a quadratic problem $\;$ \\
 Activating this option will cause Ipopt to ask
for the Hessian of the Lagrangian function only
once from the NLP and reuse this information
later.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: Assume that Hessian changes
   \item yes: Assume that Hessian is constant
\end{itemize}

\htmlanchor{sec:honor_original_bounds}
\paragraph{honor\_original\_bounds:}\label{sec:honor_original_bounds} Indicates whether final points should be projected into original bounds. $\;$ \\
 Ipopt might relax the bounds during the
optimization (see, e.g., option
"bound\_relax\_factor").  This option determines
whether the final point should be projected back
into the user-provide original bounds after the
optimization.
The default value for this string option is "yes".
\\ 
Possible values:
\begin{itemize}
   \item no: Leave final point unchanged
   \item yes: Project final point back into original bounds
\end{itemize}

\htmlanchor{sec:jac_c_constant}
\paragraph{jac\_c\_constant:}\label{sec:jac_c_constant} Indicates whether all equality constraints are linear $\;$ \\
 Activating this option will cause Ipopt to ask
for the Jacobian of the equality constraints only
once from the NLP and reuse this information
later.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: Don't assume that all equality constraints are
linear
   \item yes: Assume that equality constraints Jacobian are
constant
\end{itemize}

\htmlanchor{sec:jac_d_constant}
\paragraph{jac\_d\_constant:}\label{sec:jac_d_constant} Indicates whether all inequality constraints are linear $\;$ \\
 Activating this option will cause Ipopt to ask
for the Jacobian of the inequality constraints
only once from the NLP and reuse this information
later.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: Don't assume that all inequality constraints
are linear
   \item yes: Assume that equality constraints Jacobian are
constant
\end{itemize}

\htmlanchor{sec:kappa_d}
\paragraph{kappa\_d:}\label{sec:kappa_d} Weight for linear damping term (to handle one-sided bounds). $\;$ \\
 (see Section 3.7 in implementation paper.) The valid range for this real option is 
$0 \le {\tt kappa\_d } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-05}$.


\htmlanchor{sec:nlp_lower_bound_inf}
\paragraph{nlp\_lower\_bound\_inf:}\label{sec:nlp_lower_bound_inf} any bound less or equal this value will be considered -inf (i.e. not lower bounded). $\;$ \\
 The valid range for this real option is 
${\tt -inf} <  {\tt nlp\_lower\_bound\_inf } <  {\tt +inf}$
and its default value is $-1 \cdot 10^{+19}$.


\htmlanchor{sec:nlp_upper_bound_inf}
\paragraph{nlp\_upper\_bound\_inf:}\label{sec:nlp_upper_bound_inf} any bound greater or this value will be considered +inf (i.e. not upper bounded). $\;$ \\
 The valid range for this real option is 
${\tt -inf} <  {\tt nlp\_upper\_bound\_inf } <  {\tt +inf}$
and its default value is $1 \cdot 10^{+19}$.


\htmlanchor{sec:num_linear_variables}
\paragraph{num\_linear\_variables:}\label{sec:num_linear_variables} Number of linear variables $\;$ \\
 When the Hessian is approximated, it is assumed
that the first num\_linear\_variables variables
are linear.  The Hessian is then not approximated
in this space.  If the
get\_number\_of\_nonlinear\_variables method in
the TNLP is implemented, this option is ignored. The valid range for this integer option is
$0 \le {\tt num\_linear\_variables } <  {\tt +inf}$
and its default value is $0$.


\subsection{NLP Scaling}
\label{sec:NLP_Scaling}
\htmlanchor{sec:NLP_Scaling}
\htmlanchor{sec:nlp_scaling_constr_target_gradient}
\paragraph{nlp\_scaling\_constr\_target\_gradient:}\label{sec:nlp_scaling_constr_target_gradient} Target value for constraint function gradient size. $\;$ \\
 If a positive number is chosen, the scaling
factor the constraint functions is computed so
that the gradient has the max norm of the given
size at the starting point.  This overrides
nlp\_scaling\_max\_gradient for the constraint
functions. The valid range for this real option is 
$0 \le {\tt nlp\_scaling\_constr\_target\_gradient } <  {\tt +inf}$
and its default value is $0$.


\htmlanchor{sec:nlp_scaling_max_gradient}
\paragraph{nlp\_scaling\_max\_gradient:}\label{sec:nlp_scaling_max_gradient} Maximum gradient after NLP scaling. $\;$ \\
 This is the gradient scaling cut-off. If the
maximum gradient is above this value, then
gradient based scaling will be performed. Scaling
parameters are calculated to scale the maximum
gradient back to this value. (This is g\_max in
Section 3.8 of the implementation paper.) Note:
This option is only used if
"nlp\_scaling\_method" is chosen as
"gradient-based". The valid range for this real option is 
$0 <  {\tt nlp\_scaling\_max\_gradient } <  {\tt +inf}$
and its default value is $100$.


\htmlanchor{sec:nlp_scaling_method}
\paragraph{nlp\_scaling\_method:}\label{sec:nlp_scaling_method} Select the technique used for scaling the NLP. $\;$ \\
 Selects the technique used for scaling the
problem internally before it is solved. For
user-scaling, the parameters come from the NLP.
If you are using AMPL, they can be specified
through suffixes ("scaling\_factor")
The default value for this string option is "gradient-based".
\\ 
Possible values:
\begin{itemize}
   \item none: no problem scaling will be performed
   \item user-scaling: scaling parameters will come from the user
   \item gradient-based: scale the problem so the maximum gradient at
the starting point is scaling\_max\_gradient
   \item equilibration-based: scale the problem so that first derivatives are
of order 1 at random points (only available
with MC19)
\end{itemize}

\htmlanchor{sec:nlp_scaling_min_value}
\paragraph{nlp\_scaling\_min\_value:}\label{sec:nlp_scaling_min_value} Minimum value of gradient-based scaling values. $\;$ \\
 This is the lower bound for the scaling factors
computed by gradient-based scaling method.  If
some derivatives of some functions are huge, the
scaling factors will otherwise become very small,
and the (unscaled) final constraint violation,
for example, might then be significant.  Note:
This option is only used if
"nlp\_scaling\_method" is chosen as
"gradient-based". The valid range for this real option is 
$0 \le {\tt nlp\_scaling\_min\_value } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-08}$.


\htmlanchor{sec:nlp_scaling_obj_target_gradient}
\paragraph{nlp\_scaling\_obj\_target\_gradient:}\label{sec:nlp_scaling_obj_target_gradient} Target value for objective function gradient size. $\;$ \\
 If a positive number is chosen, the scaling
factor the objective function is computed so that
the gradient has the max norm of the given size
at the starting point.  This overrides
nlp\_scaling\_max\_gradient for the objective
function. The valid range for this real option is 
$0 \le {\tt nlp\_scaling\_obj\_target\_gradient } <  {\tt +inf}$
and its default value is $0$.


\htmlanchor{sec:obj_scaling_factor}
\paragraph{obj\_scaling\_factor:}\label{sec:obj_scaling_factor} Scaling factor for the objective function. $\;$ \\
 This option sets a scaling factor for the
objective function. The scaling is seen
internally by Ipopt but the unscaled objective is
reported in the console output. If additional
scaling parameters are computed (e.g.
user-scaling or gradient-based), both factors are
multiplied. If this value is chosen to be
negative, Ipopt will maximize the objective
function instead of minimizing it. The valid range for this real option is 
${\tt -inf} <  {\tt obj\_scaling\_factor } <  {\tt +inf}$
and its default value is $1$.


\subsection{Output}
\label{sec:Output}
\htmlanchor{sec:Output}
\htmlanchor{sec:file_print_level}
\paragraph{file\_print\_level:}\label{sec:file_print_level} Verbosity level for output file. $\;$ \\
 NOTE: This option only works when read from the
ipopt.opt options file! Determines the verbosity
level for the file specified by "output\_file". 
By default it is the same as "print\_level". The valid range for this integer option is
$0 \le {\tt file\_print\_level } \le 12$
and its default value is $5$.


\htmlanchor{sec:inf_pr_output}
\paragraph{inf\_pr\_output:}\label{sec:inf_pr_output} Determines what value is printed in the "inf\_pr" output column. $\;$ \\
 Ipopt works with a reformulation of the original
problem, where slacks are introduced and the
problem might have been scaled.  The choice
"internal" prints out the constraint violation of
this formulation. With "original" the true
constraint violation in the original NLP is
printed.
The default value for this string option is "original".
\\ 
Possible values:
\begin{itemize}
   \item internal: max-norm of violation of internal equality
constraints
   \item original: maximal constraint violation in original NLP
\end{itemize}

\htmlanchor{sec:option_file_name}
\paragraph{option\_file\_name:}\label{sec:option_file_name} File name of options file (to overwrite default). $\;$ \\
 By default, the name of the Ipopt options file is
"ipopt.opt" - or something else if specified in
the IpoptApplication::Initialize call. If this
option is set by SetStringValue BEFORE the
options file is read, it specifies the name of
the options file.  It does not make any sense to
specify this option within the options file.
The default value for this string option is "".
\\ 
Possible values:
\begin{itemize}
   \item *: Any acceptable standard file name
\end{itemize}

\htmlanchor{sec:output_file}
\paragraph{output\_file:}\label{sec:output_file} File name of desired output file (leave unset for no file output). $\;$ \\
 NOTE: This option only works when read from the
ipopt.opt options file! An output file with this
name will be written (leave unset for no file
output).  The verbosity level is by default set
to "print\_level", but can be overridden with
"file\_print\_level".  The file name is changed
to use only small letters.
The default value for this string option is "".
\\ 
Possible values:
\begin{itemize}
   \item *: Any acceptable standard file name
\end{itemize}

\htmlanchor{sec:print_info_string}
\paragraph{print\_info\_string:}\label{sec:print_info_string} Enables printing of additional info string at end of iteration output. $\;$ \\
 This string contains some insider information
about the current iteration.  For details, look
for "Diagnostic Tags" in the Ipopt documentation.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: don't print string
   \item yes: print string at end of each iteration output
\end{itemize}

\htmlanchor{sec:print_level}
\paragraph{print\_level:}\label{sec:print_level} Output verbosity level. $\;$ \\
 Sets the default verbosity level for console
output. The larger this value the more detailed
is the output. The valid range for this integer option is
$0 \le {\tt print\_level } \le 12$
and its default value is $5$.


\htmlanchor{sec:print_options_documentation}
\paragraph{print\_options\_documentation:}\label{sec:print_options_documentation} Switch to print all algorithmic options. $\;$ \\
 If selected, the algorithm will print the list of
all available algorithmic options with some
documentation before solving the optimization
problem.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: don't print list
   \item yes: print list
\end{itemize}

\htmlanchor{sec:print_timing_statistics}
\paragraph{print\_timing\_statistics:}\label{sec:print_timing_statistics} Switch to print timing statistics. $\;$ \\
 If selected, the program will print the CPU usage
(user time) for selected tasks.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: don't print statistics
   \item yes: print all timing statistics
\end{itemize}

\htmlanchor{sec:print_user_options}
\paragraph{print\_user\_options:}\label{sec:print_user_options} Print all options set by the user. $\;$ \\
 If selected, the algorithm will print the list of
all options set by the user including their
values and whether they have been used.  In some
cases this information might be incorrect, due to
the internal program flow.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: don't print options
   \item yes: print options
\end{itemize}

\htmlanchor{sec:replace_bounds}
\paragraph{replace\_bounds:}\label{sec:replace_bounds} Indicates if all variable bounds should be replaced by inequality constraints $\;$ \\
 This option must be set for the inexact algorithm
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: leave bounds on variables
   \item yes: replace variable bounds by inequality
constraints
\end{itemize}

\htmlanchor{sec:skip_finalize_solution_call}
\paragraph{skip\_finalize\_solution\_call:}\label{sec:skip_finalize_solution_call} Indicates if call to NLP::FinalizeSolution after optimization should be suppressed $\;$ \\
 In some Ipopt applications, the user might want
to call the FinalizeSolution method separately. 
Setting this option to "yes" will cause the
IpoptApplication object to suppress the default
call to that method.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: call FinalizeSolution
   \item yes: do not call FinalizeSolution
\end{itemize}

\subsection{Pardiso Linear Solver}
\label{sec:Pardiso_Linear_Solver}
\htmlanchor{sec:Pardiso_Linear_Solver}
\htmlanchor{sec:pardiso_iter_coarse_size}
\paragraph{pardiso\_iter\_coarse\_size:}\label{sec:pardiso_iter_coarse_size} Maximum Size of Coarse Grid Matrix $\;$ \\
 DPARM(3) The valid range for this integer option is
$1 \le {\tt pardiso\_iter\_coarse\_size } <  {\tt +inf}$
and its default value is $5000$.


\htmlanchor{sec:pardiso_iter_dropping_factor}
\paragraph{pardiso\_iter\_dropping\_factor:}\label{sec:pardiso_iter_dropping_factor} dropping value for incomplete factor $\;$ \\
 DPARM(5) The valid range for this real option is 
$0 <  {\tt pardiso\_iter\_dropping\_factor } <  1$
and its default value is $0.5$.


\htmlanchor{sec:pardiso_iter_dropping_schur}
\paragraph{pardiso\_iter\_dropping\_schur:}\label{sec:pardiso_iter_dropping_schur} dropping value for sparsify schur complement factor $\;$ \\
 DPARM(6) The valid range for this real option is 
$0 <  {\tt pardiso\_iter\_dropping\_schur } <  1$
and its default value is $0.1$.


\htmlanchor{sec:pardiso_iter_inverse_norm_factor}
\paragraph{pardiso\_iter\_inverse\_norm\_factor:}\label{sec:pardiso_iter_inverse_norm_factor}  $\;$ \\
 DPARM(8) The valid range for this real option is 
$1 <  {\tt pardiso\_iter\_inverse\_norm\_factor } <  {\tt +inf}$
and its default value is $5 \cdot 10^{+06}$.


\htmlanchor{sec:pardiso_iter_max_levels}
\paragraph{pardiso\_iter\_max\_levels:}\label{sec:pardiso_iter_max_levels} Maximum Size of Grid Levels $\;$ \\
 DPARM(4) The valid range for this integer option is
$1 \le {\tt pardiso\_iter\_max\_levels } <  {\tt +inf}$
and its default value is $10$.


\htmlanchor{sec:pardiso_iter_max_row_fill}
\paragraph{pardiso\_iter\_max\_row\_fill:}\label{sec:pardiso_iter_max_row_fill} max fill for each row $\;$ \\
 DPARM(7) The valid range for this integer option is
$1 \le {\tt pardiso\_iter\_max\_row\_fill } <  {\tt +inf}$
and its default value is $10000000$.


\htmlanchor{sec:pardiso_iter_relative_tol}
\paragraph{pardiso\_iter\_relative\_tol:}\label{sec:pardiso_iter_relative_tol} Relative Residual Convergence $\;$ \\
 DPARM(2) The valid range for this real option is 
$0 <  {\tt pardiso\_iter\_relative\_tol } <  1$
and its default value is $1 \cdot 10^{-06}$.


\htmlanchor{sec:pardiso_iterative}
\paragraph{pardiso\_iterative:}\label{sec:pardiso_iterative} Switch on iterative solver in Pardiso library $\;$ \\

The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: 
   \item yes: 
\end{itemize}

\htmlanchor{sec:pardiso_matching_strategy}
\paragraph{pardiso\_matching\_strategy:}\label{sec:pardiso_matching_strategy} Matching strategy to be used by Pardiso $\;$ \\
 This is IPAR(13) in Pardiso manual.  This option
is only available if Ipopt has been compiled with
Pardiso.
The default value for this string option is "complete+2x2".
\\ 
Possible values:
\begin{itemize}
   \item complete: Match complete (IPAR(13)=1)
   \item complete+2x2: Match complete+2x2 (IPAR(13)=2)
   \item constraints: Match constraints (IPAR(13)=3)
\end{itemize}

\htmlanchor{sec:pardiso_max_droptol_corrections}
\paragraph{pardiso\_max\_droptol\_corrections:}\label{sec:pardiso_max_droptol_corrections} Maximal number of decreases of drop tolerance during one solve. $\;$ \\
 This is relevant only for iterative Pardiso
options. The valid range for this integer option is
$1 \le {\tt pardiso\_max\_droptol\_corrections } <  {\tt +inf}$
and its default value is $4$.


\htmlanchor{sec:pardiso_max_iter}
\paragraph{pardiso\_max\_iter:}\label{sec:pardiso_max_iter} Maximum number of Krylov-Subspace Iteration $\;$ \\
 DPARM(1) The valid range for this integer option is
$1 \le {\tt pardiso\_max\_iter } <  {\tt +inf}$
and its default value is $500$.


\htmlanchor{sec:pardiso_msglvl}
\paragraph{pardiso\_msglvl:}\label{sec:pardiso_msglvl} Pardiso message level $\;$ \\
 This determines the amount of analysis output
from the Pardiso solver. This is MSGLVL in the
Pardiso manual. The valid range for this integer option is
$0 \le {\tt pardiso\_msglvl } <  {\tt +inf}$
and its default value is $0$.


\htmlanchor{sec:pardiso_out_of_core_power}
\paragraph{pardiso\_out\_of\_core\_power:}\label{sec:pardiso_out_of_core_power} Enables out-of-core variant of Pardiso $\;$ \\
 Setting this option to a positive integer k makes
Pardiso work in the out-of-core variant where the
factor is split in 2\^k subdomains.  This is
IPARM(50) in the Pardiso manual.  This option is
only available if Ipopt has been compiled with
Pardiso. The valid range for this integer option is
$0 \le {\tt pardiso\_out\_of\_core\_power } <  {\tt +inf}$
and its default value is $0$.


\htmlanchor{sec:pardiso_redo_symbolic_fact_only_if_inertia_wrong}
\paragraph{pardiso\_redo\_symbolic\_fact\_only\_if\_inertia\_wrong:}\label{sec:pardiso_redo_symbolic_fact_only_if_inertia_wrong} Toggle for handling case when elements were perturbed by Pardiso. $\;$ \\
 This option is only available if Ipopt has been
compiled with Pardiso.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: Always redo symbolic factorization when
elements were perturbed
   \item yes: Only redo symbolic factorization when elements
were perturbed if also the inertia was wrong
\end{itemize}

\htmlanchor{sec:pardiso_repeated_perturbation_means_singular}
\paragraph{pardiso\_repeated\_perturbation\_means\_singular:}\label{sec:pardiso_repeated_perturbation_means_singular} Interpretation of perturbed elements. $\;$ \\
 This option is only available if Ipopt has been
compiled with Pardiso.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: Don't assume that matrix is singular if
elements were perturbed after recent symbolic
factorization
   \item yes: Assume that matrix is singular if elements were
perturbed after recent symbolic factorization
\end{itemize}

\htmlanchor{sec:pardiso_skip_inertia_check}
\paragraph{pardiso\_skip\_inertia\_check:}\label{sec:pardiso_skip_inertia_check} Always pretend inertia is correct. $\;$ \\
 Setting this option to "yes" essentially disables
inertia check. This option makes the algorithm
non-robust and easily fail, but it might give
some insight into the necessity of inertia
control.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: check inertia
   \item yes: skip inertia check
\end{itemize}

\subsection{Restoration Phase}
\label{sec:Restoration_Phase}
\htmlanchor{sec:Restoration_Phase}
\htmlanchor{sec:bound_mult_reset_threshold}
\paragraph{bound\_mult\_reset\_threshold:}\label{sec:bound_mult_reset_threshold} Threshold for resetting bound multipliers after the restoration phase. $\;$ \\
 After returning from the restoration phase, the
bound multipliers are updated with a Newton step
for complementarity.  Here, the change in the
primal variables during the entire restoration
phase is taken to be the corresponding primal
Newton step. However, if after the update the
largest bound multiplier exceeds the threshold
specified by this option, the multipliers are all
reset to 1. The valid range for this real option is 
$0 \le {\tt bound\_mult\_reset\_threshold } <  {\tt +inf}$
and its default value is $1000$.


\htmlanchor{sec:constr_mult_reset_threshold}
\paragraph{constr\_mult\_reset\_threshold:}\label{sec:constr_mult_reset_threshold} Threshold for resetting equality and inequality multipliers after restoration phase. $\;$ \\
 After returning from the restoration phase, the
constraint multipliers are recomputed by a least
square estimate.  This option triggers when those
least-square estimates should be ignored. The valid range for this real option is 
$0 \le {\tt constr\_mult\_reset\_threshold } <  {\tt +inf}$
and its default value is $0$.


\htmlanchor{sec:evaluate_orig_obj_at_resto_trial}
\paragraph{evaluate\_orig\_obj\_at\_resto\_trial:}\label{sec:evaluate_orig_obj_at_resto_trial} Determines if the original objective function should be evaluated at restoration phase trial points. $\;$ \\
 Setting this option to "yes" makes the
restoration phase algorithm evaluate the
objective function of the original problem at
every trial point encountered during the
restoration phase, even if this value is not
required.  In this way, it is guaranteed that the
original objective function can be evaluated
without error at all accepted iterates; otherwise
the algorithm might fail at a point where the
restoration phase accepts an iterate that is good
for the restoration phase problem, but not the
original problem.  On the other hand, if the
evaluation of the original objective is
expensive, this might be costly.
The default value for this string option is "yes".
\\ 
Possible values:
\begin{itemize}
   \item no: skip evaluation
   \item yes: evaluate at every trial point
\end{itemize}

\htmlanchor{sec:expect_infeasible_problem}
\paragraph{expect\_infeasible\_problem:}\label{sec:expect_infeasible_problem} Enable heuristics to quickly detect an infeasible problem. $\;$ \\
 This options is meant to activate heuristics that
may speed up the infeasibility determination if
you expect that there is a good chance for the
problem to be infeasible.  In the filter line
search procedure, the restoration phase is called
more quickly than usually, and more reduction in
the constraint violation is enforced before the
restoration phase is left. If the problem is
square, this option is enabled automatically.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: the problem probably be feasible
   \item yes: the problem has a good chance to be infeasible
\end{itemize}

\htmlanchor{sec:expect_infeasible_problem_ctol}
\paragraph{expect\_infeasible\_problem\_ctol:}\label{sec:expect_infeasible_problem_ctol} Threshold for disabling "expect\_infeasible\_problem" option. $\;$ \\
 If the constraint violation becomes smaller than
this threshold, the "expect\_infeasible\_problem"
heuristics in the filter line search are
disabled. If the problem is square, this options
is set to 0. The valid range for this real option is 
$0 \le {\tt expect\_infeasible\_problem\_ctol } <  {\tt +inf}$
and its default value is $0.001$.


\htmlanchor{sec:expect_infeasible_problem_ytol}
\paragraph{expect\_infeasible\_problem\_ytol:}\label{sec:expect_infeasible_problem_ytol} Multiplier threshold for activating "expect\_infeasible\_problem" option. $\;$ \\
 If the max norm of the constraint multipliers
becomes larger than this value and
"expect\_infeasible\_problem" is chosen, then the
restoration phase is entered. The valid range for this real option is 
$0 <  {\tt expect\_infeasible\_problem\_ytol } <  {\tt +inf}$
and its default value is $1 \cdot 10^{+08}$.


\htmlanchor{sec:max_resto_iter}
\paragraph{max\_resto\_iter:}\label{sec:max_resto_iter} Maximum number of successive iterations in restoration phase. $\;$ \\
 The algorithm terminates with an error message if
the number of iterations successively taken in
the restoration phase exceeds this number. The valid range for this integer option is
$0 \le {\tt max\_resto\_iter } <  {\tt +inf}$
and its default value is $3000000$.


\htmlanchor{sec:max_soft_resto_iters}
\paragraph{max\_soft\_resto\_iters:}\label{sec:max_soft_resto_iters} Maximum number of iterations performed successively in soft restoration phase. $\;$ \\
 If the soft restoration phase is performed for
more than so many iterations in a row, the
regular restoration phase is called. The valid range for this integer option is
$0 \le {\tt max\_soft\_resto\_iters } <  {\tt +inf}$
and its default value is $10$.


\htmlanchor{sec:required_infeasibility_reduction}
\paragraph{required\_infeasibility\_reduction:}\label{sec:required_infeasibility_reduction} Required reduction of infeasibility before leaving restoration phase. $\;$ \\
 The restoration phase algorithm is performed,
until a point is found that is acceptable to the
filter and the infeasibility has been reduced by
at least the fraction given by this option. The valid range for this real option is 
$0 \le {\tt required\_infeasibility\_reduction } <  1$
and its default value is $0.9$.


\htmlanchor{sec:resto_failure_feasibility_threshold}
\paragraph{resto\_failure\_feasibility\_threshold:}\label{sec:resto_failure_feasibility_threshold} Threshold for primal infeasibility to declare failure of restoration phase. $\;$ \\
 If the restoration phase is terminated because of
the "acceptable" termination criteria and the
primal infeasibility is smaller than this value,
the restoration phase is declared to have failed.
 The default value is 1e2*tol, where tol is the
general termination tolerance. The valid range for this real option is 
$0 \le {\tt resto\_failure\_feasibility\_threshold } <  {\tt +inf}$
and its default value is $0$.


\htmlanchor{sec:resto_penalty_parameter}
\paragraph{resto\_penalty\_parameter:}\label{sec:resto_penalty_parameter} Penalty parameter in the restoration phase objective function. $\;$ \\
 This is the parameter rho in equation (31a) in
the Ipopt implementation paper. The valid range for this real option is 
$0 <  {\tt resto\_penalty\_parameter } <  {\tt +inf}$
and its default value is $1000$.


\htmlanchor{sec:resto_proximity_weight}
\paragraph{resto\_proximity\_weight:}\label{sec:resto_proximity_weight} Weighting factor for the proximity term in restoration phase objective. $\;$ \\
 This determines how the parameter zera in
equation (29a) in the implementation paper is
computed.  zeta here is
resto\_proximity\_weight*sqrt(mu), where mu is
the current barrier parameter. The valid range for this real option is 
$0 \le {\tt resto\_proximity\_weight } <  {\tt +inf}$
and its default value is $1$.


\htmlanchor{sec:soft_resto_pderror_reduction_factor}
\paragraph{soft\_resto\_pderror\_reduction\_factor:}\label{sec:soft_resto_pderror_reduction_factor} Required reduction in primal-dual error in the soft restoration phase. $\;$ \\
 The soft restoration phase attempts to reduce the
primal-dual error with regular steps. If the
damped primal-dual step (damped only to satisfy
the fraction-to-the-boundary rule) is not
decreasing the primal-dual error by at least this
factor, then the regular restoration phase is
called. Choosing "0" here disables the soft
restoration phase. The valid range for this real option is 
$0 \le {\tt soft\_resto\_pderror\_reduction\_factor } <  {\tt +inf}$
and its default value is $0.9999$.


\htmlanchor{sec:start_with_resto}
\paragraph{start\_with\_resto:}\label{sec:start_with_resto} Tells algorithm to switch to restoration phase in first iteration. $\;$ \\
 Setting this option to "yes" forces the algorithm
to switch to the feasibility restoration phase in
the first iteration. If the initial point is
feasible, the algorithm will abort with a failure.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: don't force start in restoration phase
   \item yes: force start in restoration phase
\end{itemize}

\subsection{Step Calculation}
\label{sec:Step_Calculation}
\htmlanchor{sec:Step_Calculation}
\htmlanchor{sec:fast_step_computation}
\paragraph{fast\_step\_computation:}\label{sec:fast_step_computation} Indicates if the linear system should be solved quickly. $\;$ \\
 If set to yes, the algorithm assumes that the
linear system that is solved to obtain the search
direction, is solved sufficiently well. In that
case, no residuals are computed, and the
computation of the search direction is a little
faster.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: Verify solution of linear system by computing
residuals.
   \item yes: Trust that linear systems are solved well.
\end{itemize}

\htmlanchor{sec:first_hessian_perturbation}
\paragraph{first\_hessian\_perturbation:}\label{sec:first_hessian_perturbation} Size of first x-s perturbation tried. $\;$ \\
 The first value tried for the x-s perturbation in
the inertia correction scheme.(This is delta\_0
in the implementation paper.) The valid range for this real option is 
$0 <  {\tt first\_hessian\_perturbation } <  {\tt +inf}$
and its default value is $0.0001$.


\htmlanchor{sec:jacobian_regularization_exponent}
\paragraph{jacobian\_regularization\_exponent:}\label{sec:jacobian_regularization_exponent} Exponent for mu in the regularization for rank-deficient constraint Jacobians. $\;$ \\
 (This is kappa\_c in the implementation paper.) The valid range for this real option is 
$0 \le {\tt jacobian\_regularization\_exponent } <  {\tt +inf}$
and its default value is $0.25$.


\htmlanchor{sec:jacobian_regularization_value}
\paragraph{jacobian\_regularization\_value:}\label{sec:jacobian_regularization_value} Size of the regularization for rank-deficient constraint Jacobians. $\;$ \\
 (This is bar delta\_c in the implementation
paper.) The valid range for this real option is 
$0 \le {\tt jacobian\_regularization\_value } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-08}$.


\htmlanchor{sec:max_hessian_perturbation}
\paragraph{max\_hessian\_perturbation:}\label{sec:max_hessian_perturbation} Maximum value of regularization parameter for handling negative curvature. $\;$ \\
 In order to guarantee that the search directions
are indeed proper descent directions, Ipopt
requires that the inertia of the (augmented)
linear system for the step computation has the
correct number of negative and positive
eigenvalues. The idea is that this guides the
algorithm away from maximizers and makes Ipopt
more likely converge to first order optimal
points that are minimizers. If the inertia is not
correct, a multiple of the identity matrix is
added to the Hessian of the Lagrangian in the
augmented system. This parameter gives the
maximum value of the regularization parameter. If
a regularization of that size is not enough, the
algorithm skips this iteration and goes to the
restoration phase. (This is delta\_w\^max in the
implementation paper.) The valid range for this real option is 
$0 <  {\tt max\_hessian\_perturbation } <  {\tt +inf}$
and its default value is $1 \cdot 10^{+20}$.


\htmlanchor{sec:max_refinement_steps}
\paragraph{max\_refinement\_steps:}\label{sec:max_refinement_steps} Maximum number of iterative refinement steps per linear system solve. $\;$ \\
 Iterative refinement (on the full unsymmetric
system) is performed for each right hand side. 
This option determines the maximum number of
iterative refinement steps. The valid range for this integer option is
$0 \le {\tt max\_refinement\_steps } <  {\tt +inf}$
and its default value is $10$.


\htmlanchor{sec:mehrotra_algorithm}
\paragraph{mehrotra\_algorithm:}\label{sec:mehrotra_algorithm} Indicates if we want to do Mehrotra's algorithm. $\;$ \\
 If set to yes, Ipopt runs as Mehrotra's
predictor-corrector algorithm. This works usually
very well for LPs and convex QPs.  This
automatically disables the line search, and
chooses the (unglobalized) adaptive mu strategy
with the "probing" oracle, and uses
"corrector\_type=affine" without any safeguards;
you should not set any of those options
explicitly in addition.  Also, unless otherwise
specified, the values of "bound\_push",
"bound\_frac", and "bound\_mult\_init\_val" are
set more aggressive, and sets
"alpha\_for\_y=bound\_mult".
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: Do the usual Ipopt algorithm.
   \item yes: Do Mehrotra's predictor-corrector algorithm.
\end{itemize}

\htmlanchor{sec:min_hessian_perturbation}
\paragraph{min\_hessian\_perturbation:}\label{sec:min_hessian_perturbation} Smallest perturbation of the Hessian block. $\;$ \\
 The size of the perturbation of the Hessian block
is never selected smaller than this value, unless
no perturbation is necessary. (This is
delta\_w\^min in implementation paper.) The valid range for this real option is 
$0 \le {\tt min\_hessian\_perturbation } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-20}$.


\htmlanchor{sec:min_refinement_steps}
\paragraph{min\_refinement\_steps:}\label{sec:min_refinement_steps} Minimum number of iterative refinement steps per linear system solve. $\;$ \\
 Iterative refinement (on the full unsymmetric
system) is performed for each right hand side. 
This option determines the minimum number of
iterative refinements (i.e. at least
"min\_refinement\_steps" iterative refinement
steps are enforced per right hand side.) The valid range for this integer option is
$0 \le {\tt min\_refinement\_steps } <  {\tt +inf}$
and its default value is $1$.


\htmlanchor{sec:neg_curv_test_tol}
\paragraph{neg\_curv\_test\_tol:}\label{sec:neg_curv_test_tol} Tolerance for heuristic to ignore wrong inertia. $\;$ \\
 If positive, incorrect inertia in the augmented
system is ignored, and we test if the direction
is a direction of positive curvature.  This
tolerance determines when the direction is
considered to be sufficiently positive. The valid range for this real option is 
$0 <  {\tt neg\_curv\_test\_tol } <  {\tt +inf}$
and its default value is $0$.


\htmlanchor{sec:perturb_always_cd}
\paragraph{perturb\_always\_cd:}\label{sec:perturb_always_cd} Active permanent perturbation of constraint linearization. $\;$ \\
 This options makes the delta\_c and delta\_d
perturbation be used for the computation of every
search direction.  Usually, it is only used when
the iteration matrix is singular.
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: perturbation only used when required
   \item yes: always use perturbation
\end{itemize}

\htmlanchor{sec:perturb_dec_fact}
\paragraph{perturb\_dec\_fact:}\label{sec:perturb_dec_fact} Decrease factor for x-s perturbation. $\;$ \\
 The factor by which the perturbation is decreased
when a trial value is deduced from the size of
the most recent successful perturbation. (This is
kappa\_w\^- in the implementation paper.) The valid range for this real option is 
$0 <  {\tt perturb\_dec\_fact } <  1$
and its default value is $0.333333$.


\htmlanchor{sec:perturb_inc_fact}
\paragraph{perturb\_inc\_fact:}\label{sec:perturb_inc_fact} Increase factor for x-s perturbation. $\;$ \\
 The factor by which the perturbation is increased
when a trial value was not sufficient - this
value is used for the computation of all
perturbations except for the first. (This is
kappa\_w\^+ in the implementation paper.) The valid range for this real option is 
$1 <  {\tt perturb\_inc\_fact } <  {\tt +inf}$
and its default value is $8$.


\htmlanchor{sec:perturb_inc_fact_first}
\paragraph{perturb\_inc\_fact\_first:}\label{sec:perturb_inc_fact_first} Increase factor for x-s perturbation for very first perturbation. $\;$ \\
 The factor by which the perturbation is increased
when a trial value was not sufficient - this
value is used for the computation of the very
first perturbation and allows a different value
for for the first perturbation than that used for
the remaining perturbations. (This is
bar\_kappa\_w\^+ in the implementation paper.) The valid range for this real option is 
$1 <  {\tt perturb\_inc\_fact\_first } <  {\tt +inf}$
and its default value is $100$.


\htmlanchor{sec:residual_improvement_factor}
\paragraph{residual\_improvement\_factor:}\label{sec:residual_improvement_factor} Minimal required reduction of residual test ratio in iterative refinement. $\;$ \\
 If the improvement of the residual test ratio
made by one iterative refinement step is not
better than this factor, iterative refinement is
aborted. The valid range for this real option is 
$0 <  {\tt residual\_improvement\_factor } <  {\tt +inf}$
and its default value is $1$.


\htmlanchor{sec:residual_ratio_max}
\paragraph{residual\_ratio\_max:}\label{sec:residual_ratio_max} Iterative refinement tolerance $\;$ \\
 Iterative refinement is performed until the
residual test ratio is less than this tolerance
(or until "max\_refinement\_steps" refinement
steps are performed). The valid range for this real option is 
$0 <  {\tt residual\_ratio\_max } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-10}$.


\htmlanchor{sec:residual_ratio_singular}
\paragraph{residual\_ratio\_singular:}\label{sec:residual_ratio_singular} Threshold for declaring linear system singular after failed iterative refinement. $\;$ \\
 If the residual test ratio is larger than this
value after failed iterative refinement, the
algorithm pretends that the linear system is
singular. The valid range for this real option is 
$0 <  {\tt residual\_ratio\_singular } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-05}$.


\subsection{Uncategorized}
\label{sec:Uncategorized}
\htmlanchor{sec:Uncategorized}
\htmlanchor{sec:warm_start_target_mu}
\paragraph{warm\_start\_target\_mu:}\label{sec:warm_start_target_mu} Unsupported! $\;$ \\
 The valid range for this real option is 
${\tt -inf} <  {\tt warm\_start\_target\_mu } <  {\tt +inf}$
and its default value is $0$.


\subsection{Undocumented}
\label{sec:Undocumented}
\htmlanchor{sec:Undocumented}
\htmlanchor{sec:adaptive_mu_safeguard_factor}
\paragraph{adaptive\_mu\_safeguard\_factor:}\label{sec:adaptive_mu_safeguard_factor}  $\;$ \\
 The valid range for this real option is 
$0 \le {\tt adaptive\_mu\_safeguard\_factor } <  {\tt +inf}$
and its default value is $0$.


\htmlanchor{sec:chi_cup}
\paragraph{chi\_cup:}\label{sec:chi_cup} LIFENG WRITES THIS. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt chi\_cup } <  {\tt +inf}$
and its default value is $1.5$.


\htmlanchor{sec:chi_hat}
\paragraph{chi\_hat:}\label{sec:chi_hat} LIFENG WRITES THIS. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt chi\_hat } <  {\tt +inf}$
and its default value is $2$.


\htmlanchor{sec:chi_tilde}
\paragraph{chi\_tilde:}\label{sec:chi_tilde} LIFENG WRITES THIS. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt chi\_tilde } <  {\tt +inf}$
and its default value is $5$.


\htmlanchor{sec:delta_y_max}
\paragraph{delta\_y\_max:}\label{sec:delta_y_max} a parameter used to check if the fast direction can be used asthe line search direction (for Chen-Goldfarb line search). $\;$ \\
 The valid range for this real option is 
$0 <  {\tt delta\_y\_max } <  {\tt +inf}$
and its default value is $1 \cdot 10^{+12}$.


\htmlanchor{sec:epsilon_c}
\paragraph{epsilon\_c:}\label{sec:epsilon_c} LIFENG WRITES THIS. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt epsilon\_c } <  {\tt +inf}$
and its default value is $0.01$.


\htmlanchor{sec:eta_min}
\paragraph{eta\_min:}\label{sec:eta_min} LIFENG WRITES THIS. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt eta\_min } <  {\tt +inf}$
and its default value is $10$.


\htmlanchor{sec:eta_penalty}
\paragraph{eta\_penalty:}\label{sec:eta_penalty} Relaxation factor in the Armijo condition for the penalty function. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt eta\_penalty } <  0.5$
and its default value is $1 \cdot 10^{-08}$.


\htmlanchor{sec:fast_des_fact}
\paragraph{fast\_des\_fact:}\label{sec:fast_des_fact} a parameter used to check if the fast direction can be used asthe line search direction (for Chen-Goldfarb line search). $\;$ \\
 The valid range for this real option is 
$0 <  {\tt fast\_des\_fact } <  {\tt +inf}$
and its default value is $0.1$.


\htmlanchor{sec:gamma_hat}
\paragraph{gamma\_hat:}\label{sec:gamma_hat} LIFENG WRITES THIS. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt gamma\_hat } <  {\tt +inf}$
and its default value is $0.04$.


\htmlanchor{sec:gamma_tilde}
\paragraph{gamma\_tilde:}\label{sec:gamma_tilde} LIFENG WRITES THIS. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt gamma\_tilde } <  {\tt +inf}$
and its default value is $4$.


\htmlanchor{sec:kappa_x_dis}
\paragraph{kappa\_x\_dis:}\label{sec:kappa_x_dis} a parameter used to check if the fast direction can be used asthe line search direction (for Chen-Goldfarb line search). $\;$ \\
 The valid range for this real option is 
$0 <  {\tt kappa\_x\_dis } <  {\tt +inf}$
and its default value is $100$.


\htmlanchor{sec:kappa_y_dis}
\paragraph{kappa\_y\_dis:}\label{sec:kappa_y_dis} a parameter used to check if the fast direction can be used asthe line search direction (for Chen-Goldfarb line search). $\;$ \\
 The valid range for this real option is 
$0 <  {\tt kappa\_y\_dis } <  {\tt +inf}$
and its default value is $10000$.


\htmlanchor{sec:magic_steps}
\paragraph{magic\_steps:}\label{sec:magic_steps} Enables magic steps. $\;$ \\
 DOESN'T REALLY WORK YET!
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: don't take magic steps
   \item yes: take magic steps
\end{itemize}

\htmlanchor{sec:min_alpha_primal}
\paragraph{min\_alpha\_primal:}\label{sec:min_alpha_primal} LIFENG WRITES THIS. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt min\_alpha\_primal } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-13}$.


\htmlanchor{sec:mult_diverg_feasibility_tol}
\paragraph{mult\_diverg\_feasibility\_tol:}\label{sec:mult_diverg_feasibility_tol} tolerance for deciding if the multipliers are diverging $\;$ \\
 The valid range for this real option is 
$0 <  {\tt mult\_diverg\_feasibility\_tol } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-07}$.


\htmlanchor{sec:mult_diverg_y_tol}
\paragraph{mult\_diverg\_y\_tol:}\label{sec:mult_diverg_y_tol} tolerance for deciding if the multipliers are diverging $\;$ \\
 The valid range for this real option is 
$0 <  {\tt mult\_diverg\_y\_tol } <  {\tt +inf}$
and its default value is $1 \cdot 10^{+08}$.


\htmlanchor{sec:never_use_fact_cgpen_direction}
\paragraph{never\_use\_fact\_cgpen\_direction:}\label{sec:never_use_fact_cgpen_direction} Toggle to switch off the fast Chen-Goldfarb direction $\;$ \\

The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: always compute the fast direction
   \item yes: never compute the fast direction
\end{itemize}

\htmlanchor{sec:never_use_piecewise_penalty_ls}
\paragraph{never\_use\_piecewise\_penalty\_ls:}\label{sec:never_use_piecewise_penalty_ls} Toggle to switch off the piecewise penalty method $\;$ \\

The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: always use the piecewise penalty method
   \item yes: never use the piecewise penalty method
\end{itemize}

\htmlanchor{sec:pen_des_fact}
\paragraph{pen\_des\_fact:}\label{sec:pen_des_fact} a parameter used in penalty parameter computation (for Chen-Goldfarb line search). $\;$ \\
 The valid range for this real option is 
$0 <  {\tt pen\_des\_fact } <  {\tt +inf}$
and its default value is $0.2$.


\htmlanchor{sec:pen_init_fac}
\paragraph{pen\_init\_fac:}\label{sec:pen_init_fac} a parameter used to choose initial penalty parameterswhen the regularized Newton method is used. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt pen\_init\_fac } <  {\tt +inf}$
and its default value is $50$.


\htmlanchor{sec:pen_theta_max_fact}
\paragraph{pen\_theta\_max\_fact:}\label{sec:pen_theta_max_fact} Determines upper bound for constraint violation in the filter. $\;$ \\
 The algorithmic parameter theta\_max is
determined as theta\_max\_fact times the maximum
of 1 and the constraint violation at initial
point.  Any point with a constraint violation
larger than theta\_max is unacceptable to the
filter (see Eqn. (21) in implementation paper). The valid range for this real option is 
$0 <  {\tt pen\_theta\_max\_fact } <  {\tt +inf}$
and its default value is $10000$.


\htmlanchor{sec:penalty_init_max}
\paragraph{penalty\_init\_max:}\label{sec:penalty_init_max} Maximal value for the intial penalty parameter (for Chen-Goldfarb line search). $\;$ \\
 The valid range for this real option is 
$0 <  {\tt penalty\_init\_max } <  {\tt +inf}$
and its default value is $100000$.


\htmlanchor{sec:penalty_init_min}
\paragraph{penalty\_init\_min:}\label{sec:penalty_init_min} Minimal value for the intial penalty parameter for line search(for Chen-Goldfarb line search). $\;$ \\
 The valid range for this real option is 
$0 <  {\tt penalty\_init\_min } <  {\tt +inf}$
and its default value is $1$.


\htmlanchor{sec:penalty_max}
\paragraph{penalty\_max:}\label{sec:penalty_max} Maximal value for the penalty parameter (for Chen-Goldfarb line search). $\;$ \\
 The valid range for this real option is 
$0 <  {\tt penalty\_max } <  {\tt +inf}$
and its default value is $1 \cdot 10^{+30}$.


\htmlanchor{sec:penalty_update_compl_tol}
\paragraph{penalty\_update\_compl\_tol:}\label{sec:penalty_update_compl_tol} LIFENG WRITES THIS. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt penalty\_update\_compl\_tol } <  {\tt +inf}$
and its default value is $10$.


\htmlanchor{sec:penalty_update_infeasibility_tol}
\paragraph{penalty\_update\_infeasibility\_tol:}\label{sec:penalty_update_infeasibility_tol} Threshold for infeasibility in penalty parameter update test. $\;$ \\
 If the new constraint violation is smaller than
this tolerance, the penalty parameter is not
increased. The valid range for this real option is 
$0 <  {\tt penalty\_update\_infeasibility\_tol } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-09}$.


\htmlanchor{sec:piecewisepenalty_gamma_infeasi}
\paragraph{piecewisepenalty\_gamma\_infeasi:}\label{sec:piecewisepenalty_gamma_infeasi} LIFENG WRITES THIS. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt piecewisepenalty\_gamma\_infeasi } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-13}$.


\htmlanchor{sec:piecewisepenalty_gamma_obj}
\paragraph{piecewisepenalty\_gamma\_obj:}\label{sec:piecewisepenalty_gamma_obj} LIFENG WRITES THIS. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt piecewisepenalty\_gamma\_obj } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-13}$.


\htmlanchor{sec:print_options_latex_mode}
\paragraph{print\_options\_latex\_mode:}\label{sec:print_options_latex_mode} Undocumented $\;$ \\
 Undocumented
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: Undocumented
   \item yes: Undocumented
\end{itemize}

\htmlanchor{sec:suppress_all_output}
\paragraph{suppress\_all\_output:}\label{sec:suppress_all_output} Undocumented $\;$ \\
 Undocumented
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: Undocumented
   \item yes: Undocumented
\end{itemize}

\htmlanchor{sec:theta_min}
\paragraph{theta\_min:}\label{sec:theta_min} LIFENG WRITES THIS. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt theta\_min } <  {\tt +inf}$
and its default value is $1 \cdot 10^{-06}$.


\htmlanchor{sec:vartheta}
\paragraph{vartheta:}\label{sec:vartheta} a parameter used to check if the fast direction can be used asthe line search direction (for Chen-Goldfarb line search). $\;$ \\
 The valid range for this real option is 
$0 <  {\tt vartheta } <  {\tt +inf}$
and its default value is $0.5$.


\htmlanchor{sec:wsmp_iterative}
\paragraph{wsmp\_iterative:}\label{sec:wsmp_iterative} Switches to iterative solver in WSMP. $\;$ \\
 EXPERIMENTAL!
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: use direct solver
   \item yes: use iterative solver
\end{itemize}

\subsection{Warm Start}
\label{sec:Warm_Start}
\htmlanchor{sec:Warm_Start}
\htmlanchor{sec:warm_start_bound_frac}
\paragraph{warm\_start\_bound\_frac:}\label{sec:warm_start_bound_frac} same as bound\_frac for the regular initializer. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt warm\_start\_bound\_frac } \le 0.5$
and its default value is $0.001$.


\htmlanchor{sec:warm_start_bound_push}
\paragraph{warm\_start\_bound\_push:}\label{sec:warm_start_bound_push} same as bound\_push for the regular initializer. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt warm\_start\_bound\_push } <  {\tt +inf}$
and its default value is $0.001$.


\htmlanchor{sec:warm_start_entire_iterate}
\paragraph{warm\_start\_entire\_iterate:}\label{sec:warm_start_entire_iterate} Tells algorithm whether to use the GetWarmStartIterate method in the NLP. $\;$ \\

The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: call GetStartingPoint in the NLP
   \item yes: call GetWarmStartIterate in the NLP
\end{itemize}

\htmlanchor{sec:warm_start_init_point}
\paragraph{warm\_start\_init\_point:}\label{sec:warm_start_init_point} Warm-start for initial point $\;$ \\
 Indicates whether this optimization should use a
warm start initialization, where values of primal
and dual variables are given (e.g., from a
previous optimization of a related problem.)
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: do not use the warm start initialization
   \item yes: use the warm start initialization
\end{itemize}

\htmlanchor{sec:warm_start_mult_bound_push}
\paragraph{warm\_start\_mult\_bound\_push:}\label{sec:warm_start_mult_bound_push} same as mult\_bound\_push for the regular initializer. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt warm\_start\_mult\_bound\_push } <  {\tt +inf}$
and its default value is $0.001$.


\htmlanchor{sec:warm_start_mult_init_max}
\paragraph{warm\_start\_mult\_init\_max:}\label{sec:warm_start_mult_init_max} Maximum initial value for the equality multipliers. $\;$ \\
 The valid range for this real option is 
${\tt -inf} <  {\tt warm\_start\_mult\_init\_max } <  {\tt +inf}$
and its default value is $1 \cdot 10^{+06}$.


\htmlanchor{sec:warm_start_same_structure}
\paragraph{warm\_start\_same\_structure:}\label{sec:warm_start_same_structure} Indicates whether a problem with a structure identical to the previous one is to be solved. $\;$ \\
 If "yes" is chosen, then the algorithm assumes
that an NLP is now to be solved, whose structure
is identical to one that already was considered
(with the same NLP object).
The default value for this string option is "no".
\\ 
Possible values:
\begin{itemize}
   \item no: Assume this is a new problem.
   \item yes: Assume this is problem has known structure
\end{itemize}

\htmlanchor{sec:warm_start_slack_bound_frac}
\paragraph{warm\_start\_slack\_bound\_frac:}\label{sec:warm_start_slack_bound_frac} same as slack\_bound\_frac for the regular initializer. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt warm\_start\_slack\_bound\_frac } \le 0.5$
and its default value is $0.001$.


\htmlanchor{sec:warm_start_slack_bound_push}
\paragraph{warm\_start\_slack\_bound\_push:}\label{sec:warm_start_slack_bound_push} same as slack\_bound\_push for the regular initializer. $\;$ \\
 The valid range for this real option is 
$0 <  {\tt warm\_start\_slack\_bound\_push } <  {\tt +inf}$
and its default value is $0.001$.


