Logo ROOT   6.13/01
Reference Guide
List of all members | Public Types | Public Member Functions | Public Attributes | Static Protected Member Functions | Protected Attributes | List of all members
TQpVar Class Reference

Definition at line 59 of file TQpVar.h.

Public Types

enum  EVarBlock {
  kno_block, kt_block, klambda_block, ku_block,
  kpi_block, kv_block, kgamma_block, kw_block,
  kphi_block
}
 

Public Member Functions

 TQpVar ()
 Default constructor. More...
 
 TQpVar (TVectorD &x_in, TVectorD &s_in, TVectorD &y_in, TVectorD &z_in, TVectorD &v_in, TVectorD &gamma_in, TVectorD &w_in, TVectorD &phi_in, TVectorD &t_in, TVectorD &lambda_in, TVectorD &u_in, TVectorD &pi_in, TVectorD &ixlow_in, TVectorD &ixupp_in, TVectorD &iclow_in, TVectorD &icupp_in)
 Constructor. More...
 
 TQpVar (Int_t nx, Int_t my, Int_t mz, TVectorD &ixlow, TVectorD &ixupp, TVectorD &iclow, TVectorD &icupp)
 Constructor. More...
 
 TQpVar (const TQpVar &another)
 Copy constructor. More...
 
virtual ~TQpVar ()
 
virtual Double_t FindBlocking (TQpVar *step, Double_t &primalValue, Double_t &primalStep, Double_t &dualValue, Double_t &dualStep, Int_t &firstOrSecond)
 Performs the same function as StepBound, and supplies additional information about which component of the nonnegative variables is responsible for restricting alpha. More...
 
virtual Double_t GetMu ()
 compute complementarity gap, obtained by taking the inner product of the complementary vectors and dividing by the total number of components computes mu = (t'lambda +u'pi + v'gamma + w'phi)/(mclow+mcupp+nxlow+nxupp) More...
 
virtual void InteriorPoint (Double_t alpha, Double_t beta)
 Sets components of (u,t,v,w) to alpha and of (lambda,pi,phi,gamma) to beta. More...
 
virtual Bool_t IsInteriorPoint ()
 Is the current position an interior point ? More...
 
virtual Double_t MuStep (TQpVar *step, Double_t alpha)
 Compute the complementarity gap resulting from a step of length "alpha" along direction "step". More...
 
virtual void Negate ()
 Perform a "negate" operation on all data vectors : x = -x. More...
 
virtual Double_t Norm1 ()
 Return the sum of the vector-norm1's. More...
 
virtual Double_t NormInf ()
 Return the sum of the vector-normInf's. More...
 
TQpVaroperator= (const TQpVar &source)
 Assignment operator. More...
 
virtual void Print (Option_t *option="") const
 Print class members. More...
 
virtual void Saxpy (TQpVar *b, Double_t alpha)
 Perform a "saxpy" operation on all data vectors : x += alpha*y. More...
 
virtual void ShiftBoundVariables (Double_t alpha, Double_t beta)
 Add alpha to components of (u,t,v,w) and beta to components of (lambda,pi,phi,gamma) More...
 
virtual Double_t StepBound (TQpVar *b)
 calculate the largest alpha in (0,1] such that the/ nonnegative variables stay nonnegative in the given search direction. More...
 
virtual Bool_t ValidNonZeroPattern ()
 Check that the variables conform to the non-zero indices. More...
 
virtual Double_t Violation ()
 The amount by which the current variables violate the non-negativity constraints. More...
 

Public Attributes

TVectorD fGamma
 
TVectorD fLambda
 
Int_t fNComplementaryVariables
 
TVectorD fPhi
 
TVectorD fPi
 
TVectorD fS
 
TVectorD fT
 
TVectorD fU
 
TVectorD fV
 
TVectorD fW
 
TVectorD fX
 
TVectorD fY
 
TVectorD fZ
 

Static Protected Member Functions

static Double_t FindBlocking (TVectorD &w, TVectorD &wstep, TVectorD &u, TVectorD &ustep, Double_t maxStep, Double_t &w_elt, Double_t &wstep_elt, Double_t &u_elt, Double_t &ustep_elt, int &first_or_second)
 See other FindBlocking function. More...
 
static Double_t FindBlockingSub (Int_t n, Double_t *w, Int_t incw, Double_t *wstep, Int_t incwstep, Double_t *u, Int_t incu, Double_t *ustep, Int_t incustep, Double_t maxStep, Double_t &w_elt, Double_t &wstep_elt, Double_t &u_elt, Double_t &ustep_elt, Int_t &first_or_second)
 See FindBlocking function. More...
 
static Double_t StepBound (TVectorD &v, TVectorD &dir, Double_t maxStep)
 Find the maximum stepsize of v in direction dir before violating the nonnegativity constraints. More...
 

Protected Attributes

TVectorD fCloIndex
 
TVectorD fCupIndex
 
Int_t fMclo
 
Int_t fMcup
 
Int_t fMy
 
Int_t fMz
 
Int_t fNx
 
Int_t fNxlo
 
Int_t fNxup
 
TVectorD fXloIndex
 
