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 

Generated on Tue May 3 16:52:53 2011 for ConicBundle by  doxygen 1.5.6