ConicBundle
PSCOracle.hxx
Go to the documentation of this file.
1 
2 
3 #ifndef CONICBUNDLE_PSCORACLE_HXX
4 #define CONICBUNDLE_PSCORACLE_HXX
5 
13 //------------------------------------------------------------
14 
15 #include "MatrixCBSolver.hxx"
16 
17 //------------------------------------------------------------
18 
19 
20 namespace CH_Matrix_Classes {
21  class Indexmatrix;
22  class Matrix;
23 }
24 
25 
26 namespace ConicBundle {
27 
175 
176 
188  {
189  public:
191  virtual ~PSCPrimalExtender(){};
192 
194  virtual int extend(PrimalData&)=0;
195 
197  virtual int extend_Ritz(CH_Matrix_Classes::Matrix& /* Ritzvecs */ )=0;
198  };
199 
200 
234  {
235  public:
236 
242  virtual Minorant* generate_minorant(const CH_Matrix_Classes::Matrix& P)=0;
243 
251  virtual int svec_projection(
252  CH_Matrix_Classes::Matrix& svec_offset,
253  CH_Matrix_Classes::Matrix& svec_coeffs,
254  const CH_Matrix_Classes::Matrix& P,
255  const CH_Matrix_Classes::Indexmatrix* index_subset=0) =0;
256 
259  virtual
260  int
261  evaluate
262  (
264  const CH_Matrix_Classes::Matrix& current_point,
269  const CH_Matrix_Classes::Matrix& bundlevecs,
272  const double relprec,
278  const double Ritz_bound,
289  CH_Matrix_Classes::Matrix& Ritz_vectors,
291  CH_Matrix_Classes::Matrix& Ritz_values,
302  PSCPrimalExtender*& primal_extender
303  )
304  = 0;
305 
308  virtual
309  int
310  evaluate_projection
311  (
313  const CH_Matrix_Classes::Matrix& current_point,
315  const CH_Matrix_Classes::Matrix& P,
317  const double relprec,
321  CH_Matrix_Classes::Matrix& projected_Ritz_vectors,
323  CH_Matrix_Classes::Matrix& projected_Ritz_values
324  )
325  = 0;
326 
327 
328 
332  virtual
333  int
334  left_right_product
335  (
337  int i,
339  const CH_Matrix_Classes::Matrix& P,
341  const CH_Matrix_Classes::Matrix& Q,
344  )
345  = 0;
346 
382  virtual
383  int
384  apply_modification
385  (
386  const OracleModification& /* oracle_modification */,
387  const CH_Matrix_Classes::Matrix* /* new_center */,
388  const CH_Matrix_Classes::Matrix* /* old_center */,
389  bool& /* discard_objective_in_center */,
390  bool& /* discard_model */,
391  bool& /* discard_aggregates */,
392  MinorantExtender*& /* minorant_extender */
393  )
394  {return 1;}
395 
396 
397 
399  virtual
400  bool
402  {return true;}
403 
404 
405  };
406 
407 
408 
422  class PSCBundleParameters: virtual public BundleParameters
423  {
424  public:
425 
431 
436 
438 
440 
444  int psc_keep;
445 
448 
451 
454 
456  virtual int init(const BundleParameters& bp);
457 
460  BundleParameters(),psc_model_size(3),psc_bundle_size(100),
461  psc_new_subgradients(5),psc_keep(3),
462  psc_aggregates(1),psc_tolerance(1e-6),psc_update_rule(0)
463  {}
464 
467  BundleParameters(),psc_model_size(3),psc_bundle_size(100),
468  psc_new_subgradients(5),psc_keep(3),
469  psc_aggregates(1),psc_tolerance(1e-6),psc_update_rule(0)
470  {init(bp);}
471 
474 
475  };
476 
478 
479 }
480 #endif
481 
Base class for informing oracles (or the solver) about dynamic changes in the number and sorting of t...
Definition: CBSolver.hxx:544
double psc_tolerance
Definition: PSCOracle.hxx:450
Interface for extending a Minorant, e.g., in Lagrangian Relaxation of cutting plane approaches...
Definition: CBSolver.hxx:490
Matrix class for integral values of type Integer
Definition: indexmat.hxx:195
PSCBundleParameters()
default constructor
Definition: PSCOracle.hxx:459
int psc_keep
Definition: PSCOracle.hxx:444
this is used to describe affine minorants of convex functions that will be used for generating cuttin...
Definition: CBSolver.hxx:274
virtual bool check_correctness() const
switch on/off some correctnes checks on the oracle
Definition: PSCOracle.hxx:401
conic bundle method solver for sum of convex functions. See the ConicBundle_Manual for a quick introd...
Definition: CBSolver.hxx:22
Oracle interface for minimization of the maximum eigenvalue of an affine matrix function or...
Definition: PSCOracle.hxx:233
Serves for specifying parameters regarding the construction of cutting models.
Definition: CBSolver.hxx:891
int psc_update_rule
selection parameter in case several update rules are available for the semidefinite model ...
Definition: PSCOracle.hxx:453
Matrix Classes and Linear Algebra. See Matrix Classes (namespace CH_Matrix_Classes) for a quick intro...
Definition: PSCOracle.hxx:20
Interface for extending PrimalData, e.g., in Lagrangian relaxation of column generation approaches...
Definition: PSCOracle.hxx:187
int psc_bundle_size
Definition: PSCOracle.hxx:435
int psc_model_size
Definition: PSCOracle.hxx:430
ModifiableOracle provides all oracles with a uniform interface for a modification routine and an on/o...
Definition: MatrixCBSolver.hxx:309
Matrix class for real values of type Real
Definition: matrix.hxx:74
int psc_new_subgradients
gives an upper bound on the number of new Ritz-vectors added in each bundle update ...
Definition: PSCOracle.hxx:439
Header declaring the classes ConicBundle::MatrixCBSolver, ConicBundle::MatrixFunctionOracle, ConicBundle::PrimalMatrix, ConicBundle::MatrixMinorant, ConicBundle::ModifiableOracleObject.
Bundle parameters for PSCModel, we recommend no to modify them.
Definition: PSCOracle.hxx:422
PSCBundleParameters(const BundleParameters &bp)
"copy" constructor
Definition: PSCOracle.hxx:466
In Lagrangean relaxation an approximate primal solution can be generated by supplying primal informat...
Definition: CBSolver.hxx:151
Interface for extending PrimalData, e.g., in Lagrangian relaxation of column generation approaches...
Definition: CBSolver.hxx:180
int psc_aggregates
maximum number of aggregate matrices allowed (currently the choice is at most one) ...
Definition: PSCOracle.hxx:447