MatBSolver.hxx
Go to the documentation of this file.00001
00002
00003 #ifndef CONICBUNDLE_MATBSOLVER_HXX
00004 #define CONICBUNDLE_MATBSOLVER_HXX
00005
00014 #include "MatCBSolver.hxx"
00015
00016
00017
00018
00019 namespace ConicBundle {
00020
00024
00025
00026
00031 class MatrixBSolver
00032 {
00033 private:
00034 public:
00035
00037 virtual ~MatrixBSolver(){}
00038
00039
00042
00046 virtual void clear()=0;
00047
00050 virtual void set_defaults()=0;
00051
00093 virtual int init_problem(int dim,
00094 const CH_Matrix_Classes::Matrix* lbounds=0,
00095 const CH_Matrix_Classes::Matrix* ubounds=0,
00096 const CH_Matrix_Classes::Matrix* costs=0)=0;
00097
00098
00112 virtual int
00113 add_function
00114 ( FunctionObject& function )=0;
00115
00127 virtual int set_lower_bound(int i, double lb)=0;
00128
00140 virtual int set_upper_bound(int i, double ub)=0;
00141
00142
00180 virtual int append_variables(int n_append,
00181 const CH_Matrix_Classes::Matrix* lbounds=0,
00182 const CH_Matrix_Classes::Matrix* ubounds=0,
00183 const CH_Matrix_Classes::Matrix* costs=0)=0;
00184
00216 virtual int delete_variables(const CH_Matrix_Classes::Indexmatrix& del_indices,CH_Matrix_Classes::Indexmatrix& map_to_old)=0;
00217
00245 virtual int reassign_variables(const CH_Matrix_Classes::Indexmatrix& assign_new_from_old)=0;
00246
00248
00249
00252
00300 virtual int
00301 do_descent_step(int maxsteps=0)=0;
00302
00303
00337 virtual int
00338 termination_code()
00339 const=0;
00340
00348 virtual std::ostream&
00349 print_termination_code(std::ostream& out)=0;
00350
00356 virtual double
00357 get_objval()
00358 const=0;
00359
00370 virtual int
00371 get_center
00372 ( CH_Matrix_Classes::Matrix& center )
00373 const=0;
00374
00375
00378 virtual double
00379 get_sgnorm()
00380 const=0;
00381
00389 virtual int
00390 get_subgradient
00391 ( CH_Matrix_Classes::Matrix& subgradient )
00392 const=0;
00393
00397 virtual double
00398 get_cutval()
00399 const=0;
00400
00409 virtual double
00410 get_candidate_value()
00411 const=0;
00412
00423 virtual int
00424 get_candidate
00425 ( CH_Matrix_Classes::Matrix& candidate )
00426 const=0;
00427
00428
00430
00431
00434
00448 virtual int
00449 set_term_relprec
00450 ( const double term_relprec )=0;
00451
00460 virtual int
00461 set_new_center_point
00462 ( const CH_Matrix_Classes::Matrix& center_point )=0;
00463
00464
00468 virtual int
00469 get_function_status
00470 ( const FunctionObject& function )
00471 const=0;
00472
00480 virtual int
00481 get_approximate_slacks(CH_Matrix_Classes::Matrix &)
00482 const=0;
00483
00497 virtual int
00498 get_approximate_primal
00499 ( const FunctionObject& function,
00500 PrimalData& primal )
00501 const=0;
00502
00516 virtual int
00517 get_center_primal
00518 ( const FunctionObject& function,
00519 PrimalData& primal )
00520 const=0;
00521
00522
00533 virtual int
00534 get_candidate_primal
00535 ( const FunctionObject& function,
00536 PrimalData& primal )
00537 const=0;
00538
00539
00565 virtual int
00566 set_max_bundlesize
00567 ( const FunctionObject& function, int max_bundlesize )=0;
00568
00586 virtual int
00587 set_max_new_subgradients
00588 ( const FunctionObject& function, int max_new_subgradients )=0;
00589
00606 virtual int
00607 set_bundle_parameters
00608 ( const FunctionObject& function,
00609 const BundleParameters& params )=0;
00610
00627 virtual int
00628 get_bundle_parameters
00629 ( const FunctionObject& function, BundleParameters& params )
00630 const=0;
00631
00649 virtual int
00650 get_bundle_values
00651 ( const FunctionObject& function, BundleParameters& params )
00652 const=0;
00653
00669 virtual int reinit_function_model
00670 ( const FunctionObject& function )=0;
00671
00686 virtual int clear_aggregates
00687 ( const FunctionObject& function )=0;
00688
00709 virtual int call_primal_extender
00710 (const FunctionObject& function,
00711 PrimalExtender& primal_extender)=0;
00712
00713
00717 virtual double
00718 get_last_weight()
00719 const=0;
00720
00741 virtual int
00742 set_next_weight
00743 ( const double weight )=0;
00744
00759 virtual int
00760 set_min_weight
00761 ( const double min_weight )=0;
00762
00776 virtual int
00777 set_max_weight
00778 ( const double max_weight )=0;
00779
00796 virtual int
00797 adjust_multiplier
00798 ( void )=0;
00799
00800
00807 virtual int
00808 set_scaling
00809 ( bool do_scaling )=0;
00810
00826 virtual int
00827 set_scaling
00828 ( const CH_Matrix_Classes::Matrix& scale )=0;
00829
00854 virtual void
00855 set_active_bounds_fixing
00856 ( bool allow_fixing )=0;
00857
00865 virtual void
00866 clear_fail_counts
00867 (void)=0;
00868
00882 virtual void
00883 set_eval_limit
00884 (CH_Matrix_Classes::Integer eval_limit)=0;
00885
00899 virtual void
00900 set_inner_update_limit
00901 (CH_Matrix_Classes::Integer update_limit)=0;
00902
00904
00905
00911 virtual int get_dim() const=0;
00912
00915 virtual int get_n_functions() const=0;
00916
00919 virtual int get_n_oracle_calls() const=0;
00920
00923 virtual int get_n_descent_steps() const=0;
00924
00927 virtual int get_n_inner_iterations() const=0;
00928
00931 virtual int get_n_inner_updates() const=0;
00932
00935 virtual const CH_Matrix_Classes::Matrix& get_lbounds() const=0;
00936
00939 virtual const CH_Matrix_Classes::Matrix& get_ubounds() const=0;
00940
00949 virtual const CH_Matrix_Classes::Indexmatrix& get_active_bounds_indicator() const=0;
00950
00952
00953
00956
01014 virtual void
01015 set_out
01016 (std::ostream* out=0,int print_level=1)=0;
01017
01019 virtual std::ostream& print_line_summary(std::ostream& out) const=0;
01020
01022
01023 };
01024
01026 }
01027
01028 #endif
01029
01030
01031