ConicBundle
BundleHKWeight.hxx
1 
2 
3 #ifndef CONICBUNDLE_BUNDLEHKWEIGHT_HXX
4 #define CONICBUNDLE_BUNDLEHKWEIGHT_HXX
5 
6 #include "BundleWeight.hxx"
7 
8 namespace ConicBundle {
9 
14 
15 
22 {
31 
35 
38 
40 
41 public:
43  BundleHKWeight(CH_Matrix_Classes::Real mRin=.5,BundleWeight* bwp=0,const CBout* cbo=0,int incr=-1);
45  ~BundleHKWeight(){}
46 
47 
49  virtual void set_defaults();
50 
52  virtual void set_nullstep_updates(int nu=0)
53  {nullstep_updates=nu;}
54 
56  virtual void clear();
57 
59  int init(CH_Matrix_Classes::Real aggr_dnmormsqr,Groundset* groundset,BundleModel* model);
60 
63  { if (u<=0.) return;
64  weight=CH_Matrix_Classes::max(u,1e-10); weightchanged=true;next_weight_set=true;
65  modelmax=CB_minus_infinity;iweight=0;}
66 
69  {
70  minweight=mw;
71  if (minweight>0){
72  if ((weight>0)&&(weight<minweight))
73  weight=minweight;
74  if ((maxweight>0)&&(maxweight<minweight))
75  maxweight=minweight;
76  }
77  }
78 
80  bool get_next_weight_set() const {return next_weight_set;}
81 
84 
87  {
88  maxweight=mw;
89  if (maxweight>0){
90  if (weight>maxweight){
91  weight=maxweight;
92  }
93  if ((minweight>0)&&(minweight>maxweight))
94  minweight=maxweight;
95  }
96  }
97 
100 
103 
105  bool weight_changed() const;
106 
110  CH_Matrix_Classes::Real modelval,
111  const CH_Matrix_Classes::Matrix& y,
112  const CH_Matrix_Classes::Matrix& newy,
113  CH_Matrix_Classes::Real normsubg2,
114  BundleProxObject* Hp);
115 
119  CH_Matrix_Classes::Real modelval,
120  const CH_Matrix_Classes::Matrix& y,
121  const CH_Matrix_Classes::Matrix& newy,
122  MinorantPointer& new_minorant,
123  MinorantPointer& aggregate,
124  CH_Matrix_Classes::Real nullstep_bound,
125  CH_Matrix_Classes::Real normsubg2,
126  BundleProxObject* Hp);
127 
129  virtual int apply_modification(const GroundsetModification& gsmdf);
130 
131 };
132 
133 }
134 
135 #endif
136 
int Integer
all integer numbers in calculations and indexing are of this type
Definition: matop.hxx:40
abstract interface that allows to use different -norms with a positive definite matrix in the proxi...
Definition: BundleProxObject.hxx:88
int nullstep_update(CH_Matrix_Classes::Real newval, CH_Matrix_Classes::Real oldval, CH_Matrix_Classes::Real modelval, const CH_Matrix_Classes::Matrix &y, const CH_Matrix_Classes::Matrix &newy, MinorantPointer &new_minorant, MinorantPointer &aggregate, CH_Matrix_Classes::Real nullstep_bound, CH_Matrix_Classes::Real normsubg2, BundleProxObject *Hp)
determine next weight after a null step
virtual void clear()
reset all adaptive variables and parameters
double Real
all real numbers in calculations are of this type
Definition: matop.hxx:50
int init(CH_Matrix_Classes::Real aggr_dnmormsqr, Groundset *groundset, BundleModel *model)
compute first weight and set some parameters
CH_Matrix_Classes::Real get_weight() const
returns current value of the weight
bool get_next_weight_set() const
true if the next weight was prespecified externally
Definition: BundleHKWeight.hxx:80
virtual int apply_modification(const GroundsetModification &gsmdf)
reinitialize after modifications
virtual void set_nullstep_updates(int nu=0)
set nullstep update strategy (0 ... original, 1 ... none, 2 ... enlarge if subsequence of three norm ...
Definition: BundleHKWeight.hxx:52
CH_Matrix_Classes::Real weight
the current weight
Definition: BundleHKWeight.hxx:26
void set_minweight(CH_Matrix_Classes::Real mw)
<=0 means no bound
Definition: BundleHKWeight.hxx:68
CH_Matrix_Classes::Real mR
parameter for reduction criterion in descent steps
Definition: BundleHKWeight.hxx:39
Routine for selecting the weight of the quadratic/proximal term withing BundleSolver implementing Bun...
Definition: BundleHKWeight.hxx:21
int nullstep_updates
true is weight may be changed after null steps [default: true]
Definition: BundleHKWeight.hxx:34
conic bundle method solver for sum of convex functions. See the ConicBundle_Manual for a quick introd...
Definition: CBSolver.hxx:22
base class for uniform use of WARNINGS and ERRORS (at some point in time)
Definition: CBout.hxx:30
bool next_weight_set
true if set_nextweight was just called, reset at *_update
Definition: BundleHKWeight.hxx:33
int descent_update(CH_Matrix_Classes::Real newval, CH_Matrix_Classes::Real oldval, CH_Matrix_Classes::Real modelval, const CH_Matrix_Classes::Matrix &y, const CH_Matrix_Classes::Matrix &newy, CH_Matrix_Classes::Real normsubg2, BundleProxObject *Hp)
determine next weight after a descent step
bool weight_changed() const
returns true if last call of *_update modified current value of tau, else 0
virtual void set_maxweight(CH_Matrix_Classes::Real mw)
<=0 means no bound
Definition: BundleHKWeight.hxx:86
bool weightchanged
true if last choose_* call modified the weight
Definition: BundleHKWeight.hxx:32
virtual void set_defaults()
set default values for &#39;constant&#39; parameters, e.g. minweight and maxweight
abstract representation of the feasible convex ground set to be optimized over, provides the QP solve...
Definition: Groundset.hxx:77
Groundset * groundset
the groundset, may not be zero in init and *_update
Definition: BundleHKWeight.hxx:23
CH_Matrix_Classes::Matrix valuelevels
for judging null step progress
Definition: BundleHKWeight.hxx:36
CH_Matrix_Classes::Real modelmax
largest model value encountered
Definition: BundleHKWeight.hxx:30
BundleModel * model
may be zero at any time
Definition: BundleHKWeight.hxx:24
void set_next_weight(CH_Matrix_Classes::Real u)
<=0 leaves everything unchanged and does nothing
Definition: BundleHKWeight.hxx:62
const double CB_minus_infinity
serves as the value "plus infinity", i.e., all bounds >= this value are set to this value and are reg...
Header declaring the class ConicBundle::BundleWeight.
Matrix class for real values of type Real
Definition: matrix.hxx:74
CH_Matrix_Classes::Matrix ratiolevels
for judging null step progress
Definition: BundleHKWeight.hxx:37
abstract interface for BundleSolver giving access to all objective function specific bundle routines ...
Definition: BundleModel.hxx:140
BundleHKWeight(CH_Matrix_Classes::Real mRin=.5, BundleWeight *bwp=0, const CBout *cbo=0, int incr=-1)
the parameter mRin gets the value for accepting descent steps, bwp may be used to communicate the pre...
CH_Matrix_Classes::Real get_maxweight() const
Returns the current value of the maxweight.
Definition: BundleHKWeight.hxx:99
CH_Matrix_Classes::Real get_minweight() const
Returns the current value of the minweight.
Definition: BundleHKWeight.hxx:83
Abstract interface for BundleSolver providing routines that determine the weight of the quadratic ter...
Definition: BundleWeight.hxx:35
CH_Matrix_Classes::Integer iweight
counting the iterations since last change
Definition: BundleHKWeight.hxx:25
double max(double a, double b)
maximum value of two double variables
Definition: mymath.hxx:43
Collects modifications for the unconstrained Groundset for appending, deleting or reassigning variabl...
Definition: GroundsetModification.hxx:32
CH_Matrix_Classes::Real minweight
lower bound on the weight
Definition: BundleHKWeight.hxx:28
CH_Matrix_Classes::Real maxweight
upper bound on the weight
Definition: BundleHKWeight.hxx:29
points to MinorantUseData that may be shared by many and allows computations with Minorants ...
Definition: MinorantPointer.hxx:34
CH_Matrix_Classes::Real epsweight
value for guessing the function variation
Definition: BundleHKWeight.hxx:27