ConicBundle
BundleSolver.hxx
Go to the documentation of this file.
1 
2 
3 #ifndef CONICBUNDLE_BUNDLESOLVER_HXX
4 #define CONICBUNDLE_BUNDLESOLVER_HXX
5 
6 
15 #include "clock.hxx"
16 #include "QPSolverObject.hxx"
17 #include "Groundset.hxx"
18 #include "BundleModel.hxx"
19 #include "BundleWeight.hxx"
20 #include "BundleTerminator.hxx"
21 
22 
23 namespace ConicBundle {
24 
34 
35 
104 {
105 private:
106  //-----------------------------------------------------------------------
110 
113 
118 
121 
124 
125 
128 
130 
131  //-----------------------------------------------------------------------
136 
142  bool use_linval;
147 
150 
154 
157 
158 
160 
161  //-----------------------------------------------------------------------
166 
169 
184 
185 
200 
205 
206 
207 
209 
210  //-----------------------------------------------------------------------
215 
228 
233 
237  bool null_step;
238 
240  int retcode;
242  int terminate;
243 
244 
246 
247  //-----------------------------------------------------------------------
252 
255 
258 
263  mutable int qp_save_cnt;
264 
265  //-----------------------------------------------------------------------
270 
277 
291  CH_Matrix_Classes::Integer sumrecomp; //sum over all recomputations
293  CH_Matrix_Classes::Integer qpfails; //counts number of fails in calls to eval_aug_model
299  CH_Matrix_Classes::Integer summodelfails;//sums up number of fails
307  CH_Matrix_Classes::Integer sumoraclefails;//sums up number of fails
308 
310  CH_Matrix_Classes::Integer descent_steps; //counts number of descent_steps
313 
315 
316  //-----------------------------------------------------------------------
321  int variable_metric(const CH_Matrix_Classes::Indexmatrix* new_indices=0);
323 
325  int solve_model(void);
326 
402  int eval_augmodel(CH_Matrix_Classes::Real& augval_lb,
403  CH_Matrix_Classes::Integer& center_ub_fid,
404  CH_Matrix_Classes::Real& center_ub,
405  CH_Matrix_Classes::Real relprec,
406  CH_Matrix_Classes::Real center_gs_value);
407 
467  CH_Matrix_Classes::Integer& center_ub_fid,
468  CH_Matrix_Classes::Real& center_ub,
469  CH_Matrix_Classes::Real relprec,
470  CH_Matrix_Classes::Real center_gs_value,
471  const MinorantPointer& delta_gs_minorant,
472  const CH_Matrix_Classes::Indexmatrix& delta_index);
473 
475 
476 public:
477 
478  //-----------------------------------------------------------------------
483 
485  BundleSolver(const CBout* cbo=0,int incr=-1);
486 
488  BundleSolver(CH_Matrix_Classes::Integer dim, BundleModel* bp=0,const CBout* cbo=0,int incr=-1);
489 
491  BundleSolver(Groundset* gs,BundleModel* bp=0,const CBout* cbo=0,int incr=-1);
492 
494  ~BundleSolver();
495 
497  void set_defaults();
498 
500  void clear();
501 
503  void clear_fails();
504 
507 
509  int initialize(Groundset* gs,BundleModel* bp=0);
510 
512  void set_out(std::ostream* o=0,int pril=1)
513  {
514  CBout::set_out(o,pril);
515  }
516 
518  void set_cbout(const CBout* cb,int incr)
519  {
520  CBout::set_out(cb->get_out_ptr(),cb->get_print_level()+incr);
521  }
523 
524  //-----------------------------------------------------------------------
529 
531  int set_model(BundleModel* bp);
532 
534  int set_new_center(const CH_Matrix_Classes::Matrix* yp=0); // yp==0 uses default starting point
535 
537  int solve(int maxsteps=0,bool stop_at_descent_steps=false);
538 
567  std::ostream& print_line_summary(std::ostream& out) const;
568 
570  int apply_modification(const GroundsetModification& gsmdf,const FunObjModMap& funmdfmap);
571 
574  {
575  FunObjModMap funmdfmap;
576  return apply_modification(gsmdf,funmdfmap);
577  }
578 
579 
581 
582  //-----------------------------------------------------------------------
587 
590  {delete terminator; terminator=bt;}
591 
593  void set_bundleweight(BundleWeight* bw);
594 
597  {if (in_eps>0.) modeleps=in_eps;}
598 
601  {if ((in_mL>0)&&(in_mL<1.)) mL=in_mL;}
602 
605  {if ((in_mN>=mL)&&(in_mN<1.)) mN=in_mN;}
606 
608  void set_use_linval(bool ul)
609  {use_linval=ul;}
610 
612  void set_do_yfixing(bool dofix){groundset->set_use_yfixing(dofix);}
613 
615  int set_variable_metric(int ds);
616 
619 
621  int set_prox(BundleProxObject* bsp);
622 
624  void set_clock(const CH_Tools::Clock& myclock)
625  {clockp=&myclock;}
626 
629  {max_updates=mu;}
630 
632 
633  //-----------------------------------------------------------------------
638 
640  int get_terminate() const
641  {return terminate;}
642 
645  {return center_ub+center_gs_val;}
648  {return center_ub;}
651  {return center_gs_val;}
654  {return center_y;}
655 
658  {return cand_ub+cand_gs_val;}
661  {return cand_ub;}
664  {return cand_gs_val;}
667  {return cand_y;}
668 
671  {return aggr_dnormsqr;}
674  {return groundset->get_gs_aggregate().offset()+model_aggregate.offset();}
676  void get_aggregate(CH_Matrix_Classes::Matrix& aggregate) const
677  {
679  aggregate.init(groundset->get_dim(),1,0.);
680  model_aggregate.get_minorant(dummy,aggregate,0,1.,false);
681  groundset->get_gs_aggregate().get_minorant(dummy,aggregate,0,1.,true);
682  }
683 
686  {return groundset->get_gs_aggregate();}
687 
690  {return model_aggregate;}
691 
694  {return modelval;}
695 
700 
702  bool get_descent_step() const {return descent_step;}
704  bool get_null_step() const {return null_step;}
705 
707  const CH_Matrix_Classes::Indexmatrix* get_yfixed() const {return groundset->get_yfixed();}
708 
709 
711 
712  //-----------------------------------------------------------------------
717 
718 
722  int get_use_linval() const {return use_linval;}
726  bool get_use_variable_metric() const {return Hp->employ_variable_metric();}
727 
758 
761 
763  const Groundset* get_groundset() const {return groundset;}
765  const BundleModel* get_model() const {return model;}
767  BundleProxObject* get_prox() const {return Hp;}
772 
782  std::ostream& print_statistics(std::ostream& out) const;
784  int qp_mfile_data(const CH_Matrix_Classes::Matrix& center_y,
785  const BundleProxObject* Hp,
786  const MinorantPointer& gs_subg,
788  const CH_Matrix_Classes::Matrix& c,
790  const CH_Matrix_Classes::Indexmatrix& yfixed
791  ) const;
793 
794 
795 };
796 
798 
799 }
800 
801 #endif
802 
void clear_fails()
resets all fail counts to zero (call this to resume computations
CH_Matrix_Classes::Integer augvalfails
number of iterations which failed to increase augval by a realtive epsilon since last descent step ...
Definition: BundleSolver.hxx:301
int Integer
all integer numbers in calculations and indexing are of this type
Definition: matop.hxx:40
CH_Matrix_Classes::Integer model_aggregate_id
the aggregate id assigned by the BundleModel when this model aggregate was generated ...
Definition: BundleSolver.hxx:204
CH_Matrix_Classes::Real cand_ub
upper bound on the function value in the candidate
Definition: BundleSolver.hxx:193
const CH_Tools::Clock * clockp
pointer to an external clock for timing statistics, not deleted on destruction
Definition: BundleSolver.hxx:127
abstract interface for a QPSolver
Definition: QPSolverObject.hxx:105
CH_Matrix_Classes::Integer center_gid
groundset id for which validity of the center was checked
Definition: BundleSolver.hxx:181
CH_Matrix_Classes::Real aggr_dnormsqr
the squared dual norm of the aggregate (with respect to the quadratic proximal term) ...
Definition: BundleSolver.hxx:232
CH_Tools::Microseconds get_make_aggr_time() const
return time spent in forming the model aggregate
Definition: BundleSolver.hxx:778
CH_Matrix_Classes::Real get_cand_objval() const
returns the upper bound on the objective in cand_y
Definition: BundleSolver.hxx:657
void set_out(std::ostream *o=0, int pril=1)
set output and outputlevel of warnings and errors recursively, see CBout
Definition: BundleSolver.hxx:512
int retcode
value returned by the model&#39;s quadratic bundle subproblem solver
Definition: BundleSolver.hxx:240
virtual CH_Matrix_Classes::Real get_term_corr(void) const
return a correction factor for termination precision if the quadratic term is strong ...
Definition: BundleProxObject.hxx:133
~BundleSolver()
deletes terminator, bundleweight and Hp and, if external_groundset==false, also groundset ...
CH_Matrix_Classes::Real mL
acceptance factor for descent steps (default = 0.1, no need to change this)
Definition: BundleSolver.hxx:138
const MinorantPointer & get_gs_aggregate() const
returns the linear term of the current groundset aggregate linear minorant
Definition: BundleSolver.hxx:685
abstract interface that allows to use different -norms with a positive definite matrix in the proxi...
Definition: BundleProxObject.hxx:88
int apply_modification(const GroundsetModification &gsmdf, const FunObjModMap &funmdfmap)
modify the groundset and the oracle function(s) as described by GroundsetModification and FunObjModMa...
CH_Matrix_Classes::Integer cand_fid
function version id the candidate upper bound cand_ub was computed for
Definition: BundleSolver.hxx:191
int get_do_variable_metric() const
returns true if the proximal term is not of the type BundleIdProx, i.e. if it is not simply the squar...
Definition: BundleSolver.hxx:724
int terminate
value resulting from the last call to BundleTerminator::check_termination() via *terminator ...
Definition: BundleSolver.hxx:242
int solve_model(void)
performs Gauss-Seidel steps for updating model and groundset aggregate by qp subproblems until a give...
Groundset * groundset
pointer to the groundset information, tpyically occupied by basic internal variants that are deleted ...
Definition: BundleSolver.hxx:115
CH_Tools::Microseconds make_aggr_time
time spent in forming the aggregate
Definition: BundleSolver.hxx:261
double Real
all real numbers in calculations are of this type
Definition: matop.hxx:50
CH_Matrix_Classes::Integer cntobjeval
number of calls to the evaluation oracle by the bundle solver (since last clear()) ...
Definition: BundleSolver.hxx:287
virtual const CH_Matrix_Classes::Indexmatrix * get_yfixed() const =0
if not NULL (iff get_use_yfixing()==false) it returns the vector yfixed with yfixed(i)=0 if not fixed...
Header declaring the classes ConicBundle::BundleTerminatorData, ConicBundle::BundleTerminator.
CH_Matrix_Classes::Integer sumaugvalfails
sum over all augvalfails since last clear() or clear_fails()
Definition: BundleSolver.hxx:303
CH_Matrix_Classes::Integer sumqpfails
sum of all qp failures since last clear() or clear_fails()
Definition: BundleSolver.hxx:295
bool use_linval
by default true, it then uses the aggregate linear minorant for the acceptance criterion, if false cutval (the model value) is used instead
Definition: BundleSolver.hxx:142
int do_variable_metric
employ a variable metric heuristic (0 none, 1 diagonal scaling, 2 diagonal scling plus bounds scaling...
Definition: BundleSolver.hxx:153
CH_Matrix_Classes::Integer get_sumqpfails() const
returns the number of fails in qp subproblems since the last clear() or clear_fails() ...
Definition: BundleSolver.hxx:745
Matrix class for integral values of type Integer
Definition: indexmat.hxx:195
bool check_center_validity
default true checks validity of new subgradients against center value, set to false to switch this of...
Definition: BundleSolver.hxx:156
Matrix & init(const Matrix &A, Real d=1., int atrans=0)
initialize to *this=A*d where A may be transposed
Definition: matrix.hxx:1035
CH_Matrix_Classes::Real center_relprec
relativer precision of the upper bound function evaluation in the center
Definition: BundleSolver.hxx:179
CH_Matrix_Classes::Real offset() const
returns the offset of the minorant (including the internal scalings) or CB_minus_infinity if empty ...
CH_Matrix_Classes::Real get_center_gs_val() const
returns the groundset objective in center_y r
Definition: BundleSolver.hxx:650
CH_Matrix_Classes::Integer point_id
increased whenever a candidate point is formed or a center point is modified (-1 if not initialized...
Definition: BundleSolver.hxx:168
CH_Matrix_Classes::Integer get_oraclefails() const
returns the number of fails in oracle evaluations since the last descent step
Definition: BundleSolver.hxx:755
void set_bundleweight(BundleWeight *bw)
replace the previous BundleWeight by bw; bw will be deleted when replaced or on destruction of this ...
CH_Matrix_Classes::Real center_ub
upper bound on the function value in the center
Definition: BundleSolver.hxx:177
CH_Matrix_Classes::Real cutval
value of the cutting model in the current candidate
Definition: BundleSolver.hxx:223
const Groundset * get_groundset() const
return a pointer to the groundset
Definition: BundleSolver.hxx:763
int reeval_augmodel(CH_Matrix_Classes::Real &augval_lb, CH_Matrix_Classes::Integer &center_ub_fid, CH_Matrix_Classes::Real &center_ub, CH_Matrix_Classes::Real relprec, CH_Matrix_Classes::Real center_gs_value, const MinorantPointer &delta_gs_minorant, const CH_Matrix_Classes::Indexmatrix &delta_index)
reevaluate the augmented model for updated groundset aggregate w.r.t. the previously called eval_augm...
int get_use_linval() const
returns true if the aggregate linear minorant is used for the model value
Definition: BundleSolver.hxx:722
CH_Matrix_Classes::Integer get_sumaugvalfails() const
returns the number of failures to increase the augmented model value since the last clear() or clear_...
Definition: BundleSolver.hxx:753
Header declaring the abstract class ConicBundle::QPSolverObject.
void set_terminator(BundleTerminator *bt)
replace the previous BundleTerminator by bt; bt will be deleted when replaced or on destruction of th...
Definition: BundleSolver.hxx:589
CH_Matrix_Classes::Integer descent_steps
number of descent steps since last clear()
Definition: BundleSolver.hxx:310
CH_Tools::Microseconds QPsolve_time
time spent in solving the QP
Definition: BundleSolver.hxx:260
virtual CH_Matrix_Classes::Integer get_dim() const =0
returns the dimension of the ground set, i.e., the length of the variables vector y ...
CH_Matrix_Classes::Integer shallowcut
number of oracle evaluations that yield a subgradient that does not improve the model much in the can...
Definition: BundleSolver.hxx:312
CH_Matrix_Classes::Real modelprec
modelprec=(cutval-linval)/max(center_ub-linval,1e-16);
Definition: BundleSolver.hxx:227
CH_Matrix_Classes::Integer center_fid
function version id the center upper bound center_ub was computed for
Definition: BundleSolver.hxx:175
int solve(int maxsteps=0, bool stop_at_descent_steps=false)
execute at most maxsteps iterations of the bundle method stopping before if termination occurs or sto...
const CH_Matrix_Classes::Matrix & get_center_y() const
returns the current center of stability center_y (after a descent step this is the same as the candid...
Definition: BundleSolver.hxx:653
bool external_groundset
if true the groundset is not deleted on destructoin. The variable is set to true if a groundset is im...
Definition: BundleSolver.hxx:117
BundleSolver(const CBout *cbo=0, int incr=-1)
calls clear()
Matrix class of symmetric matrices with real values of type Real
Definition: symmat.hxx:43
CH_Matrix_Classes::Real center_gs_val
value of the groundset cost function in cand_y for center_gid
Definition: BundleSolver.hxx:183
void set_mN(CH_Matrix_Classes::Real in_mN)
set the acceptance level for null steps (mL<=in_mN<1., rather don&#39;t change this!) ...
Definition: BundleSolver.hxx:604
CH_Matrix_Classes::Integer get_sumrecomp() const
returns the number of oracle reevaluations for the center due to numerical problems since the last cl...
Definition: BundleSolver.hxx:741
const CH_Matrix_Classes::Matrix & get_cand_y() const
returns the most recent candidate cand_y (after a descent step this is the same as the candidate) ...
Definition: BundleSolver.hxx:666
bool null_step
true if the last completed iteration was a null step (if false, descent_step need not be true!...
Definition: BundleSolver.hxx:237
allows measuring time difference to its initialization time in Microseconds
Definition: clock.hxx:282
CH_Matrix_Classes::Integer get_shallowcut() const
returns the number of oracle evaluations that returned an epsilon subgradient that improved the model...
Definition: BundleSolver.hxx:760
CH_Matrix_Classes::Integer modelfails
number of failures in calls to BundleModel::eval_model since last descent/null step ...
Definition: BundleSolver.hxx:297
conic bundle method solver for sum of convex functions. See the ConicBundle_Manual for a quick introd...
Definition: CBSolver.hxx:22
MinorantPointer model_aggregate
the most recent model aggregate linear minorant
Definition: BundleSolver.hxx:202
CH_Tools::Microseconds evalaugmodel_time
total time spent in solving the quadratic bundle subproblem
Definition: BundleSolver.hxx:262
CH_Matrix_Classes::Matrix cand_y
the most recent candidate
Definition: BundleSolver.hxx:189
base class for uniform use of WARNINGS and ERRORS (at some point in time)
Definition: CBout.hxx:30
extra long integer number for expressing and computing time measurements in microseconds.
Definition: clock.hxx:46
std::ostream & print_line_summary(std::ostream &out) const
print a one line summary about the current state of progress of the algorithm to out ...
void set_defaults()
resets all parameters to default values and calls BundleTerminator::set_defaults() for *terminator an...
BundleTerminator * terminator
pointer to the class providing the termination criterion, will be deleted before replacement or on de...
Definition: BundleSolver.hxx:120
CH_Matrix_Classes::Integer get_recomp() const
returns the number of oracle reevaluations for the center due to numerical problems since the last de...
Definition: BundleSolver.hxx:739
CH_Matrix_Classes::Integer cand_gid
groundset id for which validity of the candidate was checked
Definition: BundleSolver.hxx:197
This is the internal bundle solver managing descent/null steps with inner updates for approximating t...
Definition: BundleSolver.hxx:103
CH_Matrix_Classes::Real modeleps
fixed parameter for the precision of the model before attempting a step (default = 0...
Definition: BundleSolver.hxx:144
bool get_descent_step() const
returns true if the latest iteration resulted in a descent step (note, get_descent_step() and get_nul...
Definition: BundleSolver.hxx:702
CH_Matrix_Classes::Integer updatecnt
number of Gauss-Seidel updates since last null or descent step
Definition: BundleSolver.hxx:279
void clear()
resets all variables and pointers to classes to initial state and calls set_defaults() ...
CH_Matrix_Classes::Real get_cand_gs_val() const
returns the groundset objective value in cand_y
Definition: BundleSolver.hxx:663
CH_Matrix_Classes::Real cand_relprec
relativer precision of the upper bound function evaluation in the candidate
Definition: BundleSolver.hxx:195
void get_aggregate(CH_Matrix_Classes::Matrix &aggregate) const
returns the linear term of the current aggregate linear minorant (this should be called before any mo...
Definition: BundleSolver.hxx:676
void set_modeleps(CH_Matrix_Classes::Real in_eps)
set the required model precision by in_eps (if it is positive)
Definition: BundleSolver.hxx:596
void set_use_linval(bool ul)
if set to true, the value of the aggregate in the candidate is used for deciding on null or descent s...
Definition: BundleSolver.hxx:608
CH_Matrix_Classes::Real get_center_ub() const
returns the upper bound on the objective in center_y returned by the oracle
Definition: BundleSolver.hxx:647
void set_cbout(const CBout *cb, int incr)
set output and outputlevel of warnings and errors recursively with CBout
Definition: BundleSolver.hxx:518
void set_do_yfixing(bool dofix)
if set to true, the groundset may use a heuristic to decide whether a variable is fixed to one of its...
Definition: BundleSolver.hxx:612
const CH_Matrix_Classes::Indexmatrix * get_yfixed() const
if the groundset has constraints and set_do_yfixing was set with true enty i of the returned matrix i...
Definition: BundleSolver.hxx:707
CH_Matrix_Classes::Integer center_id
point_id of the center of stability
Definition: BundleSolver.hxx:171
CH_Matrix_Classes::Real get_center_objval() const
returns the upper bound on the objective value in center_y
Definition: BundleSolver.hxx:644
void set_max_updates(CH_Matrix_Classes::Integer mu)
set the maximum number of Gauss-Seidel iterations until the next evaluations for descent/null step...
Definition: BundleSolver.hxx:628
CH_Tools::Microseconds get_QPsolve_time() const
return time spent in solving the quadratic bundle subproblem
Definition: BundleSolver.hxx:776
abstract representation of the feasible convex ground set to be optimized over, provides the QP solve...
Definition: Groundset.hxx:77
int eval_augmodel(CH_Matrix_Classes::Real &augval_lb, CH_Matrix_Classes::Integer &center_ub_fid, CH_Matrix_Classes::Real &center_ub, CH_Matrix_Classes::Real relprec, CH_Matrix_Classes::Real center_gs_value)
Evaluates the augmented model with respect to the center of stability.
CH_Tools::Microseconds get_QPcoeff_time() const
return time spent in computing the cost coefficients of the quadratic bundle subproblem ...
Definition: BundleSolver.hxx:774
CH_Matrix_Classes::Integer get_modelfails() const
returns the number of fails in model evaluatoins since the last null/descent step ...
Definition: BundleSolver.hxx:747
CH_Matrix_Classes::Real weightu
the current weight for the proximal term
Definition: BundleSolver.hxx:230
const MinorantPointer & get_model_aggregate() const
returns the linear term of the latest model aggregate linear minorant
Definition: BundleSolver.hxx:689
virtual void set_out(std::ostream *out=0, int print_level=1)
Specifies the output level (out==NULL: no output at all, out!=NULL and level=0: errors and warnings...
CH_Matrix_Classes::Integer innerit
number of bundle solver iterations (= null steps) since last descent step
Definition: BundleSolver.hxx:283
int get_terminate() const
returns the value of the last call to BundleTerminator::check_termination()
Definition: BundleSolver.hxx:640
CH_Matrix_Classes::Integer cand_id
point_id of the most recent candidate
Definition: BundleSolver.hxx:187
basic class implementing termination criteria for BundleSolver, may also serve as base class for othe...
Definition: BundleTerminator.hxx:77
CH_Matrix_Classes::Real get_weight() const
returns the weight for the proximal term used in the last quadratic subproblem
Definition: BundleSolver.hxx:697
int set_prox_diagonal(const CH_Matrix_Classes::Matrix &insc)
set the prox term to the given diagonal matrix
CH_Matrix_Classes::Real augval_lb
lower bound on value of the last augmented model (lower bound, has to increase throughout) ...
Definition: BundleSolver.hxx:217
CH_Matrix_Classes::Real linval
value of the aggregate linear minorant in the current candidate
Definition: BundleSolver.hxx:221
CH_Matrix_Classes::Integer get_sumoraclefails() const
returns the number of fails in oracle evaluations since the last clear() or clear_fails() ...
Definition: BundleSolver.hxx:757
CH_Matrix_Classes::Real cand_gs_val
value of the groundset cost functon in cand_y for cand_gid
Definition: BundleSolver.hxx:199
void set_clock(const CH_Tools::Clock &myclock)
set the external clock to be used for output
Definition: BundleSolver.hxx:624
CH_Matrix_Classes::Real modelval
if use_linval==true this is linval, otherwise cutval
Definition: BundleSolver.hxx:225
Header declaring the class ConicBundle::BundleWeight.
Matrix class for real values of type Real
Definition: matrix.hxx:74
CH_Matrix_Classes::Integer summodelfails
sum of all model failures since last clear() or clear_fails()
Definition: BundleSolver.hxx:299
std::map< const FunctionObject *, FunctionObjectModification > FunObjModMap
In order to pass on problem modifications, FunObjModMap allows to specify a FunctionObjectModificatio...
Definition: FunctionObjectModification.hxx:104
CH_Tools::Microseconds QPcoeff_time
time spent in computing the QP coefficients
Definition: BundleSolver.hxx:259
virtual const MinorantPointer & get_gs_aggregate() const =0
returns the groundset aggregate computed in candidate()
abstract interface for BundleTerminator providing the data needed for deciding on termination ...
Definition: BundleTerminator.hxx:29
std::ostream * out
not output at all if out==0, otherwise use this output stream
Definition: CBout.hxx:33
CH_Matrix_Classes::Integer max_updates
maximum number of inner Gauss-Seidel steps before attempting a step, use a negative value for no boun...
Definition: BundleSolver.hxx:146
abstract interface for BundleSolver giving access to all objective function specific bundle routines ...
Definition: BundleModel.hxx:140
int variable_metric(const CH_Matrix_Classes::Indexmatrix *new_indices=0)
called if do_variable_metric >0, may change the BundleProxObject and exploit the model_aggregate ...
BundleProxObject * get_prox() const
return a pointer to the quadratic term of the proximal term
Definition: BundleSolver.hxx:767
CH_Matrix_Classes::Integer get_cntobjeval() const
returns the number of calls to the oracle since the last clear()
Definition: BundleSolver.hxx:729
CH_Matrix_Classes::Integer oraclefails
number of failures in calling BundleMethod::eval_function() (the oracle) since last descent step ...
Definition: BundleSolver.hxx:305
CH_Matrix_Classes::Matrix center_y
center of stability
Definition: BundleSolver.hxx:173
BundleWeight * bundleweight
pointer to the class providing the routine for choosing the weight u for the quadratic proximal term...
Definition: BundleSolver.hxx:123
Abstract interface for BundleSolver providing routines that determine the weight of the quadratic ter...
Definition: BundleWeight.hxx:35
CH_Matrix_Classes::Real get_term_corr() const
returns the correction factor used in the termination criterion to compensate the strength of the pro...
Definition: BundleSolver.hxx:699
std::ostream & print_statistics(std::ostream &out) const
output some time statistic paramters
CH_Matrix_Classes::Integer get_summodelfails() const
returns the number of fails in model evaluations since the last clear() or clear_fails() ...
Definition: BundleSolver.hxx:749
CH_Matrix_Classes::Integer suminnerit
sum of all bundle solver iterations since last clear()
Definition: BundleSolver.hxx:285
CH_Matrix_Classes::Integer get_augvalfails() const
returns the number of failures to increase the augmented model value since the last null/descent step...
Definition: BundleSolver.hxx:751
const Minorant * get_minorant() const
returns the Minorant *this points to or 0 if empty
Definition: MinorantPointer.hxx:120
CH_Matrix_Classes::Integer sumoraclefails
sum over all oraclefails since last clear() or clear_fails()
Definition: BundleSolver.hxx:307
bool might_be_modified
set to true if function, groundset, proxima term or the like might have been changed since the last i...
Definition: BundleSolver.hxx:272
bool get_null_step() const
returns true if the latest iteration resulted in a null step (note, get_descent_step() and get_null_s...
Definition: BundleSolver.hxx:704
int get_print_level() const
returns the print_level
Definition: CBout.hxx:93
int set_new_center(const CH_Matrix_Classes::Matrix *yp=0)
replace the current center by *yp or, if yp==0, by the default starting point
int initialize(CH_Matrix_Classes::Integer dim, BundleModel *bp=0)
calls clear(), initializes an unconstrained groundset to this dimension and sets the bundle model to ...
bool use_cand_for_aggregate
set to true if the subgradient in the candidate should be used as first aggregate ...
Definition: BundleSolver.hxx:276
BundleWeight * get_bundleweight() const
return a pointer to the class for updating the weightu of the proximal term
Definition: BundleSolver.hxx:771
CH_Matrix_Classes::Real get_modelval() const
returns the model value in the candidate that was used for deciding on null/descent step ...
Definition: BundleSolver.hxx:693
int set_prox(BundleProxObject *bsp)
set the proximal term by replacing BundleProxObject with bsp, the latter is deleted when replaced or ...
BundleProxObject * Hp
pointer to the quadratic proximal term; will be deleted before replacement or on destruction ...
Definition: BundleSolver.hxx:149
CH_Matrix_Classes::Integer get_qpfails() const
returns the number of fails in qp subproblems since the last null/descent step
Definition: BundleSolver.hxx:743
virtual CH_Matrix_Classes::Real get_weightu() const =0
return the current weight incorporated in the quadratic term
CH_Matrix_Classes::Real get_aggregate_offset() const
returns the offset of the current aggregate linear minorant (should be called before any modification...
Definition: BundleSolver.hxx:673
CH_Tools::Microseconds get_evalaugmodel_time() const
return time spent in total for the quadratic bundle subproblem
Definition: BundleSolver.hxx:780
int set_model(BundleModel *bp)
set/change the model that should be optimized over (for the existing groundset and starting point) ...
CH_Matrix_Classes::Real augval_ub
upper bound on value of the last augmented model (lower bound, has to increase throughout) ...
Definition: BundleSolver.hxx:219
int apply_modification(const GroundsetModification &gsmdf)
modify the groundset as described by GroundsetModification and inform the oracle function(s) about th...
Definition: BundleSolver.hxx:573
CH_Matrix_Classes::Integer qpfails
number of failures in calling a qp-subproblem since last descent/null step
Definition: BundleSolver.hxx:293
Collects modifications for the unconstrained Groundset for appending, deleting or reassigning variabl...
Definition: GroundsetModification.hxx:32
std::ostream * get_out_ptr() const
returns the pointer to the output stream
Definition: CBout.hxx:88
virtual void set_use_yfixing(bool uyf)=0
set to true to switch on the cooridinate fixing heuristic (only constrained cases) ...
bool descent_step
true if the last completed iteration was a descent step (if false, null_step need not be true!...
Definition: BundleSolver.hxx:235
CH_Matrix_Classes::Real mN
nullstep factor for inexact evaluation >= mL (default = 0.15, no need to change this) ...
Definition: BundleSolver.hxx:140
CH_Matrix_Classes::Integer get_descent_steps() const
returns the number of descent steps since the last clear()
Definition: BundleSolver.hxx:731
Header declaring and (inline) implementing the classes CH_Tools::Microseconds and CH_Tools::Clock as ...
int qp_mfile_data(const CH_Matrix_Classes::Matrix &center_y, const BundleProxObject *Hp, const MinorantPointer &gs_subg, const CH_Matrix_Classes::Symmatrix &Q, const CH_Matrix_Classes::Matrix &c, CH_Matrix_Classes::Real offset, const CH_Matrix_Classes::Indexmatrix &yfixed) const
output the data of the Gauss-Seidel qp to in an m file format
CH_Matrix_Classes::Integer sumupdatecnt
sum over all Gauss-Seidel updates since last clear()
Definition: BundleSolver.hxx:281
bool employ_variable_metric() const
returns true if some dynamic scaling is supported and switched on
Definition: VariableMetric.hxx:358
bool initialize_model
set to true if the aggregate might have changed and a first aggregate and a lower bound for augval ha...
Definition: BundleSolver.hxx:274
CH_Matrix_Classes::Real get_cand_ub() const
returns the upper bound on the objective in cand_y returned by the oracle
Definition: BundleSolver.hxx:660
int set_variable_metric(int ds)
0 ... use no scaling, 1 ... use a scaling heuristic, 2 ... also allow groundset to influence the scal...
BundleModel * model
The pointer to the cutting model of the function to be optimized; the model is always external and wi...
Definition: BundleSolver.hxx:112
BundleTerminator * get_terminator() const
return a pointer to the termination criterion
Definition: BundleSolver.hxx:769
points to MinorantUseData that may be shared by many and allows computations with Minorants ...
Definition: MinorantPointer.hxx:34
Header declaring the class ConicBundle::BundleModel.
QPSolverObject * qp_solver
pointer to the qp_solver provided and owned by groundset,
Definition: BundleSolver.hxx:254
const BundleModel * get_model() const
return a pointer to the cutting model
Definition: BundleSolver.hxx:765
CH_Matrix_Classes::Integer get_suminnerit() const
returns the number of bundle method itrations since the last clear()
Definition: BundleSolver.hxx:735
CH_Matrix_Classes::Integer sumrecomp
sum of all recomputatoins since last clear() or clear_fails()
Definition: BundleSolver.hxx:291
void set_mL(CH_Matrix_Classes::Real in_mL)
set the acceptance level for descent steps (rather don&#39;t change this!)
Definition: BundleSolver.hxx:600
CH_Matrix_Classes::Integer get_innerit() const
returns the number of bundle method iterations since the last descent step
Definition: BundleSolver.hxx:733
CH_Matrix_Classes::Integer recomp
number of recomputations of the value in the center (due to errors or numerical problems, since last descent step)
Definition: BundleSolver.hxx:289
bool get_use_variable_metric() const
returns the value of the variable do_dynamic_scaling, see there
Definition: BundleSolver.hxx:726
CH_Matrix_Classes::Integer get_sumupdatecnt() const
returns the number of model qp subproblems since the last clear()
Definition: BundleSolver.hxx:737
bool qp_solves_model_without_gs
if true the qp_solver does not include the groundset constraints and they have to be take care of in ...
Definition: BundleSolver.hxx:257
CH_Matrix_Classes::Real get_modeleps() const
returns the model precision modeleps
Definition: BundleSolver.hxx:720
CH_Matrix_Classes::Real get_aggr_dnormsqr() const
returns the dual norm squared of the current aggregate (dual w.r.t. the quadratic proximal term) ...
Definition: BundleSolver.hxx:670
Header declaring the class ConicBundle::Groundset.