147 iterate->ShiftBoundVariables(shift,shift);
186 iterate->ShiftBoundVariables(shift,shift);
192 const Double_t delta = 0.5*
iterate->fNComplementaryVariables*mutemp/xsnorm;
193 iterate->ShiftBoundVariables(delta,delta);
210 iterate->InteriorPoint(bigstart,bigstart);
222 const Double_t maxAlpha =
iterate->FindBlocking(step,primalValue,primalStep,
223 dualValue,dualStep,firstOrSecond);
229 switch (firstOrSecond) {
234 alpha = (-primalValue+mufull/(dualValue+maxAlpha*dualStep))/primalStep;
237 alpha = (-dualValue+mufull/(primalValue+maxAlpha*primalStep))/dualStep;
271 return this->
DefStatus(data,vars,resids,i,mu,level);
287 if (idx < 0 ) idx = 0;
332 if (
this != &source) {
@ kSUCCESSFUL_TERMINATION
Mother of all ROOT objects.
TObject & operator=(const TObject &rhs)
TObject assignment operator.
Data for the general QP formulation.
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:
The Residuals class calculates and stores the quantities that appear on the right-hand side of the li...
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.
The Solver class contains methods for monitoring and checking the convergence status of the algorithm...
virtual void DumbStart(TQpProbBase *formulation, TQpVar *iterate, TQpDataBase *prob, TQpResidual *resid, TQpVar *step)
Alternative starting point heuristic: sets the "complementary" variables to a large positive value (b...
Double_t * fPhi_min_history
virtual void DefStart(TQpProbBase *formulation, TQpVar *iterate, TQpDataBase *prob, TQpResidual *resid, TQpVar *step)
Default starting point.
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.
TQpSolverBase()
Default constructor.
virtual void DefMonitor(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)=0
virtual Int_t DoStatus(TQpDataBase *data, TQpVar *vars, TQpResidual *resids, Int_t i, Double_t mu, Int_t level)
Tests for termination.
virtual Int_t DefStatus(TQpDataBase *data, TQpVar *vars, TQpResidual *resids, Int_t i, Double_t mu, Int_t level)
Default status method.
virtual Double_t FinalStepLength(TQpVar *iterate, TQpVar *step)
Implements a version of Mehrotra starting point heuristic, modified to ensure identical steps in the ...
Double_t * fRnorm_history
virtual ~TQpSolverBase()
Deconstructor.
TQpSolverBase & operator=(const TQpSolverBase &source)
Assignment operator.
virtual void SteveStart(TQpProbBase *formulation, TQpVar *iterate, TQpDataBase *prob, TQpResidual *resid, TQpVar *step)
Starting point algoritm according to Stephen Wright.
Class containing the variables for the general QP formulation.
virtual void Negate()
Perform a "negate" operation on all data vectors : x = -x.
int iterate(rng_state_t *X)
Double_t Sqrt(Double_t x)