3 #ifndef CONICBUNDLE_INTERIORPOINTBUNDLEBLOCK_HXX 4 #define CONICBUNDLE_INTERIORPOINTBUNDLEBLOCK_HXX int Integer
all integer numbers in calculations and indexing are of this type
Definition: matop.hxx:40
virtual CH_Matrix_Classes::Matrix & times_B(const CH_Matrix_Classes::Matrix &A, CH_Matrix_Classes::Matrix &C, CH_Matrix_Classes::Real alpha, CH_Matrix_Classes::Real beta, int Atrans, int Btrans, CH_Matrix_Classes::Integer startindex_model, MinorantBundle &globalbundle, CH_Matrix_Classes::Integer startindex_bundle)=0
C=beta*C+alpha*A*B where A and B may be transposed; carry out the model part of this beginning at sta...
virtual int add_trace(CH_Matrix_Classes::Matrix &vec, CH_Matrix_Classes::Real alpha, CH_Matrix_Classes::Integer startindex)=0
add alpha*trace_vec to vec starting at startindex
virtual int set_dx_xizsolvestep(const CH_Matrix_Classes::Matrix &step_y, const CH_Matrix_Classes::Real step_trdual, MinorantBundle &globalbundle, CH_Matrix_Classes::Integer startindex_bundle)=0
compute dx (and then dz) given step_y and step_trdual on basis of the last rhs computed for the model...
double Real
all real numbers in calculations are of this type
Definition: matop.hxx:50
virtual CH_Matrix_Classes::Real dualviol_2normsqr()=0
return the squared Euclidean norm of the dual model violation
virtual int add_BtinvsysB_times(const CH_Matrix_Classes::Matrix &in_vec, CH_Matrix_Classes::Matrix &out_vec, CH_Matrix_Classes::Real zeta_inval, CH_Matrix_Classes::Real *zeta_outval, MinorantBundle &globalbundle, CH_Matrix_Classes::Integer startindex_bundle)=0
out_vec+=BtinvsysB*in_vec
virtual CH_Matrix_Classes::Matrix & B_times(const CH_Matrix_Classes::Matrix &A, CH_Matrix_Classes::Matrix &C, CH_Matrix_Classes::Real alpha, CH_Matrix_Classes::Real beta, int Btrans, int Atrans, CH_Matrix_Classes::Integer startindex_model, MinorantBundle &globalbundle, CH_Matrix_Classes::Integer startindex_bundle)=0
extract dx from rhs at startindex and compute at the same time dz (=-sys dx-z +complentarity_rhs); th...
virtual CH_Matrix_Classes::Real evaluate_trace_x()=0
return the "trace" value of the current point
Header declaring the class ConicBundle::InteriorPointBlock.
virtual int add_BtinvsysB(CH_Matrix_Classes::Symmatrix &globalsys, const MinorantBundle &bundle, CH_Matrix_Classes::Integer startindex_bundle)=0
add the "scaled" minorant outer products to globalsys, where the correct minroants start at the given...
abstract base class for passing additional oracle information to the QP
Definition: QPModelDataObject.hxx:134
virtual CH_Matrix_Classes::Real evaluate_trace_dx()=0
return the change in "trace" value caused by the current step
virtual int set_bundle_z(const CH_Matrix_Classes::Matrix &y, MinorantBundle &global_bundle, CH_Matrix_Classes::Integer startindex_bundle, CH_Matrix_Classes::Real &add_center_value)=0
set z to the slack of the bundle and return a value>=0 that needs to be added to make it feasible ...
virtual CH_Matrix_Classes::Integer dim_bundle() const =0
returns the number of consecutive bundle elements this cone makes use of
abstract interface for interior point vector/matrix variables and routines specific to primal dual co...
Definition: InteriorPointBlock.hxx:30
Matrix class of symmetric matrices with real values of type Real
Definition: symmat.hxx:43
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
virtual int Schur_transform_bundle(CH_Matrix_Classes::Matrix &glob_lowrank, MinorantBundle &globalbundle, CH_Matrix_Classes::Integer startindex_bundle, CH_Matrix_Classes::Matrix &trafotrace, CH_Matrix_Classes::Integer startindex_trace)=0
provides basic information for low rank preconditioning (in the extreme case solving) for the case of...
InteriorPointBundleBlock(CBout *cb=0, int cbinc=-1)
default constructor
Definition: InteriorPointBundleBlock.hxx:39
virtual int add_modelx_aggregate(CH_Matrix_Classes::Real &val, CH_Matrix_Classes::Matrix &vec, MinorantBundle &global_bundle, CH_Matrix_Classes::Integer startindex_bundle)=0
adds opB transposed times modelx (without constant affine term) to the arguments
virtual int add_pcsubspace(CH_Matrix_Classes::Matrix &lowrank, CH_Matrix_Classes::Matrix &sigma_guess, const CH_Matrix_Classes::Matrix &Diag_inv, CH_Matrix_Classes::Real minval, CH_Matrix_Classes::Real diaginvval, CH_Matrix_Classes::Matrix &minus_trmult, CH_Matrix_Classes::Real schur_trace, MinorantBundle &globalbundle, CH_Matrix_Classes::Integer startindex_bundle)=0
append to lowrank "large" columns that should serve well for generating a low rank projection of the ...
virtual ~InteriorPointBundleBlock()
virtual destructor
virtual void set_oracle_data(QPModelOracleDataObject *)
allows to pass on additional information about the oracle if required
Definition: InteriorPointBundleBlock.hxx:53
CH_Matrix_Classes::Integer bundle_dim
dimension of the bundle (in case of subspace projections this may differ from vecdim ...
Definition: InteriorPointBundleBlock.hxx:34
virtual int set_xizinvsqrt_trace(CH_Matrix_Classes::Matrix &vec, CH_Matrix_Classes::Integer startindex)=0
set the trace premultiplied by sqrt(inv(xiz)) in vec[startindex+0,...,startindex+dim_bundle()-1] ...
virtual CH_Matrix_Classes::Matrix & get_Bt(CH_Matrix_Classes::Matrix &Bt, CH_Matrix_Classes::Integer startindex_model, MinorantBundle &global_bundle, CH_Matrix_Classes::Integer startindex_bundle)=0
get the current matrix for the coupling matrix Bt in the first row of blocks
CH_Matrix_Classes::Matrix diff_model
negative evaluation of minorants in current point
Definition: InteriorPointBundleBlock.hxx:35
Header declaring the class ConicBundle::QPModelDataObject, ConicBundle::QPSumModelDataObject, ConicBundle::QPConeModelDataObject, ConicBundle::QPModelDataPointer.
virtual int get_sysviol_model(CH_Matrix_Classes::Matrix &sysviol_model, CH_Matrix_Classes::Integer startindex_model, const CH_Matrix_Classes::Matrix &dy, const CH_Matrix_Classes::Real deltatrdual, MinorantBundle &global_bundle, CH_Matrix_Classes::Integer startindex_bundle)=0
set the model violation for the current system solution for the precomputed rhs on basis of the y and...
virtual CH_Matrix_Classes::Real evaluate_trace_z()=0
return the "trace" value of the current point
Matrix class for real values of type Real
Definition: matrix.hxx:74
virtual int add_trace_to_diff_model(CH_Matrix_Classes::Real trace_dual)=0
add trace_dual*trace to diff_model for the right hand side (negative of current model violation) ...
std::vector< MinorantPointer > MinorantBundle
a bundle is a vector with MinorantPointer entries
Definition: MinorantPointer.hxx:24
virtual int set_modelrhs(CH_Matrix_Classes::Matrix &globalrhs, CH_Matrix_Classes::Real rhsmu, CH_Matrix_Classes::Real rhscorr, CH_Matrix_Classes::Integer startindex_model)=0
If mu is not zero, always add the centering term for this mu as well;.
abstract interface for interior point routines specific to primal dual complementarity conditions of ...
Definition: InteriorPointBundleBlock.hxx:31
Header declaring the class ConicBundle::MinorantPointer.
virtual int add_bundle_xizinv_diagonal(CH_Matrix_Classes::Matrix &diagonal, CH_Matrix_Classes::Matrix &ipBtrvec, MinorantBundle &globalbundle, CH_Matrix_Classes::Integer startindex_bundle, const CH_Matrix_Classes::Matrix &trafotrace, CH_Matrix_Classes::Integer startindex_trace)=0
add diag(Bt*sqrt(invsys)*(I-lambda*trvec*trvec')*sqrt(invsys)*B) to diagonal
virtual int add_bundle_xizinvsqrt_projection(CH_Matrix_Classes::Matrix &glob_lowrank, CH_Matrix_Classes::Matrix &subspace, CH_Matrix_Classes::Integer startindex_subsspace, MinorantBundle &globalbundle, CH_Matrix_Classes::Integer startindex_bundle)=0
add bundle*sqrt(inv(xiz))*subspace to glob_lowrank with bundle(:,si_bundle+1:si_bundle+dim_bundle()-1...
virtual InteriorPointBundleBlock * clone()=0
returns a clone; sofar this is only needed for comparative testing
virtual CH_Matrix_Classes::Symmatrix & add_BDBt(const CH_Matrix_Classes::Matrix &diagvec, CH_Matrix_Classes::Symmatrix &bigS, bool minus, CH_Matrix_Classes::Integer startindex, CH_Matrix_Classes::Matrix &Bt, CH_Matrix_Classes::Integer startindex_model, MinorantBundle &globalbundle, CH_Matrix_Classes::Integer startindex_bundle)=0
add the main diagonal block tranpose(projection)*diagvec*projection to bigS starting at startindex ...
virtual int copy_from(InteriorPointBundleBlock *)=0
copies to content of the argument to this; to work *this must be a clone of the argument; sofar this ...
virtual int do_bundle_step(CH_Matrix_Classes::Real alpha, const CH_Matrix_Classes::Matrix &y, MinorantBundle &globalbundle, CH_Matrix_Classes::Integer startindex_bundle, CH_Matrix_Classes::Real tracedual, CH_Matrix_Classes::Real trace_rhs)=0
move to (x+alpha*dx, z+alpha*dz), update diff_model and possibly reduce the model size if some part i...