TVectorD fXupIndex
 

#include <TQpVar.h>

Inheritance diagram for TQpVar:
[legend]

Member Enumeration Documentation

◆ EVarBlock

Enumerator
kno_block 
kt_block 
klambda_block 
ku_block 
kpi_block 
kv_block 
kgamma_block 
kw_block 
kphi_block 

Definition at line 127 of file TQpVar.h.

Constructor & Destructor Documentation

◆ TQpVar() [1/4]

TQpVar::TQpVar ( )

Default constructor.

Definition at line 58 of file TQpVar.cxx.

◆ TQpVar() [2/4]

TQpVar::TQpVar ( TVectorD x_in,
TVectorD s_in,
TVectorD y_in,
TVectorD z_in,
TVectorD v_in,
TVectorD gamma_in,
TVectorD w_in,
TVectorD phi_in,
TVectorD t_in,
TVectorD lambda_in,
TVectorD u_in,
TVectorD pi_in,
TVectorD ixlow_in,
TVectorD ixupp_in,
TVectorD iclow_in,
TVectorD icupp_in 
)

Constructor.

Definition at line 74 of file TQpVar.cxx.

◆ TQpVar() [3/4]

TQpVar::TQpVar ( Int_t  nx,
Int_t  my,
Int_t  mz,
TVectorD ixlow,
TVectorD ixupp,
TVectorD iclow,
TVectorD icupp 
)

Constructor.

Definition at line 129 of file TQpVar.cxx.

◆ TQpVar() [4/4]

TQpVar::TQpVar ( const TQpVar another)

Copy constructor.

Definition at line 180 of file TQpVar.cxx.

◆ ~TQpVar()

virtual TQpVar::~TQpVar ( )
inlinevirtual

Definition at line 120 of file TQpVar.h.

Member Function Documentation

◆ FindBlocking() [1/2]

Double_t TQpVar::FindBlocking ( TVectorD w,
TVectorD wstep,
TVectorD u,
TVectorD ustep,
Double_t  maxStep,
Double_t &  w_elt,
Double_t &  wstep_elt,
Double_t &  u_elt,
Double_t &  ustep_elt,
int &  first_or_second 
)
staticprotected

See other FindBlocking function.

Definition at line 445 of file TQpVar.cxx.

◆ FindBlocking() [2/2]

Double_t TQpVar::FindBlocking ( TQpVar step,
Double_t &  primalValue,
Double_t &  primalStep,
Double_t &  dualValue,
Double_t &  dualStep,
Int_t &  fIrstOrSecond 
)
virtual

Performs the same function as StepBound, and supplies additional information about which component of the nonnegative variables is responsible for restricting alpha.

In terms of the abstract formulation, the components have the following meanings :

primalValue : the value of the blocking component of the primal variables (u,t,v,w). primalStep : the corresponding value of the blocking component of the primal step variables (b->u,b->t,b->v,b->w) dualValue : the value of the blocking component of the dual variables/ (lambda,pi,phi,gamma). dualStep : the corresponding value of the blocking component of the dual step variables (b->lambda,b->pi,b->phi,b->gamma) firstOrSecond : 1 if the primal step is blocking, 2 if the dual step is block, 0 if no step is blocking.

Definition at line 413 of file TQpVar.cxx.

◆ FindBlockingSub()

Double_t TQpVar::FindBlockingSub ( Int_t  n,
Double_t *  w,
Int_t  incw,
Double_t *  wstep,
Int_t  incwstep,
Double_t *  u,
Int_t  incu,
Double_t *  ustep,
Int_t  incustep,
Double_t  maxStep,
Double_t &  w_elt,
Double_t &  wstep_elt,
Double_t &  u_elt,
Double_t &  ustep_elt,
Int_t &  first_or_second 
)
staticprotected

See FindBlocking function.

Definition at line 464 of file TQpVar.cxx.

◆ GetMu()

Double_t TQpVar::GetMu ( )
virtual

compute complementarity gap, obtained by taking the inner product of the complementary vectors and dividing by the total number of components computes mu = (t'lambda +u'pi + v'gamma + w'phi)/(mclow+mcupp+nxlow+nxupp)

Definition at line 191 of file TQpVar.cxx.

◆ InteriorPoint()

void TQpVar::InteriorPoint ( Double_t  alpha,
Double_t  beta 
)
virtual

Sets components of (u,t,v,w) to alpha and of (lambda,pi,phi,gamma) to beta.

Definition at line 533 of file TQpVar.cxx.

◆ IsInteriorPoint()

Bool_t TQpVar::IsInteriorPoint ( )
virtual

Is the current position an interior point ?

Definition at line 374 of file TQpVar.cxx.

◆ MuStep()

Double_t TQpVar::MuStep ( TQpVar step,
Double_t  alpha 
)
virtual

Compute the complementarity gap resulting from a step of length "alpha" along direction "step".

Definition at line 210 of file TQpVar.cxx.

◆ Negate()

void TQpVar::Negate ( )
virtual

Perform a "negate" operation on all data vectors : x = -x.

Definition at line 271 of file TQpVar.cxx.

◆ Norm1()

