#include "TVectorD.h" #include "TMatrixDSym.h" #include "TQpProbDens.h" #include "TMehrotraSolver.h" #include "TGondzioSolver.h" #include "TFile.h" void test() { TFile *f = new TFile("qp.root"); TMatrixD *A = (TMatrixD*)f->Get("A"); TMatrixD *C = (TMatrixD*)f->Get("C"); TMatrixDSym *Q = (TMatrixDSym*)f->Get("Q"); TVectorD *b = (TVectorD*)f->Get("b"); TVectorD *c = (TVectorD*)f->Get("c"); TVectorD *clo = (TVectorD*)f->Get("clo"); TVectorD *cup = (TVectorD*)f->Get("cup"); TVectorD *iclo = (TVectorD*)f->Get("iclo"); TVectorD *icup = (TVectorD*)f->Get("icup"); TVectorD *xlo = (TVectorD*)f->Get("xlo"); TVectorD *xup = (TVectorD*)f->Get("xup"); TVectorD *ixlo = (TVectorD*)f->Get("ixlo"); TVectorD *ixup = (TVectorD*)f->Get("ixup"); int size = A->GetNcols(); int nEq = A->GetNrows(); int nIneq = C->GetNrows(); TQpProbDens *qp = new TQpProbDens(size,nEq,nIneq); TQpDataDens *prob = (TQpDataDens *)qp->MakeData(*c,*Q,*xlo,*ixlo,*xup,*ixup,*A,*b,*C,*clo,*iclo,*cup,*icup); TQpVar *vars = qp->MakeVariables(prob); TQpResidual *resid = qp->MakeResiduals(prob); TMehrotraSolver *s = new TMehrotraSolver(qp,prob); int status = s->Solve(prob,vars,resid); printf("MehrotraSolver status = %d\n",status); vars->fX.Print(); //TMehrotraSolver *s1 = new TMehrotraSolver(qp,prob); //status = s1->Solve(prob,vars,resid); //printf("MehrotraSolver status = %d\n",status); TGondzioSolver *s1 = new TGondzioSolver(qp,prob); status = s1->Solve(prob,vars,resid); printf(" GondzioSolver status = %d\n",status); vars->fX.Print(); }