MatFCBSolver.hxx
Go to the documentation of this file.00001
00002
00003 #ifndef CONICBUNDLE_MATFCBSOLVER_HXX
00004 #define CONICBUNDLE_MATFCBSOLVER_HXX
00005
00014 #include "MatBSolver.hxx"
00015
00016
00017
00018
00019 namespace ConicBundle {
00020
00024
00025
00026 class MatFCBSolverData;
00027
00045 class MatrixFCBSolver: public MatrixBSolver
00046 {
00047 private:
00048 MatFCBSolverData* data_;
00049 MatrixFCBSolver ( const CBSolver& );
00050 MatrixFCBSolver& operator= ( const CBSolver& );
00051 public:
00052
00054 MatrixFCBSolver();
00056 ~MatrixFCBSolver();
00057
00058
00061
00065 void clear();
00066
00069 void set_defaults();
00070
00112 int init_problem(int dim,
00113 const CH_Matrix_Classes::Matrix* lbounds=0,
00114 const CH_Matrix_Classes::Matrix* ubounds=0,
00115 const CH_Matrix_Classes::Matrix* costs=0);
00116
00117
00131 int
00132 add_function
00133 ( FunctionObject& function );
00134
00146 int set_lower_bound(int i, double lb);
00147
00159 int set_upper_bound(int i, double ub);
00160
00161
00199 int append_variables(int n_append,
00200 const CH_Matrix_Classes::Matrix* lbounds=0,
00201 const CH_Matrix_Classes::Matrix* ubounds=0,
00202 const CH_Matrix_Classes::Matrix* costs=0);
00203
00235 int delete_variables(const CH_Matrix_Classes::Indexmatrix& del_indices,CH_Matrix_Classes::Indexmatrix& map_to_old);
00236
00264 int reassign_variables(const CH_Matrix_Classes::Indexmatrix& assign_new_from_old);
00265
00267
00268
00271
00319 int
00320 do_descent_step(int maxsteps=0);
00321
00322
00357 int
00358 termination_code()
00359 const;
00360
00368 std::ostream&
00369 print_termination_code(std::ostream& out);
00370
00376 double
00377 get_objval()
00378 const;
00379
00390 int
00391 get_center
00392 ( CH_Matrix_Classes::Matrix& center )
00393 const;
00394
00395
00398 double
00399 get_sgnorm()
00400 const;
00401
00409 int
00410 get_subgradient
00411 ( CH_Matrix_Classes::Matrix& subgradient )
00412 const;
00413
00417 double
00418 get_cutval()
00419 const;
00420
00429 double
00430 get_candidate_value()
00431 const;
00432
00443 int
00444 get_candidate
00445 ( CH_Matrix_Classes::Matrix& center )
00446 const;
00447
00448
00450
00451
00454
00468 int
00469 set_term_relprec
00470 ( const double term_relprec );
00471
00480 int
00481 set_new_center_point
00482 ( const CH_Matrix_Classes::Matrix& center_point );
00483
00484
00488 int
00489 get_function_status
00490 ( const FunctionObject& function )
00491 const;
00492
00500 int
00501 get_approximate_slacks(CH_Matrix_Classes::Matrix &)
00502 const;
00503
00517 int
00518 get_approximate_primal
00519 ( const FunctionObject& function,
00520 PrimalData& primal )
00521 const;
00522
00536 int
00537 get_center_primal
00538 ( const FunctionObject& function,
00539 PrimalData& primal )
00540 const;
00541
00542
00553 int
00554 get_candidate_primal
00555 ( const FunctionObject& function,
00556 PrimalData& primal )
00557 const;
00558
00559
00585 int
00586 set_max_bundlesize
00587 ( const FunctionObject& function, int max_bundlesize );
00588
00606 int
00607 set_max_new_subgradients
00608 ( const FunctionObject& function, int max_new_subgradients );
00609
00626 int
00627 set_bundle_parameters
00628 ( const FunctionObject& function,
00629 const BundleParameters& params );
00630
00647 int
00648 get_bundle_parameters
00649 ( const FunctionObject& function, BundleParameters& params )
00650 const;
00651
00669 int
00670 get_bundle_values
00671 ( const FunctionObject& function, BundleParameters& params )
00672 const;
00673
00689 int reinit_function_model
00690 ( const FunctionObject& function );
00691
00706 int clear_aggregates
00707 ( const FunctionObject& function );
00708
00729 int call_primal_extender
00730 (const FunctionObject& function,
00731 PrimalExtender& primal_extender);
00732
00736 double
00737 get_last_weight()
00738 const;
00739
00743 double
00744 get_next_weight()
00745 const;
00746
00767 int
00768 set_next_weight
00769 ( const double weight );
00770
00785 int
00786 set_min_weight
00787 ( const double min_weight );
00788
00802 int
00803 set_max_weight
00804 ( const double max_weight );
00805
00822 int
00823 adjust_multiplier
00824 ( void );
00825
00826
00836 int
00837 set_scaling
00838 ( bool do_scaling );
00839
00858 int
00859 set_scaling
00860 ( const CH_Matrix_Classes::Matrix& scale );
00861
00862
00878 int
00879 set_quadratic_term
00880 ( const CH_Matrix_Classes::Symmatrix& H, bool trust_region=true);
00881
00897 int
00898 set_quadratic_term
00899 ( const CH_Matrix_Classes::Matrix& d, bool trust_region=true );
00900
00922 int
00923 set_quadratic_term
00924 ( const CH_Matrix_Classes::Matrix& vecH, const CH_Matrix_Classes::Matrix& lamH,
00925 CH_Matrix_Classes::Real r, bool trust_region=true,bool ShermanMorrison =true);
00926
00934 int
00935 set_default_quadratic_term(void);
00936
00961 virtual void
00962 set_active_bounds_fixing
00963 ( bool allow_fixing );
00964
00972 void
00973 clear_fail_counts
00974 (void);
00975
00989 void
00990 set_eval_limit
00991 (CH_Matrix_Classes::Integer eval_limit);
00992
01006 void
01007 set_inner_update_limit
01008 (CH_Matrix_Classes::Integer update_limit);
01009
01011
01012
01018 int get_dim() const;
01019
01022 int get_n_functions() const;
01023
01026 int get_n_oracle_calls() const;
01027
01030 int get_n_descent_steps() const;
01031
01034 int get_n_inner_iterations() const;
01035
01038 int get_n_inner_updates() const;
01039
01042 const CH_Matrix_Classes::Matrix& get_lbounds() const;
01043
01046 const CH_Matrix_Classes::Matrix& get_ubounds() const;
01047
01056 const CH_Matrix_Classes::Indexmatrix& get_active_bounds_indicator() const;
01057
01059
01060
01063
01121 void
01122 set_out
01123 (std::ostream* out=0,int print_level=1);
01124
01126 std::ostream& print_line_summary(std::ostream& out) const;
01127
01129
01130 };
01131
01133 }
01134
01135 #endif
01136
01137
01138