3 #ifndef CONICBUNDLE_INTERIORPOINTBLOCK_HXX 4 #define CONICBUNDLE_INTERIORPOINTBLOCK_HXX 162 bool Atrans=
false)=0;
212 ip_xz_xdzpdxz+=xz*xdzpdxz;
214 ip_dxdz_xdzpdxz+=dxdz*xdzpdxz;
224 if (otheta>(1+1e-6)*nbh_ubnd){
226 if (gtheta<.1*nbh_ubnd+0.9*otheta){
230 gtheta=(1-1e-3)*otheta+1e-3*nbh_ubnd;
261 if (q0+alpha*q1>0.) {
267 q0 = -xz - theta*mu_xz;
268 q1 = -xdzpdxz - theta*mu_xdzpdxz-(gtheta-theta)*(mu_at_one);
269 q2 = -dxdz - theta*mu_dxdz;
292 if (q0+alpha*q1>0.) {
int Integer
all integer numbers in calculations and indexing are of this type
Definition: matop.hxx:40
virtual int set_dx(const CH_Matrix_Classes::Matrix &rhs, CH_Matrix_Classes::Integer startindex)=0
extract dx from rhs at startindex and compute at the same time dz (=-sys dx-z +complentarity_rhs); th...
int control_nbh_step(CH_Matrix_Classes::Real &stepsize, CH_Matrix_Classes::Real &max_nbh, CH_Matrix_Classes::Real nbh_ubnd, CH_Matrix_Classes::Real mu_xz, CH_Matrix_Classes::Real mu_xdzpdxz, CH_Matrix_Classes::Real mu_dxdz, CH_Matrix_Classes::Real nrmsqr_xz, CH_Matrix_Classes::Real nrmsqr_xdzpdxz, CH_Matrix_Classes::Real nrmsqr_dxdz, CH_Matrix_Classes::Real ip_xz_xdzpdxz, CH_Matrix_Classes::Real ip_xz_dxdz, CH_Matrix_Classes::Real ip_dxdz_xdzpdxz) const
find a stepsize so that outside the nbh_ubnd some progress is made towards it and inside the upper bo...
double Real
all real numbers in calculations are of this type
Definition: matop.hxx:50
virtual int set_z(const CH_Matrix_Classes::Matrix &vec, CH_Matrix_Classes::Integer startindex, CH_Matrix_Classes::Real &add_center_value)=0
set z to the values of vec[startindex+0,+1 ...,+(vecdim-1)] and return a value>=0 that needs to be ad...
virtual int do_step(CH_Matrix_Classes::Real alpha)=0
move to (x+alpha*dx, z+alpha*dz)
virtual int vecgetsaz(CH_Matrix_Classes::Matrix &vec, CH_Matrix_Classes::Integer startindex, CH_Matrix_Classes::Real a=1., bool add=false)=0
on vec[startindex+0,+1 ...,+(vecdim-1)] put or add a * z into vec for a real number a ...
virtual int add_AxizinvAt(const CH_Matrix_Classes::Matrix &A, CH_Matrix_Classes::Symmatrix &globalsys, bool minus=false, bool Atrans=false)=0
add the Schur complement to a big system matrix
virtual int get_mu_info(CH_Matrix_Classes::Integer &mudim, CH_Matrix_Classes::Real &tr_xz, CH_Matrix_Classes::Real &tr_xdzpdxz, CH_Matrix_Classes::Real &tr_dxdz, CH_Matrix_Classes::Real &min_xz, CH_Matrix_Classes::Real &max_xz) const =0
add dimensions of the primal-dual pairs to mudim and add the "trace" (the inner product with center) ...
const Real eps_Real
machine epsilon for type Real
Definition: matop.hxx:59
InteriorPointBlock(CBout *cb=0, int cbinc=-1)
default constructor
Definition: InteriorPointBlock.hxx:67
abstract interface for interior point vector/matrix variables and routines specific to primal dual co...
Definition: InteriorPointBlock.hxx:30
virtual int apply_xiz(CH_Matrix_Classes::Matrix &rhs, CH_Matrix_Classes::Integer startindex, bool minus=false)=0
compute sys*rhs into rhs, possibly with a negative sign
Matrix class of symmetric matrices with real values of type Real
Definition: symmat.hxx:43
Header declaring the class CH_Matrix_Classes::Symmatrix for symmetric matrices with Real elements...
virtual int get_vecdx(CH_Matrix_Classes::Matrix &vecdx, CH_Matrix_Classes::Integer startindex)=0
return the vector form of dx, 1 if not available
virtual int get_vecz(CH_Matrix_Classes::Matrix &vecz, CH_Matrix_Classes::Integer startindex)=0
return the vector form of z
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 center_x(CH_Matrix_Classes::Real val, bool add=false)=0
set x to value*"one" to x (spend a total of mu_dim*val), or if add==true, add value*"one" to x ...
virtual int get_nbh_info(CH_Matrix_Classes::Integer mudim, CH_Matrix_Classes::Real tr_xz, CH_Matrix_Classes::Real tr_xdzpdxz, CH_Matrix_Classes::Real tr_dxdz, CH_Matrix_Classes::Real nbh_ubnd, CH_Matrix_Classes::Real &alpha, CH_Matrix_Classes::Real &max_nbh, CH_Matrix_Classes::Real &nrmsqr_xz, CH_Matrix_Classes::Real &nrmsqr_xdzpdxz, CH_Matrix_Classes::Real &nrmsqr_dxdz, CH_Matrix_Classes::Real &ip_xz_xdzpdxz, CH_Matrix_Classes::Real &ip_xz_dxdz, CH_Matrix_Classes::Real &ip_dxdz_xdzpdxz) const =0
for limiting the stepsize with respect to the neighborhood this information about norms and inner pro...
virtual int get_vecx(CH_Matrix_Classes::Matrix &vecx, CH_Matrix_Classes::Integer startindex)=0
return the vector form of x
Header declaring the output class CBout.
virtual CH_Matrix_Classes::Integer get_vecdim() const =0
the dimension of the variable
int pol_le_zero_step(CH_Matrix_Classes::Real &stepsize, CH_Matrix_Classes::Real q0, CH_Matrix_Classes::Real q1, CH_Matrix_Classes::Real q2, CH_Matrix_Classes::Real q3, CH_Matrix_Classes::Real q4, CH_Matrix_Classes::Real abseps=1e-10) const
for a polynomial q0+alpha*(q1+alpha*(q2+alpha*(q3+alpha*q4))) with q0<=0 find the maximum alpha <= st...
virtual int apply_xizinv(CH_Matrix_Classes::Matrix &rhs, CH_Matrix_Classes::Integer startindex, bool minus=false)=0
compute sysinv*rhs into rhs, possibly with a negative sign
virtual int center_z(CH_Matrix_Classes::Real val, bool add=false)=0
set z to value*"one" to z, or if add==true, add value*"one" to z
Matrix class for real values of type Real
Definition: matrix.hxx:74
virtual int set_x(const CH_Matrix_Classes::Matrix &vec, CH_Matrix_Classes::Integer startindex, CH_Matrix_Classes::Real &add_center_value)=0
set x to the values of vec[startindex+0,+1 ...,+(vecdim-1)] and return in add_center_value a value>=0...
virtual int get_vecdz(CH_Matrix_Classes::Matrix &vecdz, CH_Matrix_Classes::Integer startindex)=0
return the vector form of dz, 1 if not available
int sqr(int a)
return a*a for int a
Definition: mymath.hxx:103
double max(double a, double b)
maximum value of two double variables
Definition: mymath.hxx:43
virtual int add_muxinv(CH_Matrix_Classes::Matrix &rhs, CH_Matrix_Classes::Integer startindex, CH_Matrix_Classes::Real rhsmu, CH_Matrix_Classes::Real rhscorr, bool minus=false)=0
compute the complementarity_rhs=rhsmu*xi-rhscorr*xi*dx*dz (wihtout "-z") for mu=rhsmu and for correct...
int minimize_pol_step(CH_Matrix_Classes::Real &stepsize, CH_Matrix_Classes::Real q0, CH_Matrix_Classes::Real q1, CH_Matrix_Classes::Real q2, CH_Matrix_Classes::Real q3, CH_Matrix_Classes::Real q4, CH_Matrix_Classes::Real abseps=1e-10) const
find the minimizing alpha of a polynomial q0+alpha*(q1+alpha*(q2+alpha*(q3+alpha*q4))) within 0<=alph...
virtual int add_xiz(CH_Matrix_Classes::Symmatrix &globalsys, CH_Matrix_Classes::Integer startindex, bool minus=false)=0
add (or subract if minus==true) the system matrix to a big system matrix starting at startindex ...
double min(double a, double b)
minimum value of two double variables
Definition: mymath.hxx:49
virtual int vecgetsax(CH_Matrix_Classes::Matrix &vec, CH_Matrix_Classes::Integer startindex, CH_Matrix_Classes::Real a=1., bool add=false)=0
on vec[startindex+0,+1 ...,+(vecdim-1)] put or add a * x into vec for a real number a ...
virtual int linesearch(CH_Matrix_Classes::Real &alpha) const =0
if necessary, reduce alpha to the biggest value so that feasibility is maintained with this step size...
virtual ~InteriorPointBlock()
virtual destructor (implemented in InteriorPointBundleBlock.cxx)
virtual int set_dx_xizsolverhs(const CH_Matrix_Classes::Matrix &rhs, CH_Matrix_Classes::Integer startindex)=0
compute dx=sysinv*rhs and at the same time dz (=-rhs-z +complentarity_rhs); may only be called after ...
double sqrt(int a)
return sqrt for int a
Definition: mymath.hxx:121
void NNC_nbh_stepsize(CH_Matrix_Classes::Real x, CH_Matrix_Classes::Real z, CH_Matrix_Classes::Real dx, CH_Matrix_Classes::Real dz, CH_Matrix_Classes::Real mu_xz, CH_Matrix_Classes::Real mu_xdzpdxz, CH_Matrix_Classes::Real mu_dxdz, CH_Matrix_Classes::Real mu_at_one, CH_Matrix_Classes::Real nbh_ubnd, CH_Matrix_Classes::Real &alpha, CH_Matrix_Classes::Real &max_nbh, CH_Matrix_Classes::Real &nrmsqr_xz, CH_Matrix_Classes::Real &nrmsqr_xdzpdxz, CH_Matrix_Classes::Real &nrmsqr_dxdz, CH_Matrix_Classes::Real &ip_xz_xdzpdxz, CH_Matrix_Classes::Real &ip_xz_dxdz, CH_Matrix_Classes::Real &ip_dxdz_xdzpdxz)
computes values for a neighborhood line search for a primal nonnegative cone pair ...
Definition: InteriorPointBlock.hxx:188