Double_t TQpVar::Norm1 ( )
virtual

Return the sum of the vector-norm1's.

Definition at line 675 of file TQpVar.cxx.

◆ NormInf()

Double_t TQpVar::NormInf ( )
virtual

Return the sum of the vector-normInf's.

Definition at line 699 of file TQpVar.cxx.

◆ operator=()

TQpVar & TQpVar::operator= ( const TQpVar source)

Assignment operator.

Definition at line 771 of file TQpVar.cxx.

◆ Print()

void TQpVar::Print ( Option_t *  option = "") const
virtual

Print class members.

Definition at line 638 of file TQpVar.cxx.

◆ Saxpy()

void TQpVar::Saxpy ( TQpVar b,
Double_t  alpha 
)
virtual

Perform a "saxpy" operation on all data vectors : x += alpha*y.

Definition at line 231 of file TQpVar.cxx.

◆ ShiftBoundVariables()

void TQpVar::ShiftBoundVariables ( Double_t  alpha,
Double_t  beta 
)
virtual

Add alpha to components of (u,t,v,w) and beta to components of (lambda,pi,phi,gamma)

Definition at line 614 of file TQpVar.cxx.

◆ StepBound() [1/2]

Double_t TQpVar::StepBound ( TVectorD v,
TVectorD dir,
Double_t  maxStep 
)
staticprotected

Find the maximum stepsize of v in direction dir before violating the nonnegativity constraints.

Definition at line 347 of file TQpVar.cxx.

◆ StepBound() [2/2]

Double_t TQpVar::StepBound ( TQpVar b)
virtual

calculate the largest alpha in (0,1] such that the/ nonnegative variables stay nonnegative in the given search direction.

In the general QP problem formulation this is the largest value of alpha such that (t,u,v,w,lambda,pi,phi,gamma) + alpha * (b->t,b->u,b->v,b->w,b->lambda,b->pi, b->phi,b->gamma) >= 0.

Definition at line 303 of file TQpVar.cxx.

◆ ValidNonZeroPattern()

Bool_t TQpVar::ValidNonZeroPattern ( )
virtual

Check that the variables conform to the non-zero indices.

Definition at line 739 of file TQpVar.cxx.

◆ Violation()

Double_t TQpVar::Violation ( )
virtual

The amount by which the current variables violate the non-negativity constraints.

Definition at line 573 of file TQpVar.cxx.

Member Data Documentation

◆ fCloIndex

TVectorD TQpVar::fCloIndex
protected

Definition at line 75 of file TQpVar.h.

◆ fCupIndex

TVectorD TQpVar::fCupIndex
protected

Definition at line 74 of file TQpVar.h.

◆ fGamma

TVectorD TQpVar::fGamma

Definition at line 100 of file TQpVar.h.

◆ fLambda

TVectorD TQpVar::fLambda

Definition at line 103 of file TQpVar.h.

◆ fMclo

Int_t TQpVar::fMclo
protected

Definition at line 69 of file TQpVar.h.

◆ fMcup

Int_t TQpVar::fMcup
protected

Definition at line 68 of file TQpVar.h.

◆ fMy

Int_t TQpVar::fMy
protected

Definition at line 64 of file TQpVar.h.

◆ fMz

Int_t TQpVar::fMz
protected

Definition at line 65 of file TQpVar.h.

◆ fNComplementaryVariables

Int_t TQpVar::fNComplementaryVariables

Definition at line 88 of file TQpVar.h.

◆ fNx

Int_t TQpVar::fNx
protected

Definition at line 63 of file TQpVar.h.

◆ fNxlo

Int_t TQpVar::fNxlo
protected

Definition at line 67 of file TQpVar.h.

◆ fNxup

Int_t TQpVar::fNxup
protected

Definition at line 66 of file TQpVar.h.

◆ fPhi

TVectorD TQpVar::fPhi

Definition at line 97 of file TQpVar.h.

◆ fPi

TVectorD TQpVar::fPi

Definition at line 106 of file TQpVar.h.

◆ fS

TVectorD TQpVar::fS

Definition at line 92 of file TQpVar.h.

◆ fT

TVectorD TQpVar::fT

Definition at line 102 of file TQpVar.h.

◆ fU

TVectorD TQpVar::fU

Definition at line 105 of file TQpVar.h.

◆ fV

TVectorD TQpVar::fV

Definition at line 96 of file TQpVar.h.

◆ fW

TVectorD TQpVar::fW

Definition at line 99 of file TQpVar.h.

◆ fX

TVectorD TQpVar::fX

Definition at line 91 of file TQpVar.h.

◆ fXloIndex

TVectorD TQpVar::fXloIndex
protected

Definition at line 72 of file TQpVar.h.

◆ fXupIndex

TVectorD TQpVar::fXupIndex
protected

Definition at line 73 of file TQpVar.h.

◆ fY

TVectorD TQpVar::fY

Definition at line 93 of file TQpVar.h.

◆ fZ

TVectorD TQpVar::fZ

Definition at line 94 of file TQpVar.h.

Libraries for TQpVar:
[legend]

The documentation for this class was generated from the following files: