00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef RSQP_ALGO_CONFIG_MAMA_JAMA_H
00030 #define RSQP_ALGO_CONFIG_MAMA_JAMA_H
00031
00032 #include "MoochoPack_NLPAlgoConfig.hpp"
00033 #include "MoochoPack_NLPAlgo.hpp"
00034 #include "MoochoPack_DecompositionSystemStateStepBuilderStd.hpp"
00035 #include "OptionsFromStreamPack_OptionsFromStream.hpp"
00036
00037 namespace MoochoPack {
00038
00056 class NLPAlgoConfigMamaJama : public NLPAlgoConfig {
00057 public:
00058
00060 NLPAlgoConfigMamaJama();
00061
00063 ~NLPAlgoConfigMamaJama();
00064
00067
00078 void set_options( const options_ptr_t& options );
00080 const options_ptr_t& get_options() const;
00082 void config_algo_cntr(NLPAlgoContainer* algo_cntr, std::ostream* trase_out);
00084 void init_algo(NLPAlgoInterface* algo);
00085
00087
00088 public:
00089
00092
00094 enum EQuasiNewton {
00095 QN_AUTO, QN_BFGS, QN_PBFGS, QN_LBFGS, QN_LPBFGS };
00097 enum EHessianInitialization {
00098 INIT_HESS_AUTO, INIT_HESS_SERIALIZE, INIT_HESS_IDENTITY, INIT_HESS_FIN_DIFF_SCALE_IDENTITY
00099 , INIT_HESS_FIN_DIFF_SCALE_DIAGONAL, INIT_HESS_FIN_DIFF_SCALE_DIAGONAL_ABS };
00101 enum EQPSolverType {
00102 QP_AUTO, QP_QPSOL, QP_QPOPT, QP_QPKWIK, QP_QPSCHUR };
00104 enum ELineSearchMethod {
00105 LINE_SEARCH_AUTO, LINE_SEARCH_NONE, LINE_SEARCH_DIRECT
00106 , LINE_SEARCH_2ND_ORDER_CORRECT, LINE_SEARCH_WATCHDOG
00107 , LINE_SEARCH_FILTER };
00109 enum EMeritFunctionType {
00110 MERIT_FUNC_AUTO, MERIT_FUNC_L1, MERIT_FUNC_MOD_L1
00111 , MERIT_FUNC_MOD_L1_INCR };
00113 enum EL1PenaltyParamUpdate {
00114 L1_PENALTY_PARAM_AUTO, L1_PENALTY_PARAM_WITH_MULT
00115 , L1_PENALTY_PARAM_MULT_FREE };
00116
00118
00121
00123 struct SOptionValues {
00124
00125 SOptionValues();
00126
00127 value_type max_basis_cond_change_frac_;
00128
00129 bool exact_reduced_hessian_;
00130 EQuasiNewton quasi_newton_;
00131 int num_lbfgs_updates_stored_;
00132 bool lbfgs_auto_scaling_;
00133 EHessianInitialization hessian_initialization_;
00134
00135 EQPSolverType qp_solver_type_;
00136 bool reinit_hessian_on_qp_fail_;
00137
00138 ELineSearchMethod line_search_method_;
00139 EMeritFunctionType merit_function_type_;
00140 EL1PenaltyParamUpdate l1_penalty_param_update_;
00141 int full_steps_after_k_;
00142 value_type max_pz_norm_;
00143 int num_pz_damp_iters_;
00144 };
00145
00147
00148 private:
00149
00151 DecompositionSystemStateStepBuilderStd decomp_sys_step_builder_;
00152
00154 options_ptr_t options_;
00155
00157 SOptionValues uov_;
00158 SOptionValues cov_;
00159
00160
00161
00162
00164 static void readin_options(
00165 const OptionsFromStreamPack::OptionsFromStream& options
00166 , SOptionValues *option_values, std::ostream* trase_out );
00167
00169 static void set_default_options(
00170 const SOptionValues& user_option_values
00171 , SOptionValues *current_option_values
00172 , std::ostream* trase_out );
00173
00174 };
00175
00185 }
00186
00187 #endif // RSQP_ALGO_CONFIG_MAMA_JAMA_H