48 int numberPasses,
int options[6],
49 int extraInfo[6],
int independentOptions[3]);
344 int cycle(
int in,
int out,
int wayIn,
int wayOut);
411#define CLP_PROGRESS 5
420#ifdef CLP_PROGRESS_WEIGHT
422 double objectiveWeight_[CLP_PROGRESS_WEIGHT];
424 double infeasibilityWeight_[CLP_PROGRESS_WEIGHT];
426 double realInfeasibilityWeight_[CLP_PROGRESS_WEIGHT];
446#ifdef CLP_PROGRESS_WEIGHT
448 int numberInfeasibilitiesWeight_[CLP_PROGRESS_WEIGHT];
450 int iterationNumberWeight_[CLP_PROGRESS_WEIGHT];
475 AbcSimplexProgress();
481 AbcSimplexProgress(
const AbcSimplexProgress &);
484 AbcSimplexProgress &
operator=(
const AbcSimplexProgress &rhs);
486 ~AbcSimplexProgress();
For saving extra information to see if looping.
double realInfeasibility_[CLP_PROGRESS]
Sum of real primal infeasibilities for primal.
int numberTimes_
Number of times checked (so won't stop too early)
int oddState_
If things are in an odd state.
void reset()
Resets as much as possible.
void fillFromModel(ClpSimplex *model)
Fill from model.
void newOddState()
Odd state.
void startCheck()
Start check at beginning of whileIterating.
int numberInfeasibilities(int back=1) const
Returns number of primal infeasibilities (if -1) - current if (0)
int numberReallyBadTimes_
Number really bad times.
void modifyObjective(double value)
Modify objective e.g. if dual infeasible in dual.
int badTimes() const
number of bad times
void setInfeasibility(double value)
Set real primal infeasibility and move back.
double initialWeight_
Initial weight for weights.
double infeasibility_[CLP_PROGRESS]
Sum of infeasibilities for algorithm.
double lastInfeasibility(int back=1) const
Returns real primal infeasibility (if -1) - current if (0)
void clearIterationNumbers()
clears all iteration numbers (to switch off panic)
int reallyBadTimes() const
number of really bad times
int lastIterationNumber(int back=1) const
Returns previous iteration number (if -1) - current if (0)
int in_[CLP_CYCLE]
For cycle checking.
void incrementTimesFlagged()
int numberInfeasibilities_[CLP_PROGRESS]
Number of infeasibilities.
int looping()
Returns -1 if okay, -n+1 (n number of times bad) if bad but action taken, >=0 if give up and use as p...
double lastObjective(int back=1) const
Returns previous objective (if -1) - current if (0)
int cycle(int in, int out, int wayIn, int wayOut)
Returns cycle length in whileIterating.
ClpSimplex * model_
Pointer back to model so we can get information.
int iterationNumber_[CLP_PROGRESS]
Iteration number at which occurred.
int timesFlagged() const
number of times flagged
ClpSimplexProgress & operator=(const ClpSimplexProgress &rhs)
Assignment operator. This copies the data.
~ClpSimplexProgress()
Destructor.
double objective_[CLP_PROGRESS]
Objective values.
int numberBadTimes_
Number of times it looked like loop.
ClpSimplexProgress(const ClpSimplexProgress &)
Copy constructor.
ClpSimplexProgress()
Default constructor.
ClpSimplexProgress(ClpSimplex *model)
Constructor from model.
int numberTimesFlagged_
Number of times no iterations as flagged.
void incrementReallyBadTimes()
This solves LPs using the simplex method.
This is a very simple class to guide algorithms.
int independentOptions_[3]
Extra algorithm dependent options 0 - if set return from clpsolve if infeasible 1 - To be copied over...
void setDoForcing(bool doForcing_)
void setDoDual(bool doDual_)
int extraInfo_[7]
Extra information.
ClpSolve(SolveType method, PresolveType presolveType, int numberPasses, int options[6], int extraInfo[6], int independentOptions[3])
Constructor when you really know what you are doing.
bool doSingletonColumn() const
Whether we want to do singleton column part of presolve.
int getExtraInfo(int which) const
Extra info for idiot (or sprint)
void setDoSingletonColumn(bool doSingleton_)
bool doDupcol() const
Whether we want to do dupcol part of presolve.
void setInfeasibleReturn(bool trueFalse)
Say to return at once if infeasible, default is to solve.
bool doTripleton() const
Whether we want to do tripleton part of presolve.
SolveType
enums for solve function
void setDoDuprow(bool doDuprow_)
PresolveType presolveType_
Presolve type.
bool doTighten() const
Whether we want to do tighten part of presolve.
int independentOption(int type) const
ClpSolve & operator=(const ClpSolve &rhs)
Assignment operator. This copies the data.
int numberPasses_
Amount of presolve.
ClpSolve(const ClpSolve &)
Copy constructor.
int substitution() const
Largest column for substitution (normally 3)
void setPresolveActions(int action)
int presolveActions() const
Set whole group.
SolveType method_
Solve type.
bool doForcing() const
Whether we want to do forcing part of presolve.
void setSolveType(SolveType method, int extraInfo=-1)
Solve types.
int getPresolvePasses() const
void setSubstitution(int value)
bool doImpliedFree() const
Whether we want to do impliedfree part of presolve.
bool doDual() const
Whether we want to do dual part of presolve.
void setIndependentOption(int type, int value)
void generateCpp(FILE *fp)
Generates code for above constructor.
int getSpecialOption(int which) const
bool doKillSmall() const
Whether we want to kill small substitutions.
void setDoImpliedFree(bool doImpliedfree)
void setDoTripleton(bool doTripleton_)
void setDoDupcol(bool doDupcol_)
int options_[7]
Options - last is switch for OsiClp.
bool doSingleton() const
Whether we want to do singleton part of presolve.
bool doDuprow() const
Whether we want to do duprow part of presolve.
void setDoDoubleton(bool doDoubleton_)
bool doDoubleton() const
Whether we want to do doubleton part of presolve.
PresolveType getPresolveType()
void setDoSingleton(bool doSingleton_)
void setSpecialOption(int which, int value, int extraInfo=-1)
Special options - bits 0 4 - use crash (default allslack in dual, idiot in primal) 8 - all slack basi...
void setDoTighten(bool doTighten_)
void setDoKillSmall(bool doKill)
void setPresolveType(PresolveType amount, int extraInfo=-1)
bool infeasibleReturn() const
ClpSolve()
Default constructor.