MoochoPack : Framework for Large-Scale Optimization Algorithms
Version of the Day
|
Below are all of the options that MOOCHO will accept for the the "MamaJama" algorithm configuration with full documentation. This is the file that is returned by generate-opt-file.pl
with no options. To view these same options stripped of most of the comments see here.
*** Automatically generated options file begin_options *** Begin Moocho.opt.MoochoSolver ************************************************************************************* *** All of these options can be used with the class MoochoSolver. *** *** This file will be maintained and will include every option that *** users can set. Most of these options the user will want to *** leave alone but they are there in any case. *** *** For options specific to the NLPAlgoConfigMamaJama configuration *** class see the file 'Moocho.opt.NLPAlgoConfigMamaJama'. *** ********************************************************** *** Options specific for the MoochoSolver class. *** *** These options work on the highest level in determining *** what output files are allowed, workspace requirements, *** objective function scaling etc. *** options_group MoochoSolver { * workspace_MB = -1.0; *** [default] *** (+-dbl) If > 0, givens the number of megabytes that are allocated for *** temporary workspace for automatic arrays. If < 0 then the *** this will be determined internally. This value should be set by the *** user for whatever is appropriate for the computing environment. See *** the summary output for statistics on memory allocation usage when the *** algorithm finishes. Example values: *** -1.0 : (< 0) Allow the algorithm to decide how much to allocate. *** 100 : Allocate 100 MB of ram for this purpose * obj_scale = 1.0; *** [default] *** (+-dbl) Scale for the objective function. This can have a dramatic impact *** on the behavior of the algorithm in some cases. Changing this value *** does a lot to change the weight between minimizing the objective and converging *** the constraints. Example values: *** 1e-8 : Really scale the objective down a lot! *** 1.0 : Leave the objective unscaled [default]. *** 1e+8 : Really scale the objective up a lot! * test_nlp = true; *** [default] * test_nlp = false; *** If true then the NLP will be tested at the initial point. The *** vector spaces (see options_group VectorSpaceTester), *** the NLP interface (see options_group NLPTester), and the gradients *** (see options_group NLPDirectTester and NLPFirstOrderInfoTester) *** will all be tested. With all of the default options in place *** these tests are fairly cheap so it is recommended that you perform *** these tests when first getting started. * console_outputting = true; *** [default] * console_outputting = false; *** If true, then output from MoochoTrackerConsoleStd is sent to the *** console_out stream (which is std::cout by default) * summary_outputting = true; *** [default] * summary_outputting = false; *** If true, then output from MoochoTrackerSummaryStd is sent to the *** summary_out stream (which is the file 'MoochoSummary.out' by default) * journal_outputting = true; *** [default] * journal_outputting = false; *** If true, then output from the algorithm steps an other detailed testing *** output is set to the journal_out stream (which is the file *** 'MoochoJournal.out' by default) * algo_outputting = true; *** [default] * algo_outputting = false; *** If true, then an algorithm description is sent to the algo_out stream *** (which is the file 'MoochoAlgo.out' by default) * print_algo = true; *** [default] * print_algo = false; *** [algo_outputting == true] *** If true then the algorithm will be printed to the algo_out stream *** (the file 'NLPAlgo.out' by default). In order to get more insight into *** what all of the options do it is a good idea to print the algorithm *** description out and search for the options you are curious about. * algo_timing = true; *** [default] * algo_timing = false; *** [summary_outputting == true] *** If true, then the steps in the algorithm will be timed and a table of the *** algorithm and step times will be sent to the summary_out stream (the file *** 'MoochoSummary.out' by default). This feature is very useful in examining *** performance of the algorithm and can give more detailed information than you *** get from a profiler in may ways. * generate_stats_file = true; * generate_stats_file = false; *** [default] *** If true, then a MoochoTrackerStatsStd object will be used to generate *** statistics about the solution process to an NLP. The track object *** will overwrite the file 'MoochoStats.out' in the current directory. * print_opt_grp_not_accessed = true; *** [default] * print_opt_grp_not_accessed = false; *** [algo_outputting == true] *** If true, then the options groups that are specified but are not read by *** some software entity are printed to the algo_out stream (the file 'MoochoAlgo.out' *** by default). This may help you catch problems associated with spelling the name of *** an options group improperly and then having its default options used instead of the *** options that you set. Note that some options groups are only looked for depending *** on option values from other options groups. * configuration = mama_jama; *** [default] * configuration = interior_point; *** decides which configuration object will be used: *** mama_jama : standard reduced-space SQP configuration *** interior_point : configuration for a simple reduced-space interior point method } *********************************************************** *** Options for NLPSolverClientInterface *** *** These are options that are used by every algorithm *** configuration and they are available to the *** optimization steps. *** *** These include basic algorithmic control parameters. *** *** Note that an algorithm can be interrupted at any time *** by pressing Ctrl+C. *** options_group NLPSolverClientInterface { * max_iter = 1000; *** [default] *** (+int) Maximum number of SQP iterations allowed. * max_run_time = 1e+10; *** In minutes [default] *** (+dbl) Maximum runtime for the SQP algorithm (in minutes). *** The default is to run forever. * opt_tol = 1e-6; *** [default] *** (+dbl) Convergence tolerance for (scaled) KKT linear dependence of gradients. *** This is usually the hardest error to reduce. The exact definition of this tolerance *** depends on the algorithms used and may use different scalings (see other options and *** outputted algorithm description for details). Example values: *** 0.0 : The algorithm will never converge except in trivial cases. *** 1e-6 : Only converge when opt_kkt_err is below this value [default]. *** 1e+50 : (big number) Converged when any of the other tolerances are satisfied. * feas_tol = 1e-6; *** [default] *** (+dbl) Convergence tolerance for (scaled) feasibility of the equality constraints *** ||c(x)||inf. The norm of the constraints ||c(x)||inf may be scaled (see other *** options and the outputted algorithm description). Example values: *** 0.0 : Never converge the algorithm except in trivial cases. *** 1e-6 : Only converge when feas_kkt_err is below this value [default]. *** 1e+50 : (big number) Converged when any of the other tolerances are satisfied. * step_tol = 1e-2; *** [default] *** (+dbl) Convergence tolerance for (scaled) step size ||x_k(+1)-x_k||inf. *** This tolerance is usually scaled by x is some way (see other output algorithm *** description). Example values: *** 0.0 : Never converge the algorithm except in trivial cases. *** 1e-2 : Only converge when the max (scaled) step size is below this value [default]. *** 1e+50 : (big number) Converged when any of the other tolerances are satisfied. * journal_output_level = PRINT_NOTHING; * No output to journal from algorithm * journal_output_level = PRINT_BASIC_ALGORITHM_INFO; * O(1) information usually * journal_output_level = PRINT_ALGORITHM_STEPS; * O(iter) output to journal [default] * journal_output_level = PRINT_ACTIVE_SET; * O(iter*nact) output to journal * journal_output_level = PRINT_VECTORS; * O(iter*n) output to journal (lots!) * journal_output_level = PRINT_ITERATION_QUANTITIES; * O(iter*n*m) output to journal (big lots!) *** [MoochoSolver::journal_outputting == true] *** This option determines the type and amount of output to the journal_out stream *** (the file 'MoochoJournal.out' by default) that is generated while the algorithm runs. *** In general, each increasing value includes the same output from the lower options *** (i.e. PRINT_VECTORS includes all the output for PRINT_ACTIVE_SET and more). Above, *** the identifier 'iter' is the number of total rSQP iterations (see max_iter above), 'nact' *** is the total number of active inequality constraints, 'n' is the total number *** of NLP variables, and 'm' is the total number of equality constraints. The higher output *** values are generally used for debugging. For most problems the value *** PRINT_ALGORITHM_STEPS is usually the most appropriate and will give a great deal *** of information about the algorithm without generating excessive output. *** For the fastest possible execution you should set this to PRINT_NOTHING. * null_space_journal_output_level = DEFAULT; * Set to journal_output_level [default] * null_space_journal_output_level = PRINT_ACTIVE_SET; * O(iter*nact) output to journal * null_space_journal_output_level = PRINT_VECTORS; * O(iter*(n-m)) output to journal (lots!) * null_space_journal_output_level = PRINT_ITERATION_QUANTITIES; * O(iter*(n-m)^2) output to journal (big lots!) *** [MoochoSolver::journal_outputting == true] *** This option determines the type and amount of output to the journal_out stream *** (the file 'MoochoJournal.out' by default) that is generated for quantities in the *** null space while the algorithm runs. If null_space_journal_output_level is *** set to DEFAULT then it will default to the value of journal_output_level. *** If set to some other value then this value overrides journal_output_level *** for quantities in the null space. For problems where the null space is small but *** the full space is much larger, setting the value of null_space_journal_output_level higher *** than journal_output_level can yield significantly more information while not generating *** too much output or impacting runtime to any great extent. * journal_print_digits = 6; *** [default] *** [MoochoSolver::journal_outputting == true] *** (+int) Number of decimal significant figures to print to journal_out stream. *** With a higher number more significant figures will be printed. This may be useful *** for debugging or in seeing the effects of subtle rounding differences. For IEEE double *** precision, 18 is usually the maximum number of unique decimal significant figures. * check_results = true; *** (costly?) * check_results = false; *** [default] *** If true then all computation that can be reasonably checked will be checked at runtime. *** When all of the other default testing options are used, this overhead usually will *** not dominate the cost of the algorithm so if speed is not critical then it is a *** good idea to turning testing on. If your problem is not solving then you should *** definitely try turning this on and try to see if it will catch any errors. However, *** for the fastest possible execution you should set this to 'false'. * calc_conditioning = true; *** (costly?) * calc_conditioning = false; *** [default] *** If true then estimates of the condition numbers of all of the important nonsingular *** matrices used in the algorithm will be computed and printed. Note that this can be *** a fairly expensive operation (especially when iterative solvers are being used) *** so it should be used with care. Warning! see the option calc_matrix_info_null_space_only *** as it affects the behavior of this option. * calc_matrix_norms = true; *** (costly?) * calc_matrix_norms = false; *** [default] *** If true, then estimates of the matrix norms of all of the important *** matrices used in the algorithm will be computed and printed. Note that this can be *** a fairly expensive operation (especially if iterative solvers are being used) so *** it should be used with care. Warning! see the option calc_matrix_info_null_space_only. * calc_matrix_info_null_space_only = true; *** (costly?) * calc_matrix_info_null_space_only = false; *** [default] *** If true, then the options calc_conditioning and calc_matrix_norms will only *** apply to quantities in the null space and not the quasi-range space *** or the full space for which these options will be considered to be false. } ************************************************************ *** Options for testing the NLP interface *** *** [MoochoSolver::test_nlp == true] *** options_group NLPTester { * print_all = true; * print_all = false; *** [default] *** If true, then everything about the NLP will be printed *** to journal_out (i.e. the file 'MoochoJournal.out'). *** This is useful for initial debugging but not recommended *** for larger problems. } ************************************************************* *** Options for testing the vector spaces from the NLP object *** *** [MoochoSolver::test_nlp == true] *** options_group VectorSpaceTester { * print_all_tests = true; * print_all_tests = false; * print_vectors = true; * print_vectors = false; * throw_exception = true; * throw_exception = false; * num_random_tests = 4; *** [default] * warning_tol = 1e-14; *** [default] * error_tol = 1e-10; *** [default] } *********************************************************** *** Options for the finite derivative testing for a *** standard NLP. *** *** See options_group NLPFirstDerivTester in *** Moocho.opt.NLPAlgoConfigMamaJama *** **************************************************************** *** Options for the finite difference derivative tester for a *** direct sensitivity NLP. *** *** See options_group NLPDirectTester in *** Moocho.opt.NLPAlgoConfigMamaJama *** **************************************************************** *** Options for the BasisSystem tester used to validate the *** basis of the constraints Jacobian. *** *** See options_group BasisSystemTester in *** Moocho.opt.DecompositionSystemStateStepBuilderStd *** **************************************************************** *** Options for the default BasisSystem factory object for *** the constraints of the Jacobian used by *** NLPSerialPreprocessExplJac *** options_group BasisSystemFactoryStd { * direct_linear_solver = DENSE; *** Use LAPACK xGETRF() * direct_linear_solver = MA28; *** Use Harwell MA28 (see options_group DirectSparseSolverMA28) * direct_linear_solver = MA48; *** Not supported yet * direct_linear_solver = SUPERLU; *** Use SuperLU (see options_group DirectSparseSolverSuperLU) *** Direct fortran-compatible linear solver for the basis of the Jacobian. *** When a general NLP is being solved this selects the sparse linear solver used. *** If the user specializes the BasisSystem object this option might be meaningless. } ***************************************************************** *** Set options for the MA28 solver. *** *** [BasisSystemFactoryStd::direct_linear_solver == MA28] *** options_group DirectSparseSolverMA28 { * estimated_fillin_ratio = 10.0; *** [default] *** (+dbl) Estimated amount of fillin ( > 1.0 ) for the *** the sparse LU factorization. If this is too little *** then more storage will automatically be allocated *** on the fly (at the cost some wasted computations). *** This parameter is mostly problem dependent and can *** be adjusted to a proper size to reduce memory requirements. *** Example values: *** 1.0 : No fill-in? *** 10.0 : LU factors have three times the number of nonzeros * u = 0.1; *** [default] *** (+dbl) Control parameter (0 <= u <= 1.0) that us used *** to balance sparsity and accuracy. *** Example values: *** 0.0 : Pivot for sparsity only *** 0.1 : Balance sparsity and stability *** 1.0 : Pivot for stability only * grow = true; * grow = false; *** [default] *** See MA28 documentation. * nsrch = 4; *** [default] *** (+int) Number of columns that MA28 will search to find *** pivots to try to reduce fill-in. Warning, setting a large *** value for 'nsrch' can greatly slow down the initial *** rSQP iteration. *** Example values: *** 0 : No columns are searched *** 4 : Four columns are searched *** 1000 : A thousand columns are searched * lbig = true; * lbig = false; *** [default] *** See MA28 documentation. * print_ma28_outputs = true; * print_ma28_outputs = false; *** [default] *** If true, then the values of the MA28 output will *** be dumped to the journal output stream *** (if journal_output_level >= PRINT_ALGORITHM_STEPS). * output_file_name = NONE; *** [default] *** Gives the file name that MA28 Fortran output is set to (from LP and MP). *** Example values: *** NONE : No output file *** any_other_name : Output from MA28 will be sent to this file in the *** current directory } *** End Moocho.opt.MoochoSolver *** Moocho.opt.DecompositionSystemStateStepBuilderStd ********************************************************************************** *** All of these options can be used with any NLPAlgoConfig *** subclass that uses the standard DecompositionSystemStateStepBuilderStd *** class. *** *** This file will be maintained and will include every option that *** users can set. Most of these options the user will want to leave *** alone but they are there in any case. *** *********************************************************** *** Options for IterationPack::Algorithm *** *** These are options that are used by every IterationPack::Algorithm *** object that gets created and used. *** options_group IterationPack_Algorithm { * interrupt_file_name = ""; *** Does not check for interrupt file [default] * interrupt_file_name = "interrupt.in"; *** checks for this file in current directory *** This specifies a file name that is looked for at the end of every *** step in a running algorithm. If this file exists, it is read for *** algorithm termination criteria (see the class IterationPack::Algorithm *** and the option interrupt_file_name). Using a file to interrupt an running *** algorithm allows the algorithm to be gracefully terminated when run in batch *** mode or when access to STDOUT or STDIN is not possible. } ***************************************************************** *** Options specific for the shared rSQP algorithm builder *** class DecompositionSystemStateStepBuilderStd. *** options_group DecompositionSystemStateStepBuilderStd { *** Variable Reduction range/null space decomposition * null_space_matrix = AUTO; *** Let the solver decide [default] * null_space_matrix = EXPLICIT; *** Compute and store D = -inv(C)*N explicitly * null_space_matrix = IMPLICIT; *** Perform operations implicitly with C, N (requires adjoints) *** This option is used to determine the type of implementation to use for *** the variable reduction null space matrix Z = [ -inv(C)*N; I ]. *** AUTO : Let the algorithm decide. The algorithm will take into *** account the number of degrees of freedom in the problem *** (n-r), the number of active inequality constraints and *** other issues when deciding what implementation to use within *** each iteration. Warning! These automatic tests are only *** affective when a direct solver for C is used. *** EXPLICIT : The matrix D = -inv(C)*N is computed and formed explicitly and is used *** to form Z = [ D; I ]. *** IMPLICIT : The matrix D = -inv(C)*N is not formed explicitly but is *** instead used implicitly in matrix-vector and other *** related operations. * range_space_matrix = AUTO; *** Let the algorithm decide dynamically [default] * range_space_matrix = COORDINATE; *** Y = [ I; 0 ] (Cheaper computationally) * range_space_matrix = ORTHOGONAL; *** Y = [ I; -N'*inv(C') ] (more stable) *** This option is used to determine the selection of the range space matrix Y. *** AUTO : Let the algorithm decide. The algorithm will take into *** account the number of degrees of freedom in the problem *** (n-r) and other issues when deciding what representation to use. *** Warning! These automatic tests are only affective when a direct *** solver for C is used. *** COORDINATE : Use the coordinate decomposition Y = [ I; 0 ] *** ORTHOGONAL : Use the orthogonal decomposition Y = [ I; N'*inv(C') ]. *** Warning! For general NLPs this option costs approximately *** O((n-r)^2*r) dense flops per rSQP iteration and will dominate *** the runtime for large (n-r). In addition, this option *** assumes that you will be using null_space_matrix=EXPLICIT. *** Reduced Hessian Approximations * max_dof_quasi_newton_dense = -1; *** [default] *** [quasi_newton == AUTO] (+-int) This option is used to *** determine when the algorithm will switch from quasi_newton=BFGS *** to quasi_newton=LBFGS and from range_space_matrix=ORTHOGONAL *** to range_space_matrix=COORDINATE. *** Example values: *** -1 : (< 0) Let the solver decide dynamically [default] *** 0 : Always use limited memory LBFGS and COORDINATE. *** 500 : Use LBFGS when n-r >= 500 and dense BFGS when n-m < 500 *** Use COORDINATE when (n-m)*r >= 500 and ORTHOGONAL when *** (n-r)*r <= 500. *** 1e10: Always use the dense BFGS and the orthogonal decomposition. } *************************************************************** *** Options group for CalcFiniteDiffProd class *** *** These options control how finite differences are computed *** for testing and for other purposes. *** options_group CalcFiniteDiffProd { * fd_method_order = FD_ORDER_ONE; *** Use O(eps) one sided finite differences * fd_method_order = FD_ORDER_TWO; *** Use O(eps^2) one sided finite differences * fd_method_order = FD_ORDER_TWO_CENTRAL; *** Use O(eps^2) two sided central finite differences * fd_method_order = FD_ORDER_TWO_AUTO; *** Uses FD_ORDER_TWO_CENTRAL or FD_ORDER_TWO * fd_method_order = FD_ORDER_FOUR; *** Use O(eps^4) one sided finite differences * fd_method_order = FD_ORDER_FOUR_CENTRAL; *** Use O(eps^4) two sided central finite differences * fd_method_order = FD_ORDER_FOUR_AUTO; *** [default] Use FD_ORDER_FOUR_CENTRAL or FD_ORDER_FOUR *** Selects the finite differencing method to use. Several different *** methods of different orders are available. For more accuracy use a higher order *** method, for faster execution time use a lower order method. * fd_step_select = FD_STEP_ABSOLUTE; *** [default] Use absolute step size fd_step_size * fd_step_select = FD_STEP_RELATIVE; *** Use relative step size fd_step_size * ||x||inf *** Determines how the actual finite difference step size that is used is selected. *** FD_STEP_ABSOLUTE : The actual step size used is taken from fd_step_size or *** is determined by the implementation if fd_step_size < 0.0. *** Taking an absolute step size can result in inaccurate gradients *** for badly scaled NLPs. *** FD_STEP_RELATIVE : The actual step size used is taken from fd_step_size or *** is determined by the implementation if fd_step_size < 0.0 *** and then multiplied by ||x||inf. Taking a relative step *** will not always result in accurate gradients and the user *** may have to play with fd_step_size some. * fd_step_size = -1.0; *** [default] Let the implementation decide *** Determines what finite difference step size to use. If fd_step_select=FD_STEP_ABSOLUTE *** then this is the absolute step size that is used. If fd_step_select=FD_STEP_RELATIVE *** the actual step size used in fd_step_size * ||x||inf. *** Some common values are: *** < 0.0 : let the implementation decide. *** 1e-8 : Optimal step size for FD_ORDER_ONE for IEEE double and perfect scaling? *** 1e-5 : Optimal step size for FD_ORDER_TWOx for IEEE double and perfect scaling? *** 1e-3 : Optimal step size for FD_ORDER_FOURx for IEEE double and perfect scaling? * fd_step_size_min = -1.0; *** [default] Let the implementation decide. *** Determines the minimum step size that will be taken to compute the finite differences. *** This option is used to forbid the computation of a finite difference with a very small *** step size as required by the variable bounds. Computing finite difference derivatives *** for such small step sizes generally result in a lot of roundoff error. If *** fd_step_size_min < 0.0, then the implementation will pick a default value that is *** smaller than the default value for fd_step_size. * fd_step_size_f = -1.0; *** [default] Let the implementation decide *** Determines what finite difference step size to use for the objective function *** f(x). If fd_step_size_f < 0.0, then the selected value for fd_step_size will be *** used (see the options fd_step_size and fd_step_select). This option allows *** fine-tuning of the finite difference computations. * fd_step_size_c = -1.0; *** [default] Let the implementation decide *** Determines what finite difference step size to use for the equality constraints *** c(x). If fd_step_size_c < 0.0, then the selected value for fd_step_size will be *** used (see the options fd_step_size and fd_step_select). This option allows *** fine-tuning of the finite difference computations. * fd_step_size_h = -1.0; *** [default] Let the implementation decide *** Determines what finite difference step size to use for the inequality constraints *** h(x). If fd_step_size_h < 0.0, then the selected value for fd_step_size will be *** used (see the options fd_step_size and fd_step_select). This option allows *** fine-tuning of the finite difference computations. } *************************************************************** *** Options for EvalNewPoint for NLPFirstOrder. *** See options_group NLPFirstDerivTester *** options_group EvalNewPointStd { * fd_deriv_testing = FD_DEFAULT; *** [default] Test if check_results==true (see above) * fd_deriv_testing = FD_TEST; *** Always test * fd_deriv_testing = FD_NO_TEST; *** never test *** Determines if the derivatives of the NLP returned from the NLPFirstOrder interface *** are correct using finite differences (see the options_group NLPFirstDerivTester). *** Valid options include: *** FD_DEFAULT : Perform the finite difference tests if check_results==true. *** FD_TEST : Always test, regardless of the value of check_results. *** FD_NO_TEST : Never test, regardless of the value of check_results. * decomp_sys_testing = DST_DEFAULT; *** [default] Test if check_results==true (see above) * decomp_sys_testing = DST_TEST; *** Always test * decomp_sys_testing = DST_NO_TEST; *** never test *** Determines if the range/null decomposition matrices from DecompositionSystem are *** tested or not (see the options_group DecompositionSystemTester). *** Valid options include: *** FD_DEFAULT : Perform the tests if check_results==true. *** FD_TEST : Always test, regardless of the value of check_results. *** FD_NO_TEST : Never test, regardless of the value of check_results. * decomp_sys_testing_print_level = DSPL_USE_GLOBAL; *** [default] Use the value in journal_print_level (see above). * decomp_sys_testing_print_level = DSPL_LEAVE_DEFAULT; *** Leave whatever setting in already in use. *** This option allows the user to determine how the testing print level is determined. *** Valid options include: *** DSLP_USE_GLOBAL : The value of journal_print_level will be used to determine reasonable values for *** print_tests and dump_all. *** DSLP_LEAVE_DEFAULT : Whatever values are currently set for DecompositionSystemTester::print_tests and *** DecompositionSystemTester::dump_all will be used (see the options_group *** DecompositionSystemTester). } *************************************************************** *** Options for determining if variable bounds *** xL <= x <= xU are violated by *** more than an acceptable tolerance. *** options_group VariableBoundsTester { * warning_tol = 1e-10; *** [default] * error_tol = 1e-5; *** [default] } *********************************************************** *** Options for the finite difference testing of derivatives for a *** standard NLP. *** options_group NLPFirstDerivTester { * fd_testing_method = FD_COMPUTE_ALL; *** Compute all of the derivatives (O(m)) * fd_testing_method = FD_DIRECTIONAL; *** [default] Only compute along random directions (O(1)) * num_fd_directions = 1; *** [fd_testing_method == DIRECTIONAL] * num_fd_directions = -1; *** [fd_testing_method == DIRECTIONAL] Use single direction y=1.0 * warning_tol = 1e-8; *** [default] * warning_tol = 0.0; *** Show me all comparisons. * error_tol = 1e-3; *** [default] } *************************************************************** *** Options for EvalNewPoint for a "Tailored Approach" NLP. *** See options_group NLPDirectTester *** options_group EvalNewPointTailoredApproach { * fd_deriv_testing = FD_DEFAULT; *** [default] Test if check_results==true (see above) * fd_deriv_testing = FD_TEST; *** Always test * fd_deriv_testing = FD_NO_TEST; *** never test } **************************************************************** *** Options for the finite difference derivative tester for a *** direct sensitivity NLP. *** options_group NLPDirectTester { * Gf_testing_method = FD_COMPUTE_ALL; *** Compute all of the derivatives (O(n)) * Gf_testing_method = FD_DIRECTIONAL; *** [default] Only compute along random directions (O(1)) * Gf_warning_tol = 1e-10; * Gf_error_tol = 1e-5; * Gc_testing_method = FD_COMPUTE_ALL; *** Compute all of the derivatives (O(n-m)) * Gc_testing_method = FD_DIRECTIONAL; *** [default] Only compute along random directions (O(1)) * Gc_warning_tol = 1e-10; * Gc_error_tol = 1e-5; * num_fd_directions = 1; *** [testing_method == DIRECTIONAL] * dump_all = true; * dump_all = false; *** [default] } **************************************************************** *** Options for the BasisSystem tester used to validate the *** basis of the constraints Jacobian. *** options_group BasisSystemTester { * print_tests = PRINT_NONE; *** [default] * print_tests = PRINT_BASIC; * print_tests = PRINT_MORE; * print_tests = PRINT_ALL; * dump_all = true; * dump_all = false; *** [default] * num_random_tests = 1; *** (+int) Number of sets of random tests to perform * warning_tol = 1e-15; *** (+dbl) Warning tolerance * error_tol = 1e-12; *** (+dbl) Error tolerance } **************************************************************** *** Options for the DecompositionSystem tester used to validate *** range/null decomposition matrices (NLPFirstOrder only). *** options_group DecompositionSystemTester { * print_tests = PRINT_NONE; *** [default] * print_tests = PRINT_BASIC; * print_tests = PRINT_MORE; * print_tests = PRINT_ALL; * dump_all = true; *** (costly) * dump_all = false; *** [default] * num_random_tests = 1; *** (+int) Number of sets of random test to perform * mult_warning_tol = 1e-14; *** (+dbl) Warning tolerance for checking matrix-vector multiplication * mult_error_tol = 1e-8; *** (+dbl) Error tolerance for checking matrix-vector multiplication * solve_warning_tol = 1e-14; *** (+dbl) Warning tolerance for checking linear solves * solve_error_tol = 1e-8; *** (+dbl) Error tolerance for checking linear solves } *** End Moocho.opt.DecompositionSystemStateStepBuilderStd *** Begin Moocho.opt.NLPAlgoConfigMamaJama ************************************************************************* *** All of these options can be used with the NLPAlgoConfigMamaJama *** algorithm configuration class. *** *** See the file Moocho.opt.DecompositionSystemStateStepBuilderStd *** for more options that are used by this class. *** *** This file will be maintained and will include every option that *** users can set. Most of these options the user will want to leave *** alone but they are there in any case. *** ********************************************************** *** Options specific for the rSQP algorithm configuration *** class NLPAlgoConfigMamaJama. *** options_group NLPAlgoConfigMamaJama { *** Variable Reduction range/null space decomposition * max_basis_cond_change_frac = -1.0; *** [default] *** (+-dbl) If < 0 then the solver will decide what value to use. *** Otherwise this is the change in a very inexact condition number estimate *** between iterations (see printed algorithm description) which triggers the *** selection of a new basis. *** Example values: *** -1 : Allow solver to decide [default] *** 0 : Switch to a new basis every iteration (not a good idea) *** 100 : Switch to a new basis when change is more that 100? *** 1e+50 : (big number) Never switch to a new basis. *** Reduced Hessian Approximations * exact_reduced_hessian = true; *** Use NLP Hessian info if available * exact_reduced_hessian = false; *** Use quasi_newton [default] *** If true and if the NLP supports second order information *** (hessian of the lagrangian HL) then the exact reduced hessian *** rHL = Z'*HL*Z will be computed at each iteration. * quasi_newton = AUTO; *** Let solver decide dynamically [default] * quasi_newton = BFGS; *** Dense BFGS * quasi_newton = LBFGS; *** Limited memory BFGS *** [exact_reduced_hessian == false] *** ToDo: Finish documentation! * num_lbfgs_updates_stored = -1; *** [default] *** [quasi_newton == LBFGS] (+-int) If < 0 then let solver decide *** otherwise this is the maximum number of update vectors stored *** for limited memory LBFGS. * lbfgs_auto_scaling = true; *** (default) * lbfgs_auto_scaling = false; *** [quasi_newton == LBFGS] If true then auto scaling of initial *** hessian approximation will be use for LBFGS. * hessian_initialization = AUTO; *** Let the solver decide dynamically [default] * hessian_initialization = SERIALIZE; *** rHL_(0) read from file (see ReducedHessianSerialization) * hessian_initialization = IDENTITY; *** rHL_(0) = I * hessian_initialization = FINITE_DIFF_SCALE_IDENTITY; *** rHL_(0) = ||fd|| * I * hessian_initialization = FINITE_DIFF_DIAGONAL; *** rHL_(0) = diag(max(fd(i),small),i) * hessian_initialization = FINITE_DIFF_DIAGONAL_ABS; *** rHL_(0) = diag(abs(fd(i)) *** [exact_reduced_hessian == false] Determines how the quasi-newton hessian is initialized. *** ToDo: Finis documentation! *** QP solvers * qp_solver = AUTO; *** Let the solver decide dynamically * qp_solver = QPKWIK; *** Primal-dual, active set, QR * qp_solver = QPOPT; *** Primal, active set, null space, Gill et. al. * qp_solver = QPSOL; *** Primal, active set, null space, Gill et. al. * qp_solver = QPSCHUR; *** [default] Primal-dual, active set, schur complement *** QP solver to use to solve the reduced space QP subproblem (null *** space step). Note that only QPSCHUR ships with MOOCHO by default. * reinit_hessian_on_qp_fail = true; *** [default] * reinit_hessian_on_qp_fail = false; *** If true, then if a QPFailure exception is thrown (see printed algorithm) *** then the Hessian approximation will be reinitialized and the QP solver will *** attempt to solve the QP again. *** Line search methods * line_search_method = AUTO; *** Let the solver decide dynamically [default] * line_search_method = NONE; *** Take full steps at every iteration * line_search_method = DIRECT; *** Use standard Armijo backtracking * line_search_method = 2ND_ORDER_CORRECT; *** Like DIRECT except computes corrections for * *** c(x) before backtracking line search * line_search_method = WATCHDOG; *** Like DIRECT except uses watchdog type trial steps * line_search_method = FILTER; *** [default] Use the Filter line search method *** Options: *** AUTO : Let the solver decide dynamically what line search method to use (if any) *** NONE : Take full steps at every iteration. For most problems this is a bad idea. *** However, for some problems this can help when starting close to the solution usually. *** DIRECT : Use a standard Armijo backtracking line search at every iteration. *** 2ND_ORDER_CORRECT : Like DIRECT except computes corrections for before applying *** the backtracking line search (see options_group LineSearch2ndOrderCorrect). *** This can help greatly on some problems and can counter act the Maritos effect. *** FILTER : Use the filter line search. Here we accept either a decrease in the *** objective function for the constraints. See "Global and Local Convergence of *** Line Search Filter Methods for Nonlinear Programming" by Waechter and Biegler. * merit_function_type = AUTO; *** [line_search_method != NONE] Let solver decide * merit_function_type = L1; *** [line_search_method != NONE] phi(x) = f(x) + mu*||c(x)||1 * merit_function_type = MODIFIED_L1; *** [line_search_method != NONE] phi(x) = f(x) + sum(mu(j),|cj(x)|,j) * merit_function_type = MODIFIED_L1_INCR; *** [line_search_method != NONE] Like MODIFIED_L1 except mu(j) are altered in order to take larger steps *** Determines the type of merit function used when the line search *** method uses a merit function. * l1_penalty_parameter_update = AUTO; *** [merit_function_type == L1] let solver decide * l1_penalty_parameter_update = WITH_MULT; *** [merit_function_type == L1] Use Lagrange multipliers to update mu * l1_penalty_parameter_update = MULT_FREE; *** [merit_function_type == L1] Don't use Lagrange multipliers to update mu *** Determines how the penalty parameter is updated for the L1 merit function. } ********************************************************************* *** Options for serialization of the reduced Hessian *** *** [NLPAlgoConfigMamaJama::hessian_initialization == SERIALIZE] *** options_group ReducedHessianSerialization { * reduced_hessian_input_file_name = "reduced_hessian.in"; *** [default] * reduced_hessian_input_file_name = ""; *** Does not read from file *** The name of a file that will be used to read in the reduced Hessian *** in a format that is compatible with the internal implementation. * reduced_hessian_output_file_name = "reduced_hessian.out"; *** [default] * reduced_hessian_output_file_name = ""; *** Does not write to file *** The name of a file that will be used to write in the reduced Hessian. *** This reduced Hessian can then be read back in using the *** reduced_hessian_input_file_name option. } ********************************************************************* *** Options for finite difference initialization of reduced hessian. *** *** [NLPAlgoConfigMamaJama::hessian_initialization == FINITE_DIFF_*] *** options_group InitFinDiffReducedHessian { * initialization_method = SCALE_IDENTITY; * initialization_method = SCALE_DIAGONAL; * initialization_method = SCALE_DIAGONAL_ABS; * max_cond = 1e+1; * min_diag = 1e-8; * step_scale = 1e-1; } ********************************************************************* *** Options for checking for skipping the BFGS update. *** *** [NLPAlgoConfigMamaJama::exact_hessian == false] *** options_group CheckSkipBFGSUpdateStd { * skip_bfgs_prop_const = 10.0; *** (+dbl) } ********************************************************************* *** Options for BFGS updating (dense or limited memory) *** *** [NLPAlgoConfigMamaJama::exact_hessian == false] *** options_group BFGSUpdate { * rescale_init_identity = true; *** [default] * rescale_init_identity = false; *** If true, then rescale the initial identity matrix at 2nd iteration * use_dampening = true; *** [default] * use_dampening = false; *** Use dampened BFGS update * secant_testing = DEFAULT; *** Test secant condition if check_results==true (see above) [default] * secant_testing = TEST; *** Always test secant condition * secant_testing = NO_TEST; *** Never test secant condition * secant_warning_tol = 1e-6; *** [default] * secant_error_tol = 1e-1; *** [default] } ********************************************************************* *** Options for the convergence test. *** *** See the printed step description (i.e. 'MoochoAlgo.out') for a *** description of what these options do. *** options_group CheckConvergenceStd { * scale_opt_error_by = SCALE_BY_NORM_2_X; * scale_opt_error_by = SCALE_BY_NORM_INF_X; * scale_opt_error_by = SCALE_BY_ONE; *** [default] * scale_feas_error_by = SCALE_BY_NORM_2_X; * scale_feas_error_by = SCALE_BY_NORM_INF_X; * scale_feas_error_by = SCALE_BY_ONE; *** [default] * scale_comp_error_by = SCALE_BY_NORM_2_X; * scale_comp_error_by = SCALE_BY_NORM_INF_X; * scale_comp_error_by = SCALE_BY_ONE; *** [default] *** Determines what all of the error measures are scaled by when checking convergence *** SCALE_BY_NORM_2_X : Scale the optimality conditions by 1/(1+||x_k||2) *** SCALE_BY_NORM_INF_X : Scale the optimality conditions by 1/(1+||x_k||inf) *** SCALE_BY_ONE : Scale the optimality conditions by 1 * scale_opt_error_by_Gf = true; *** [default] * scale_opt_error_by_Gf = false; *** Determines if the linear dependence of gradients (i.e. ||rGL_k||inf or ||GL_k||inf) *** is scaled by the gradient of the objective function or not. *** true : Scale ||rGL_k||inf or ||GL_k|| by an additional 1/(1+||Gf||inf) *** false : Scale ||rGL_k||inf or ||GL_k|| by an additional 1 (i.e. no extra scaling) } **************************************************************** *** Options for the TangentalStepWithInequStd_Step *** *** This used for NLPs that have bounds. *** options_group TangentialStepWithInequStd { * warm_start_frac = 0.8; *** [default] * warm_start_frac = 0.0; *** Never do a warm start * warm_start_frac = 1.0; *** Do a warm start as soon a possible *** (+dbl) Determines the number of inequality constraints that *** must be the same any two rSQP iterations in order for *** a warm start to be used on the next rSQP iteration. * qp_testing = QP_TEST_DEFAULT; *** [default] Test if check_results==true * qp_testing = QP_TEST; *** Always test * qp_testing = QP_NO_TEST; *** Never test *** Determines if the postconditions for the QP solve are checked *** or not. * primal_feasible_point_error = true; *** [default] Throw exception on PRIMAL_FEASIBLE_POINT * primal_feasible_point_error = false; *** No throw exception on PRIMAL_FEASIBLE_POINT * dual_feasible_point_error = true; *** [default] Throw exception on DUAL_FEASIBLE_POINT * dual_feasible_point_error = false; *** No throw exception on DUAL_FEASIBLE_POINT } ******************************************************************** *** Options for the QPSolverRelaxedTester object that is used *** to test the QP solution. *** *** This is only used when the NLP has bounds and a QP solver is used. *** This sets testing options for the TangentalStepWithInequalStd_Step *** object. *** *** See the MoochoAlgo.opt file for details. *** options_group QPSolverRelaxedTester { * opt_warning_tol = 1e-10; *** [default] Tolerances for optimality conditions * opt_error_tol = 1e-5; *** [default] * feas_warning_tol = 1e-10; *** [default] Tolerances for feasibility * feas_error_tol = 1e-5; *** [default] * comp_warning_tol = 1e-10; *** [default] Tolerances for complementarity * comp_error_tol = 1e-5; *** [default] } **************************************************************** *** Options for the primal-dual, active-set, schur-complement *** QP solver QPSchur. *** *** [NLPAlgoConfigMamaJama::qp_solver == QPSCHUR] *** options_group QPSolverRelaxedQPSchur { *** Convergence criteria and algorithm control options * max_qp_iter_frac = 10.0; *** (+dbl) max_qp_itr = max_qp_itr_frac * (# variables) * bounds_tol = 1e-10; *** (+dbl) feasibility tolerance for bound constraints * inequality_tol = 1e-10; *** (+dbl) feasibility tolerance for general inequality constraints * equality_tol = 1e-10; *** (+dbl) feasibility tolerance for general equality constraints * loose_feas_tol = 1e-9; *** (+dbl) (Expert use only) * dual_infeas_tol = 1e-12; *** (+dbl) allowable dual infeasibility before reporting an error * huge_primal_step = 1e+20; *** (+dbl) value of a near infinite primal step * huge_dual_step = 1e+20; *** (+dbl) value of a near infinite dual step * bigM = 1e+10; *** (+dbl) value or relaxation penalty in objective * iter_refine_at_solution = true; *** [default] * iter_refine_at_solution = false; *** If true then iterative refinement will be performed at the solution of *** the QP in every case. * iter_refine_min_iter = 1; *** [default] *** Minimum number of iterative refinement iterations to perform when *** using iterative refinement. *** Example values: *** 0 : Don't perform any iterations of iterative refinement if you don't have to *** 1 : Perform at least one step if iterative refinement no matter what the *** residual is. * iter_refine_max_iter = 3; *** [default] *** Maximum number of steps of iterative refinement to perform. *** This helps to keep down the cost of iterative refinement but *** can cause the QP method to fail due to ill-conditioning and roundoff. *** This number should be kept small since the target residuals may not *** be obtainable. *** Example values: *** 0 : Never perform any steps of iterative refinement *** 1 : Never perform more than one step of iterative refinement *** 10 : Never perform more than 10 steps of iterative refinement. * iter_refine_opt_tol = 1e-12; *** [default] *** Iterative refinement convergence tolerance for the optimality *** conditions of the QP. Specifically this is compared to the *** scaled linear dependence of gradients condition. *** Example values: *** 1e-50 : (very small number) Do iterative refinement until *** iter_refine_max_iter is exceeded. *** 1e-12 : [default] *** 1e+50 : (very big number) Allow convergence of iterative refinement at *** any time. * iter_refine_feas_tol = 1e-12; *** [default] *** Iterative refinement convergence tolerance for the feasibility *** conditions of the QP. Specifically this is compared to the *** scaled residual of the active constraints (equalities and inequalities) *** Example values: *** 1e-50 : (very small number) Do iterative refinement until *** iter_refine_max_iter is exceeded. *** 1e-12 : [default] *** 1e+50 : (very big number) Allow convergence of iterative refinement at *** any time. * inequality_pick_policy = ADD_BOUNDS_THEN_MOST_VIOLATED_INEQUALITY; *** [default] * inequality_pick_policy = ADD_BOUNDS_THEN_FIRST_VIOLATED_INEQUALITY; *** not supported yet! * inequality_pick_policy = ADD_MOST_VIOLATED_BOUNDS_AND_INEQUALITY; *** Warning and error tolerances * warning_tol = 1e-10; *** General testing warning tolerance * error_tol = 1e-5; *** General testing error tolerance * pivot_warning_tol = 1e-8; *** [default] *** (+dbl) Minimum relative tolerance for a pivot element in the schur complement *** under which a warning message for near singularity will be printed *** (see MatrixSymAddDelUpdateable). *** Example values: *** 0.0: Don't print any warning messages about near singularity. *** 1e-6: default *** 2.0: ( > 1 ) Show the pivot tolerance of every update! * pivot_singular_tol = 1e-11; *** [default] *** (+dbl) Minimum relative tolerance for a pivot element in the schur complement *** under which the matrix is considered singular and an error message will be printed *** (see MatrixSymAddDelUpdateable). *** Example values: *** 0.0: Allow any numerically nonsingular matrix. *** 1e-8: default *** 2.0: ( > 1 ) Every matrix is singular (makes no sense!) * pivot_wrong_inertia_tol = 1e-11; *** [default] *** (+dbl) Minimum relative tolerance for a pivot element in the schur complement *** over which the matrix is considered to have the wrong inertia rather than *** being singular and an error message will be printed *** (see MatrixSymAddDelUpdateable). *** Example values: *** 0.0: Any pivot with the wrong sign will be considered to have the wrong inertia *** 1e-8: default *** 2.0: ( > 1 ) Every matrix has the wrong inertia (makes no sense!) *** Output control * print_level = USE_INPUT_ARG; *** [default] Use the input argument to solve_qp(...) * print_level = NO_OUTPUT; * print_level = OUTPUT_BASIC_INFO; * print_level = OUTPUT_ITER_SUMMARY; * print_level = OUTPUT_ITER_STEPS; * print_level = OUTPUT_ACT_SET; * print_level = OUTPUT_ITER_QUANTITIES; } ******************************************************************** *** Options for the direct line search object that is used in all the *** line search methods for the SQP step. *** *** [NLPAlgoConfigMamaJama::line_search_method != NONE] *** *** See the MoochoAlgo.opt file for details. *** options_group DirectLineSearchArmQuadSQPStep { * slope_frac = 1.0e-4; * min_frac_step = 0.1: * max_frac_step = 0.5; * max_ls_iter = 20; } ******************************************************************* *** Options for the watchdog line search. *** *** [NLPAlgoConfigMamaJama::line_search_method = WATCHDOG] *** *** Warning! The watchdog option is not currently supported! *** options_group LineSearchWatchDog { * opt_kkt_err_threshold = 1e-3; *** (+dbl) * feas_kkt_err_threshold = 1e-3; *** (+dbl) *** Start the watchdog linesearch when opt_kkt_err_k < opt_kkt_err_threshold and *** feas_kkt_err_k < feas_kkt_err_threshold } ******************************************************************* *** Options for the second order correction line search. *** *** [NLPAlgoConfigMamaJama::line_search_method == 2ND_ORDER_CORRECT] *** *** Warning! The 2nd order correction option is not currently supported! *** options_group LineSearch2ndOrderCorrect { * newton_olevel = PRINT_USE_DEFAULT; *** O(?) output [default] * newton_olevel = PRINT_NOTHING; *** No output * newton_olevel = PRINT_SUMMARY_INFO; *** O(max_newton_iter) output * newton_olevel = PRINT_STEPS; *** O(max_newton_iter) output * newton_olevel = PRINT_VECTORS; *** O(max_newton_iter*n) output *** Determines the amount of output printed to the journal output stream. *** PRINT_USE_DEFAULT: Use the output level from the overall algorithm *** to print comparable output (see journal_output_level). *** PRINT_NOTHING: Don't print anything (overrides default print level). *** PRINT_SUMMARY_INFO: Print a nice little summary table showing the sizes of the *** newton steps used to compute a feasibility correction as well as what *** progress is being made. *** PRINT_STEPS: Don't print a summary table and instead print some more detail *** as to what computations are being performed etc. *** PRINT_VECTORS: Print out relevant vectors as well for the feasibility Newton *** iterations. * constr_norm_threshold = 1.0; *** [default] *** (+dbl) Tolerance for ||c_k||inf below which a 2nd order correction step *** will be considered (see printed description). Example values: *** 0.0: Never consider computing a correction. *** 1e-3: Consider a correction if and only if ||c_k||inf <= 1e-3 *** 1e+50: (big number) Consider a correction regardless of ||c_k||inf. * constr_incr_ratio = 10.0; *** [default] *** (+dbl) Tolerance for ||c_kp1||inf/(1.0+||c_k||inf) below which a 2nd order *** correction step will be considered (see printed description). Example values: *** 0.0: Consider computing a correction only if ||c_kp1||inf is zero. *** 10.0: Consider computing a correction if and only if *** ||c_kp1||inf/(1.0+||c_k||inf) < 10.0. *** 1e+50: (big number) Consider a correction regardless how big ||c_kp1||inf is. * after_k_iter = 0; *** [default] *** (+int) Number of SQP iterations before a 2nd order correction will be considered *** (see printed description). Example values: *** 0: Consider computing a correction right away at the first iteration. *** 2: Consider computing a correction when k >= 2. *** 999999: (big number) Never consider a 2nd order correction. * forced_constr_reduction = LESS_X_D; * forced_constr_reduction = LESS_X; *** [default] *** Determine the amount of reduction required for c(x_k+d+w). *** LESS_X_D: phi(c(x_k+d+w)) < forced_reduct_ratio * phi(c(x_k+d)) is all that is required. *** As long as a feasible step can be computed, only one newton *** iteration should be required for this. *** LESS_X: phi(c(x_k+d+w)) < forced_reduct_ratio * phi(c(x_k)) is required. *** In general, this may require several feasibility step calculations *** and several newton iterations. Of course the maximum number of *** newton iterations may be exceeded before this is achieved. * forced_reduct_ratio = 1.0; *** [default] *** (+dbl) (< 1) Fraction of reduction in phi(c(x)) for required reduction. *** Example values: *** 0.0: The constraints must be fully converged and newton iterations will *** performed until max_newton_itr is exceeded. *** 0.5: Require an extra 50% of the required reduction. *** 1.0: Don't require any extra reduction. * max_step_ratio = 1.0; *** [default] *** (+dbl) Maximum ratio of ||w^p||inf/||d||inf allowed for correction step w^p before *** a line search along phi(c(x_k+d+b*w^p)) is performed. The purpose of this parameter *** is to limit the number of line search iterations needed for each feasibility *** step and to keep the full w = sum(w^p,p=1...) from getting too big. Example values: *** 0.0: Don't allow any correction step. *** 0.1: Allow ||w^p||inf/||d||inf <= 0.1. *** 1.0: Allow ||w^p||inf/||d||inf <= 1.0. *** 1e+50: (big number) Allow ||w^p||inf/||d||inf to be a big as possible. * max_newton_iter = 3; *** [default] *** (+int) Limit the number of newton feasibility iterations (with line searches) *** allowed. Example values: *** 0: Don't allow any newton iterations (no 2nd order correction). *** 3: Allow 3 newton iterations *** 999999: Allow any number of newton iterations (not a good idea) } ******************************************************************* *** Options for the filter search. *** *** [NLPAlgoConfigMamaJama::line_search_method = FILTER] *** *** See the MoochoAlgo.out file for details *** options_group LineSearchFilter { * gamma_theta = 1e-5; *** [default] * gamma_f = 1e-5; *** [default] * f_min = UNBOUNDED; *** [default] * f_min = 0.0; *** If 0 is minimum ... * gamma_alpha = 5e-2; *** [default] * delta = 1e-4; *** [default] * s_theta = 1.1; *** [default] * s_f = 2.3; *** [default] * theta_small_fact = 1e-4; *** [default] * theta_max = 1e10; *** [default] * eta_f = 1e-4; *** [default] * back_track_frac = 0.5; *** [default] } ******************************************************************* *** Options for generating feasibility steps for reduced space. *** *** [NLPAlgoConfigMamaJama::line_search_method == 2ND_ORDER_CORRECT] *** *** Warning! The 2nd order correction option is not currently supported! *** options_group FeasibilityStepReducedStd { * qp_objective = OBJ_MIN_FULL_STEP; * qp_objective = OBJ_MIN_NULL_SPACE_STEP; * qp_objective = OBJ_RSQP; * qp_testing = QP_TEST_DEFAULT; * qp_testing = QP_TEST; * qp_testing = QP_NO_TEST; } ****************************************************************** *** Options for the direct line search object for *** the newton steps of the 2nd order correction (see above). *** *** [NLPAlgoConfigMamaJama::line_search_method == 2ND_ORDER_CORRECT] *** *** Warning! The 2nd order correction option is not currently supported! *** options_group DirectLineSearchArmQuad2ndOrderCorrectNewton { * slope_frac = 1.0e-4; * min_frac_step = 0.1: * max_frac_step = 0.5; * max_ls_iter = 20; } ****************************************************************** *** Change how the penalty parameters for the merit function *** are adjusted. *** *** [NLPAlgoConfigMamaJama::line_search_method != NONE] *** options_group MeritFuncPenaltyParamUpdate { * small_mu = 1e-6; * min_mu_ratio = 1e-8 * mult_factor = 7.5e-4; * kkt_near_sol = 1e-1; } ***************************************************************** *** Change how the penalty parameters for the modified *** L1 merit function are increased. *** *** [NLPAlgoConfigMamaJama::line_search_method != NONE] *** [NLPAlgoConfigMamaJama::merit_function_type == MODIFIED_L1_INCR] *** options_group MeritFuncModifiedL1LargerSteps { * after_k_iter = 3; *** (+int) Number of SQP iterations before considering increasing penalties. *** Set to 0 to start at the first iteration. * obj_increase_threshold = 1e-4; *** (+-dbl) Consider increasing penalty parameters when the relative *** increase in the objective function is greater than this value. *** Set to a very large negative number (i.e. -1e+100) to always *** allow increasing the penalty parameters. * max_pos_penalty_increase = 1.0; *** (+dbl) Ratio the multipliers are allowed to be increased. *** Set to a very large number (1e+100) to allow increasing the penalties *** to any value if it will help in taking a larger step. This will *** in effect put all of the weight of the constraints and will force *** the algorithm to only minimize the infeasibility and ignore *** optimality. * pos_to_neg_penalty_increase = 1.0; *** (+dbl) * incr_mult_factor = 1e-4; *** (+dbl) } *** End Moocho.opt.NLPAlgoConfigMamaJama end_options