/usr/include/root/TQpResidual.h is in libroot-math-quadp-dev 5.34.14-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | // @(#)root/quadp:$Id$
// Author: Eddy Offermann May 2004
/*************************************************************************
* Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
/*************************************************************************
* Parts of this file are copied from the OOQP distribution and *
* are subject to the following license: *
* *
* COPYRIGHT 2001 UNIVERSITY OF CHICAGO *
* *
* The copyright holder hereby grants you royalty-free rights to use, *
* reproduce, prepare derivative works, and to redistribute this software*
* to others, provided that any changes are clearly documented. This *
* software was authored by: *
* *
* E. MICHAEL GERTZ gertz@mcs.anl.gov *
* Mathematics and Computer Science Division *
* Argonne National Laboratory *
* 9700 S. Cass Avenue *
* Argonne, IL 60439-4844 *
* *
* STEPHEN J. WRIGHT swright@cs.wisc.edu *
* Computer Sciences Department *
* University of Wisconsin *
* 1210 West Dayton Street *
* Madison, WI 53706 FAX: (608)262-9777 *
* *
* Any questions or comments may be directed to one of the authors. *
* *
* ARGONNE NATIONAL LABORATORY (ANL), WITH FACILITIES IN THE STATES OF *
* ILLINOIS AND IDAHO, IS OWNED BY THE UNITED STATES GOVERNMENT, AND *
* OPERATED BY THE UNIVERSITY OF CHICAGO UNDER PROVISION OF A CONTRACT *
* WITH THE DEPARTMENT OF ENERGY. *
*************************************************************************/
#ifndef ROOT_TQpResidual
#define ROOT_TQpResidual
#ifndef ROOT_TError
#include "TError.h"
#endif
#ifndef ROOT_TQpVar
#include "TQpVar.h"
#endif
#ifndef ROOT_TQpDataDens
#include "TQpDataDens.h"
#endif
#ifndef ROOT_TMatrixD
#include "TMatrixD.h"
#endif
///////////////////////////////////////////////////////////////////////////
// //
// Class containing the residuals of a QP when solved by an interior //
// point QP solver. In terms of our abstract QP formulation, these //
// residuals are rQ, rA, rC and r3. //
// //
///////////////////////////////////////////////////////////////////////////
class TQpResidual : public TObject
{
protected:
Double_t fResidualNorm; // The norm of the residuals, ommiting the complementariy conditions
Double_t fDualityGap; // A quantity that measures progress toward feasibility. In terms
// of the abstract problem formulation, this quantity is defined as
// x' * Q * x - b' * y + c' * x - d' * z
Int_t fNx;
Int_t fMy;
Int_t fMz;
Double_t fNxup;
Double_t fNxlo;
Double_t fMcup;
Double_t fMclo;
// these variables will be "Used" not copied
TVectorD fXupIndex;
TVectorD fXloIndex;
TVectorD fCupIndex;
TVectorD fCloIndex;
static void GondzioProjection(TVectorD &v,Double_t rmin,Double_t rmax);
public:
TVectorD fRQ;
TVectorD fRA;
TVectorD fRC;
TVectorD fRz;
TVectorD fRv;
TVectorD fRw;
TVectorD fRt;
TVectorD fRu;
TVectorD fRgamma;
TVectorD fRphi;
TVectorD fRlambda;
TVectorD fRpi;
TQpResidual();
TQpResidual(Int_t nx,Int_t my,Int_t mz,
TVectorD &ixlow,TVectorD &ixupp,TVectorD &iclow,TVectorD &icupp);
TQpResidual(const TQpResidual &another);
virtual ~TQpResidual() {}
Double_t GetResidualNorm() { return fResidualNorm; }
Double_t GetDualityGap () { return fDualityGap; };
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
// complementary variables plus a constant alpha to this
// term.
void Set_r3_xz_alpha (TQpVar *vars,Double_t alpha);
// Set the "complementarity" component of the residuals
// to the pairwise products of the complementary variables
// plus a constant alpha
void Clear_r3 (); // set the complementarity component of the residuals
// to 0.
void Clear_r1r2 (); // set the noncomplementarity components of the residual
// (the terms arising from the linear equalities in the
// KKT conditions) to 0.
void Project_r3 (Double_t rmin,Double_t rmax);
// perform the projection operation required by Gondzio
// algorithm: replace each component r3_i of the
// complementarity component of the residuals by
// r3p_i-r3_i, where r3p_i is the projection of r3_i onto
// the box [rmin, rmax]. Then if the resulting value is
// less than -rmax, replace it by -rmax.
Bool_t ValidNonZeroPattern();
TQpResidual &operator= (const TQpResidual &source);
ClassDef(TQpResidual,1) // Qp Residual class
};
#endif
|