ROOT logo
ROOT » MATH » QUADP » TQpVar

class TQpVar: public TObject


Class containing the variables for the general QP formulation


Function Members (Methods)

public:
TQpVar()
TQpVar(const TQpVar& another)
TQpVar(Int_t nx, Int_t my, Int_t mz, TVectorD& ixlow, TVectorD& ixupp, TVectorD& iclow, TVectorD& icupp)
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)
virtual~TQpVar()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual Double_tFindBlocking(TQpVar* step, Double_t& primalValue, Double_t& primalStep, Double_t& dualValue, Double_t& dualStep, Int_t& firstOrSecond)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual Double_tGetMu()
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
virtual voidInteriorPoint(Double_t alpha, Double_t beta)
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
virtual Bool_tIsInteriorPoint()
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Double_tMuStep(TQpVar* step, Double_t alpha)
virtual voidNegate()
virtual Double_tNorm1()
virtual Double_tNormInf()
virtual Bool_tTObject::Notify()
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
TQpVar&operator=(const TQpVar& source)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidPrint(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
virtual voidSaxpy(TQpVar* b, Double_t alpha)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShiftBoundVariables(Double_t alpha, Double_t beta)
virtual voidShowMembers(TMemberInspector& insp)
virtual Double_tStepBound(TQpVar* b)
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual Bool_tValidNonZeroPattern()
virtual Double_tViolation()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
static Double_tFindBlocking(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)
static Double_tFindBlockingSub(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)
voidTObject::MakeZombie()
static Double_tStepBound(TVectorD& v, TVectorD& dir, Double_t maxStep)

Data Members

public:
enum EVarBlock { kno_block
kt_block
klambda_block
ku_block
kpi_block
kv_block
kgamma_block
kw_block
kphi_block
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
public:
TVectorDfGamma
TVectorDfLambda
Int_tfNComplementaryVariablesnumber of complementary primal-dual variables.
TVectorDfPhi
TVectorDfPi
TVectorDfS
TVectorDfT
TVectorDfU
TVectorDfV
TVectorDfW
TVectorDfX
TVectorDfY
TVectorDfZ
protected:
TVectorDfCloIndex
TVectorDfCupIndex
Int_tfMclo
Int_tfMcup
Int_tfMy
Int_tfMz
Int_tfNx
Int_tfNxlo
Int_tfNxup
TVectorDfXloIndex
TVectorDfXupIndex

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

TQpVar()
 Default constructor
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
TQpVar(Int_t nx, Int_t my, Int_t mz, TVectorD& ixlow, TVectorD& ixupp, TVectorD& iclow, TVectorD& icupp)
 Constructor
TQpVar(const TQpVar& another)
 Copy constructor
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)
Double_t MuStep(TQpVar* step, Double_t alpha)
 Compute the complementarity gap resulting from a step of length "alpha" along
 direction "step"
void Saxpy(TQpVar* b, Double_t alpha)
 Perform a "saxpy" operation on all data vectors : x += alpha*y
void Negate()
 Perform a "negate" operation on all data vectors : x =  -x
Double_t StepBound(TQpVar* b)
 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.
Double_t StepBound(TVectorD& v, TVectorD& dir, Double_t maxStep)
 Find the maximum stepsize of v in direction dir
 before violating the nonnegativity constraints
Bool_t IsInteriorPoint()
 Is the current position an interior point  ?
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.
 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.
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
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
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
Double_t Violation()
 The amount by which the current variables violate the  non-negativity constraints.
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)
void Print(Option_t* option = "") const
 Print class members
Double_t Norm1()
 Return the sum of the vector-norm1's
Double_t NormInf()
 Return the sum of the vector-normInf's
Bool_t ValidNonZeroPattern()
 Check that the variables conform to the non-zero indices
TQpVar & operator=(const TQpVar& source)
 Assignment operator
virtual ~TQpVar()
{}