153 if (componentNorm > norm) norm = componentNorm;
159 gap -= prob->
fBa*vars->
fY;
161 componentNorm =
fRA.NormInf();
162 if( componentNorm > norm ) norm = componentNorm;
167 componentNorm =
fRC.NormInf();
168 if( componentNorm > norm ) norm = componentNorm;
182 componentNorm =
fRt.NormInf();
183 if( componentNorm > norm ) norm = componentNorm;
196 componentNorm =
fRu.NormInf();
197 if( componentNorm > norm ) norm = componentNorm;
200 componentNorm =
fRz.NormInf();
201 if( componentNorm > norm ) norm = componentNorm;
211 componentNorm =
fRv.NormInf();
212 if( componentNorm > norm ) norm = componentNorm;
223 componentNorm =
fRw.NormInf();
224 if (componentNorm > norm) norm = componentNorm;
359 const Double_t *
const fep = ep+
v.GetNrows();
368 if (*ep < -rmax) *ep = -rmax;
379 if (
this != &source) {
int Int_t
Signed integer 4 bytes (int).
bool Bool_t
Boolean (0=false, 1=true) (bool).
double Double_t
Double 8 bytes.
TVectorT< Double_t > TVectorD
TObject & operator=(const TObject &rhs) noexcept
TObject assignment operator.
TObject()
TObject constructor.
Data for the general QP formulation.
virtual TVectorD & GetSlowerBound()
virtual TVectorD & GetXlowerBound()
virtual TVectorD & GetSupperBound()
virtual TVectorD & GetXupperBound()
Data for the dense QP formulation.
void Qmult(Double_t beta, TVectorD &y, Double_t alpha, const TVectorD &x) override
calculate y = beta*y + alpha*(fQ*x)
void Cmult(Double_t beta, TVectorD &y, Double_t alpha, const TVectorD &x) override
calculate y = beta*y + alpha*(fC*x)
void Amult(Double_t beta, TVectorD &y, Double_t alpha, const TVectorD &x) override
calculate y = beta*y + alpha*(fA*x)
void ATransmult(Double_t beta, TVectorD &y, Double_t alpha, const TVectorD &x) override
calculate y = beta*y + alpha*(fA^T*x)
void CTransmult(Double_t beta, TVectorD &y, Double_t alpha, const TVectorD &x) override
calculate y = beta*y + alpha*(fC^T*x)
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.
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.