154 if (componentNorm > norm) norm = componentNorm;
160 gap -= prob->
fBa*vars->
fY;
163 if( componentNorm > norm ) norm = componentNorm;
169 if( componentNorm > norm ) norm = componentNorm;
184 if( componentNorm > norm ) norm = componentNorm;
198 if( componentNorm > norm ) norm = componentNorm;
202 if( componentNorm > norm ) norm = componentNorm;
213 if( componentNorm > norm ) norm = componentNorm;
225 if (componentNorm > norm) norm = componentNorm;
360 const Double_t *
const fep = ep+
v.GetNrows();
369 if (*ep < -rmax) *ep = -rmax;
380 if (
this != &source) {
Mother of all ROOT objects.
TObject & operator=(const TObject &rhs)
TObject assignment operator.
Data for the general QP formulation.
virtual TVectorD & GetSlowerBound()
virtual TVectorD & GetXlowerBound()
virtual TVectorD & GetSupperBound()
virtual TVectorD & GetXupperBound()
Data for the dense QP formulation.
virtual void CTransmult(Double_t beta, TVectorD &y, Double_t alpha, const TVectorD &x)
calculate y = beta*y + alpha*(fC^T*x)
virtual void Amult(Double_t beta, TVectorD &y, Double_t alpha, const TVectorD &x)
calculate y = beta*y + alpha*(fA*x)
virtual void Cmult(Double_t beta, TVectorD &y, Double_t alpha, const TVectorD &x)
calculate y = beta*y + alpha*(fC*x)
virtual void ATransmult(Double_t beta, TVectorD &y, Double_t alpha, const TVectorD &x)
calculate y = beta*y + alpha*(fA^T*x)
virtual void Qmult(Double_t beta, TVectorD &y, Double_t alpha, const TVectorD &x)
calculate y = beta*y + alpha*(fQ*x)
The Residuals class calculates and stores the quantities that appear on the right-hand side of the li...
void Clear_r1r2()
set the noncomplementarity components of the residual (the terms arising from the linear equalities i...
void Clear_r3()
set the complementarity component of the residuals to 0.
TQpResidual()
Constructor.
void Set_r3_xz_alpha(TQpVar *vars, Double_t alpha)
Set the "complementarity" component of the residuals to the pairwise products of the complementary va...
Bool_t ValidNonZeroPattern()
Check if vector elements as selected through array indices are non-zero.
void CalcResids(TQpDataBase *problem, TQpVar *vars)
Calculate residuals, their norms, and duality complementarity gap, given a problem and variable set.
void Add_r3_xz_alpha(TQpVar *vars, Double_t alpha)
Modify the "complementarity" component of the residuals, by adding the pairwise products of the compl...
TQpResidual & operator=(const TQpResidual &source)
Assignment operator.
void Project_r3(Double_t rmin, Double_t rmax)
Perform the projection operation required by Gondzio algorithm: replace each component r3_i of the co...
static void GondzioProjection(TVectorD &v, Double_t rmin, Double_t rmax)
Replace each component r3_i of the complementarity component of the residuals by r3p_i-r3_i,...
Class containing the variables for the general QP formulation.
TVectorT< Element > & Zero()
Set vector elements to zero.
Element NormInf() const
Compute the infinity-norm of the vector MAX{ |v[i]| }.
void AddSomeConstant(Element val, const TVectorT< Element > &select)
Add to vector elements as selected through array select the value val.
Bool_t MatchesNonZeroPattern(const TVectorT< Element > &select)
Check if vector elements as selected through array select are non-zero.
TVectorT< Element > & ResizeTo(Int_t lwb, Int_t upb)
Resize the vector to [lwb:upb] .
TVectorT< Element > & Use(Int_t lwb, Int_t upb, Element *data)
Use the array data to fill the vector lwb..upb].
TVectorT< Element > & SelectNonZeros(const TVectorT< Element > &select)
Keep only element as selected through array select non-zero.
Int_t NonZeros() const
Compute the number of elements != 0.0.
Element * GetMatrixArray()
TVectorT< Element > & AddElemMult(TVectorT< Element > &target, Element scalar, const TVectorT< Element > &source1, const TVectorT< Element > &source2)
Modify addition: target += scalar * ElementMult(source1,source2) .
TMatrixT< Element > & Add(TMatrixT< Element > &target, Element scalar, const TMatrixT< Element > &source)
Modify addition: target += scalar * source.