194      Int_t stopCorrections     = 0;
 
  199         std::cout << 
"**** Entering the correction loop ****" << std::endl;
 
  202      alpha < 1.0 && !stopCorrections) {
 
  209         if (alpha_target > 1.0) alpha_target = 1.0;
 
  230         if (alpha_enhanced == 1.0) {
 
  232            alpha = alpha_enhanced;
 
  236         else if(alpha_enhanced >= (1.0+
fAcceptTol)*alpha) {
 
  241            alpha = alpha_enhanced;
 
  284         std::cout << std::endl << 
"Duality Gap: " << resid->
GetDualityGap() << std::endl;
 
  287               << 
" alpha = " << alpha << std::endl;
 
  289         std::cout << 
" *** Iteration " << i << 
" *** " << std::endl;
 
  290         std::cout << 
" mu = " << mu << 
" relative residual norm = " 
  297               std::cout << std::endl
 
  298                  << 
" *** SUCCESSFUL TERMINATION ***" 
  302               std::cout << std::endl
 
  303                  << 
" *** MAXIMUM ITERATIONS REACHED *** " << std::endl;
 
  306               std::cout << std::endl
 
  307                  << 
" *** TERMINATION: PROBABLY INFEASIBLE *** " 
  311               std::cout << std::endl
 
  312                  << 
" *** TERMINATION: STATUS UNKNOWN *** " << std::endl;
 
  317         std::cout << 
" *** sigma = " << 
sigma << std::endl;
 
  339   if (
this != &source) {
 
@ kSUCCESSFUL_TERMINATION
 
Derived class of TQpSolverBase implementing Gondzio-correction version of Mehrotra's original predict...
 
Int_t fMaximum_correctors
 
Int_t fNumberGondzioCorrections
 
TGondzioSolver()
Default constructor.
 
Int_t Solve(TQpDataBase *prob, TQpVar *iterate, TQpResidual *resid) override
Solve the quadratic programming problem as formulated through prob, store the final solution in itera...
 
void DefMonitor(TQpDataBase *data, TQpVar *vars, TQpResidual *resids, Double_t alpha, Double_t sigma, Int_t i, Double_t mu, Int_t status_code, Int_t level) override
Print information about the optimization process and monitor the convergence status of thye algorithm...
 
~TGondzioSolver() override
Deconstructor.
 
TGondzioSolver & operator=(const TGondzioSolver &source)
Assignment operator.
 
TQpResidual * fCorrector_resid
 
Data for the general QP formulation.
 
virtual Double_t DataNorm()=0
 
virtual void Solve(TQpDataBase *prob, TQpVar *vars, TQpResidual *resids, TQpVar *step)
Solves the system for a given set of residuals.
 
virtual void Factor(TQpDataBase *prob, TQpVar *vars)
Sets up the matrix for the main linear system in "augmented system" form.
 
default general problem formulation:
 
virtual TQpLinSolverBase * MakeLinSys(const TQpDataBase *data)=0
 
virtual TQpResidual * MakeResiduals(const TQpDataBase *data)=0
 
virtual TQpVar * MakeVariables(const TQpDataBase *data)=0
 
The Residuals class calculates and stores the quantities that appear on the right-hand side of the li...
 
void Clear_r1r2()
set the noncomplementarity components of the residual (the terms arising from the linear equalities i...
 
Double_t GetResidualNorm()
 
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...
 
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...
 
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...
 
The Solver class contains methods for monitoring and checking the convergence status of the algorithm...
 
virtual void Start(TQpProbBase *formulation, TQpVar *iterate, TQpDataBase *prob, TQpResidual *resid, TQpVar *step)
Implements a default starting-point heuristic.
 
virtual void DoMonitor(TQpDataBase *data, TQpVar *vars, TQpResidual *resids, Double_t alpha, Double_t sigma, Int_t i, Double_t mu, Int_t stop_code, Int_t level)
Monitor progress / convergence aat each interior-point iteration.
 
virtual Int_t DoStatus(TQpDataBase *data, TQpVar *vars, TQpResidual *resids, Int_t i, Double_t mu, Int_t level)
Tests for termination.
 
virtual Double_t FinalStepLength(TQpVar *iterate, TQpVar *step)
Implements a version of Mehrotra starting point heuristic, modified to ensure identical steps in the ...
 
TQpSolverBase & operator=(const TQpSolverBase &source)
Assignment operator.
 
Class containing the variables for the general QP formulation.
 
virtual void Negate()
Perform a "negate" operation on all data vectors : x = -x.
 
virtual void Saxpy(TQpVar *b, Double_t alpha)
Perform a "saxpy" operation on all data vectors : x += alpha*y.
 
int iterate(rng_state_t *X)
 
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Returns x raised to the power y.