ConicBundle
BundleData.hxx
Go to the documentation of this file.
1 
2 
3 #ifndef CONICBUNDLE_BUNDLEDATA_HXX
4 #define CONICBUNDLE_BUNDLEDATA_HXX
5 
6 
15 #include "SumBundle.hxx"
16 
17 namespace ConicBundle {
18 
23 
24 
77  class BundleData: public VariableMetricBundleData, public virtual CBout
78 {
79  private:
80 
81  friend class SumBlockModel;
82  friend class ConeModel;
83  friend class SumModel;
84  friend class AFTModel;
85  friend class AFTData;
86 
87  //===== variables =====
92 
97 
100 
103 
106 
110 
112 
114  virtual int store_old_minorant(MinorantPointer& minorant);
115 
117 
118 protected:
119 
124 
125 
127 
128 
131  {return function_task;}
132 
135  {return function_factor;}
136 
139  {return center_ub_mid;}
140 
143  {return aggregate;}
144 
147  {return aggregate_id;}
148 
151  {return sumbundle;}
152 
155  {return old_minorants;}
156 
159  {return prex_id;}
160 
161 
162 
163 public:
164 
165  //===== methods =====
167  BundleData();
168 
170  virtual ~BundleData();
171 
173  virtual void clear(CH_Matrix_Classes::Integer start_modification_id=0);
174 
176  virtual int init(const BundleData* bd);
177 
179  BundleData* clone() const;
180 
183  {return dim;}
184 
187  {return function_task;}
188 
191  {return function_factor;}
192 
195  {return modification_id;}
196 
199  {return center_ub_mid;}
200 
203  {return center_ub;}
204 
207  {return center_id;}
208 
211  {return cand_ub_mid;}
212 
215  {return cand_ub;}
216 
219  {return cand_id;}
220 
223  {return old_minorants;}
224 
226  virtual int do_step(CH_Matrix_Classes::Integer point_id);
227 
229  virtual int synchronize_ids(CH_Matrix_Classes::Integer& new_center_ub_fid,
230  CH_Matrix_Classes::Integer new_center_id,
231  CH_Matrix_Classes::Integer old_center_id,
232  CH_Matrix_Classes::Integer& new_cand_ub_fid,
233  CH_Matrix_Classes::Integer new_cand_id,
234  CH_Matrix_Classes::Integer old_cand_id,
235  CH_Matrix_Classes::Integer& new_aggregate_id,
236  CH_Matrix_Classes::Integer new_prex_id=0);
237 
239  virtual bool center_modified(CH_Matrix_Classes::Integer& center_ub_fid,
240  CH_Matrix_Classes::Integer check_center_id);
241 
243  virtual bool model_aggregate_modified(CH_Matrix_Classes::Integer model_aggregate_id);
244 
246  virtual void clear_model(bool discard_minorants_only=false);
247 
249  virtual void clear_aggregates();
250 
252  virtual int call_primal_extender(PrimalExtender&,bool include_candidates=true);
253 
256 
258  virtual const PrimalData* get_approximate_primal() const {return 0;}
259 
261  virtual const PrimalData* get_center_primal() const {return 0;}
262 
264  virtual const PrimalData* get_candidate_primal() const {return 0;}
265 
267  virtual const SumBundle& get_sumbundle() const {return sumbundle;}
268 
270  virtual bool get_local_model_active() const {return local_model_active;}
271 
274 
276  virtual int get_latest_minorants(MinorantBundle& latest_minorants,
277  CH_Matrix_Classes::Integer max_number);
278 
280  virtual int get_model_data(MinorantBundle& model_minorants,
281  CH_Matrix_Classes::Matrix& model_coeff) const;
282 
284  virtual const MinorantPointer& get_aggregate() const
285  {return aggregate;}
286 
287 
288 };
289 
290 
292 
293 }
294 
295 #endif
296 
int Integer
all integer numbers in calculations and indexing are of this type
Definition: matop.hxx:40
virtual const PrimalData * get_candidate_primal() const
return the PrimalData delivered by the last call of FunctionOracle::evaluate()
Definition: BundleData.hxx:264
class for use with SumBlockModel and BundlData for storing and managing a common bundle describing (p...
Definition: SumBundle.hxx:190
virtual int init(const BundleData *bd)
initialize from other BundleData
CH_Matrix_Classes::Integer cand_ub_mid
modification id for which cand_ub was computed, <0 if not initialized
Definition: BundleData.hxx:120
BundleData()
calls clear()
virtual int do_step(CH_Matrix_Classes::Integer point_id)
if the candidate information is available and consitent for point_id, copy it from cand to center and...
abstract interface extending BundleModel so that any such model can be used alone or within SumModel ...
Definition: SumBlockModel.hxx:102
virtual CH_Matrix_Classes::Integer get_cand_modification_id() const
the value is negative if not initialized and otherwise gives the number of modifications applied to t...
Definition: BundleData.hxx:210
double Real
all real numbers in calculations are of this type
Definition: matop.hxx:50
CH_Matrix_Classes::Integer dim
the incoming dimension, once it is detected, -1 if not yet clear (some need it, but it is mainly for ...
Definition: BundleData.hxx:88
virtual const PrimalData * get_approximate_primal() const
return the PrimalData corresponding to the aggregate
Definition: BundleData.hxx:258
MinorantPointer aggregate
the aggregate linear minorant of the entire model (including function_factor and function_task) ...
Definition: BundleData.hxx:99
virtual const MinorantPointer & get_aggregate() const
the aggregate minorant as currently in use in the bundle method; it already includes the function_fac...
Definition: BundleData.hxx:284
Interface for extending a Minorant, e.g., in Lagrangian Relaxation of cutting plane approaches...
Definition: CBSolver.hxx:490
virtual CH_Matrix_Classes::Real get_center_ub() const
the value of the upper bound stored for center (without function_factor) if its modification id is up...
Definition: BundleData.hxx:202
CH_Matrix_Classes::Integer prex_id
counter for keeping track of PriamlExtender calls
Definition: BundleData.hxx:116
CH_Matrix_Classes::Integer center_id
point id of the stored center
Definition: BundleData.hxx:96
CH_Matrix_Classes::Integer aggregate_id
if available and ids match, the aggregate need not be recomputed
Definition: BundleData.hxx:98
CH_Matrix_Classes::Integer max_old_minorants
==0 by default, otherwise it gives the maximum number of the most recent candidate minorants to be st...
Definition: BundleData.hxx:107
virtual int apply_modification(const GroundsetModification &, MinorantExtender *mex)
rearrange/extend the minorants according to the given groundset modifications
const MinorantBundle & get_old_minorants() const
returns the bundle collected in store_old_minorants()
Definition: BundleData.hxx:222
virtual MinorantBundle & set_old_minorants()
return old_minorants
Definition: BundleData.hxx:154
MinorantBundle old_minorants
minorants collected e.g. for variable metric, holds the at most max_old_minorants most recent candida...
Definition: BundleData.hxx:108
virtual CH_Matrix_Classes::Integer get_center_id() const
the point id for which center was computed if its modification id is up to date
Definition: BundleData.hxx:206
virtual SumBundle & set_sumbundle()
return the sumbundle
Definition: BundleData.hxx:150
CH_Matrix_Classes::Integer center_ub_mid
modification id for which center_ub was computed, <0 if not initialized
Definition: BundleData.hxx:93
virtual bool get_local_model_active() const
return the sumbundle
Definition: BundleData.hxx:270
virtual MinorantPointer & set_aggregate()
the aggregate minorant as currently in use in the bundle method; it already includes the function_fac...
Definition: BundleData.hxx:142
virtual void clear_aggregates()
delete all kinds of aggregates but keep explicit parts of the cutting model
conic bundle method solver for sum of convex functions. See the ConicBundle_Manual for a quick introd...
Definition: CBSolver.hxx:22
virtual FunctionTask & set_function_task()
the purpose or mode the function is used in, see FunctionTask
Definition: BundleData.hxx:130
virtual CH_Matrix_Classes::Integer get_modification_id() const
the value is negative if not initialized and otherwise gives the number of modifications applied to t...
Definition: BundleData.hxx:194
gives a SumBlockModel interface to a sum of (possibly AffineFunctionTransformation transformed) SumBl...
Definition: SumModel.hxx:58
base class for uniform use of WARNINGS and ERRORS (at some point in time)
Definition: CBout.hxx:30
virtual int get_model_data(MinorantBundle &model_minorants, CH_Matrix_Classes::Matrix &model_coeff) const
the minorants currently used in the model; the list may be empty or max contain other minorants than ...
virtual int synchronize_ids(CH_Matrix_Classes::Integer &new_center_ub_fid, CH_Matrix_Classes::Integer new_center_id, CH_Matrix_Classes::Integer old_center_id, CH_Matrix_Classes::Integer &new_cand_ub_fid, CH_Matrix_Classes::Integer new_cand_id, CH_Matrix_Classes::Integer old_cand_id, CH_Matrix_Classes::Integer &new_aggregate_id, CH_Matrix_Classes::Integer new_prex_id=0)
synchronize ids in any case by discarding inconsistent parts but return number of errors ...
virtual void clear(CH_Matrix_Classes::Integer start_modification_id=0)
reset to initial state (also used by the default constructor)
virtual bool model_aggregate_modified(CH_Matrix_Classes::Integer model_aggregate_id)
check whether aggregate is available and has the same id
virtual bool center_modified(CH_Matrix_Classes::Integer &center_ub_fid, CH_Matrix_Classes::Integer check_center_id)
check whether center computation is still valid for this point and modification id ...
mimicks the model of a function with an AffineFunctionTransformation (AFT) applied to it...
Definition: AFTModel.hxx:50
virtual CH_Matrix_Classes::Integer get_cand_id() const
the point id for which cand was computed if its modification id is up to date
Definition: BundleData.hxx:218
virtual int call_primal_extender(PrimalExtender &, bool include_candidates=true)
see the last argument of FunctionOracle::evaluate()
CH_Matrix_Classes::Real center_ub
upper bound on function value for modification id center_mid and center with point id center_id (does...
Definition: BundleData.hxx:94
virtual int store_old_minorant(MinorantPointer &minorant)
if max_old_minorants > 0, it adds the minorant cyclically to old_minorants keeping max_old_minorants ...
FunctionTask function_task
see FunctionTask
Definition: BundleData.hxx:89
CH_Matrix_Classes::Real model_curvature
this value >= 0 gives an estimate of the "model curvature" in cand_y (may be zero) ...
Definition: BundleData.hxx:111
CH_Matrix_Classes::Real function_factor
>0, interpreted according to function_task
Definition: BundleData.hxx:90
MinorantPointer local_aggregate
the local (possibly empty) aggregate linear minorant of the model handled by this and its descendants...
Definition: BundleData.hxx:126
CH_Matrix_Classes::Real cand_ub
upper bound on function value for modification id cand_mid and candidate with point id cand_id (does ...
Definition: BundleData.hxx:121
Header declaring the class ConicBundle::SumBundle (see ConicBundle::SumBlockModel) ...
virtual CH_Matrix_Classes::Integer get_dim() const
returns the observed dimension; intially this is negative until the first point is worked on ...
Definition: BundleData.hxx:182
Matrix class for real values of type Real
Definition: matrix.hxx:74
virtual CH_Matrix_Classes::Integer & set_aggregate_id()
the identification number of the aggregate minorant
Definition: BundleData.hxx:146
FunctionTask
Each function represented by a FunctionModel is equipped with a function_factor (it defaults to 1...
Definition: CBSolver.hxx:221
virtual CH_Matrix_Classes::Real get_model_curvature() const
return a rough curvature estimate to judge the relevance of providing a good model for this oracle ...
Definition: BundleData.hxx:273
bool local_model_active
true if the local model is initialized and contributes to the model (maybe in addition to the sumbund...
Definition: BundleData.hxx:102
virtual FunctionTask get_function_task() const
the purpose or mode the function is used in, see FunctionTask
Definition: BundleData.hxx:186
std::vector< MinorantPointer > MinorantBundle
a bundle is a vector with MinorantPointer entries
Definition: MinorantPointer.hxx:24
SumBundle sumbundle
for switching/splitting between a local model and a common SumModel this stores the (potential) contr...
Definition: BundleData.hxx:105
virtual CH_Matrix_Classes::Integer & set_center_ub_mid()
the modification_id when center was computed; -1 indicates not initialized
Definition: BundleData.hxx:138
CH_Matrix_Classes::Real center_relprec
relative precision used in computing center_ub
Definition: BundleData.hxx:95
CH_Matrix_Classes::Integer cand_id
point id of the stored candidate
Definition: BundleData.hxx:123
BundleData * clone() const
return a pointer to a clone of this
provides a general abstract base class for conic cutting models with SumBundle capabilities (as a der...
Definition: ConeModel.hxx:52
CH_Matrix_Classes::Integer minorant_nexti
points to next position for storing in old_minorants (in a cyclic fashion)
Definition: BundleData.hxx:109
In Lagrangean relaxation an approximate primal solution can be generated by supplying primal informat...
Definition: CBSolver.hxx:151
Collects modifications for the unconstrained Groundset for appending, deleting or reassigning variabl...
Definition: GroundsetModification.hxx:32
virtual void clear_model(bool discard_minorants_only=false)
clear the cutting model and all function evaluations; for special cutting models of support functions...
Interface for extending PrimalData, e.g., in Lagrangian relaxation of column generation approaches...
Definition: CBSolver.hxx:180
virtual const PrimalData * get_center_primal() const
return the PrimalData corresponding to the aggregate
Definition: BundleData.hxx:261
CH_Matrix_Classes::Integer modification_id
increased on any modification applied to the function or function_factor
Definition: BundleData.hxx:91
CH_Matrix_Classes::Real cand_relprec
relative precision used in computing cand_ub
Definition: BundleData.hxx:122
virtual const SumBundle & get_sumbundle() const
return the sumbundle
Definition: BundleData.hxx:267
base class for use with SumBlockModel for storing and managing essential data of evaluations and the ...
Definition: BundleData.hxx:77
virtual CH_Matrix_Classes::Real get_function_factor() const
the factor by which the minorants (except for the aggregate) need to be multiplied in order to match ...
Definition: BundleData.hxx:190
virtual int get_latest_minorants(MinorantBundle &latest_minorants, CH_Matrix_Classes::Integer max_number)
the latest minorants available; the number may fall below or exceed the one requested in request_n_la...
specialized BundleData class for use with AFTModel for storing and managing essential data of evaluat...
Definition: AFTData.hxx:58
virtual CH_Matrix_Classes::Integer get_center_modification_id() const
the value is negative if not initialized and otherwise gives the number of modifications applied to t...
Definition: BundleData.hxx:198
points to MinorantUseData that may be shared by many and allows computations with Minorants ...
Definition: MinorantPointer.hxx:34
virtual CH_Matrix_Classes::Real get_cand_ub() const
the value of the upper bound stored for the candidate (without function_factor) if its modification i...
Definition: BundleData.hxx:214
virtual CH_Matrix_Classes::Integer get_prex_id() const
for keeping track of changes by primal extenders
Definition: BundleData.hxx:158
abstract interface providing the bundle data that is typically needed in VariableMetricSelection clas...
Definition: VariableMetric.hxx:183
virtual CH_Matrix_Classes::Real & set_function_factor()
the factor by which the minorants (except for the aggregate) need to be multiplied in order to match ...
Definition: BundleData.hxx:134