49 int numberPasses,
int options[6],
50 int extraInfo[6],
int independentOptions[3]);
122 return independentOptions_[0] != 0;
126 return (independentOptions_[1] & 1) == 0;
129 if (doDual_) independentOptions_[1] &= ~1;
130 else independentOptions_[1] |= 1;
134 return (independentOptions_[1] & 2) == 0;
137 if (doSingleton_) independentOptions_[1] &= ~2;
138 else independentOptions_[1] |= 2;
142 return (independentOptions_[1] & 4) == 0;
145 if (doDoubleton_) independentOptions_[1] &= ~4;
146 else independentOptions_[1] |= 4;
150 return (independentOptions_[1] & 8) == 0;
153 if (doTripleton_) independentOptions_[1] &= ~8;
154 else independentOptions_[1] |= 8;
158 return (independentOptions_[1] & 16) == 0;
161 if (doTighten_) independentOptions_[1] &= ~16;
162 else independentOptions_[1] |= 16;
166 return (independentOptions_[1] & 32) == 0;
169 if (doForcing_) independentOptions_[1] &= ~32;
170 else independentOptions_[1] |= 32;
174 return (independentOptions_[1] & 64) == 0;
177 if (doImpliedfree) independentOptions_[1] &= ~64;
178 else independentOptions_[1] |= 64;
182 return (independentOptions_[1] & 128) == 0;
185 if (doDupcol_) independentOptions_[1] &= ~128;
186 else independentOptions_[1] |= 128;
190 return (independentOptions_[1] & 256) == 0;
193 if (doDuprow_) independentOptions_[1] &= ~256;
194 else independentOptions_[1] |= 256;
198 return (independentOptions_[1] & 512) == 0;
201 if (doSingleton_) independentOptions_[1] &= ~512;
202 else independentOptions_[1] |= 512;
206 return (independentOptions_[1] & 8192) == 0;
209 if (doKill) independentOptions_[1] &= ~8192;
210 else independentOptions_[1] |= 8192;
214 return independentOptions_[1] & 0xffff;
217 independentOptions_[1] = (independentOptions_[1] & 0xffff0000) | (action & 0xffff);
221 return independentOptions_[2];
224 independentOptions_[2] = value;
227 independentOptions_[type] = value;
230 return independentOptions_[type];
256 int independentOptions_[3];
297 int cycle(
int in,
int out,
int wayIn,
int wayOut);
300 double lastObjective(
int back = 1)
const;
302 void setInfeasibility(
double value);
304 double lastInfeasibility(
int back = 1)
const;
306 int numberInfeasibilities(
int back = 1)
const;
308 void modifyObjective(
double value);
310 int lastIterationNumber(
int back = 1)
const;
312 void clearIterationNumbers();
315 oddState_ = - oddState_ - 1;
318 oddState_ = abs(oddState_);
328 return numberBadTimes_;
335 return numberReallyBadTimes_;
338 numberReallyBadTimes_++;
342 return numberTimesFlagged_;
345 numberTimesFlagged_ = 0;
348 numberTimesFlagged_++;
353 #define CLP_PROGRESS 5 362 #ifdef CLP_PROGRESS_WEIGHT 363 double objectiveWeight_[CLP_PROGRESS_WEIGHT];
366 double infeasibilityWeight_[CLP_PROGRESS_WEIGHT];
368 double realInfeasibilityWeight_[CLP_PROGRESS_WEIGHT];
374 double initialWeight_;
388 #ifdef CLP_PROGRESS_WEIGHT 389 int numberInfeasibilitiesWeight_[CLP_PROGRESS_WEIGHT];
392 int iterationNumberWeight_[CLP_PROGRESS_WEIGHT];
418 AbcSimplexProgress ( );
425 AbcSimplexProgress(
const AbcSimplexProgress &);
428 AbcSimplexProgress &
operator=(
const AbcSimplexProgress & rhs);
430 ~AbcSimplexProgress ( );
bool doSingletonColumn() const
Whether we want to do singleton column part of presolve.
This is a very simple class to guide algorithms.
bool doDupcol() const
Whether we want to do dupcol part of presolve.
void setDoSingletonColumn(bool doSingleton_)
bool doTripleton() const
Whether we want to do tripleton part of presolve.
void setIndependentOption(int type, int value)
bool doSingleton() const
Whether we want to do singleton part of presolve.
int getSpecialOption(int which) const
bool doImpliedFree() const
Whether we want to do impliedfree part of presolve.
ClpSimplex * model_
Pointer back to model so we can get information.
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...
For saving extra information to see if looping.
void newOddState()
Odd state.
bool doDuprow() const
Whether we want to do duprow part of presolve.
void generateCpp(FILE *fp)
Generates code for above constructor.
void setDoTripleton(bool doTripleton_)
void setPresolveType(PresolveType amount, int extraInfo=-1)
ClpSolve()
Default constructor.
int numberReallyBadTimes_
Number really bad times.
int getPresolvePasses() const
int reallyBadTimes() const
number of really bad times
void incrementTimesFlagged()
void setDoForcing(bool doForcing_)
This solves LPs using the simplex method.
void setDoDupcol(bool doDupcol_)
bool doKillSmall() const
Whether we want to kill small substitutions.
void setDoTighten(bool doTighten_)
SolveType
enums for solve function
void setDoDual(bool doDual_)
void setDoSingleton(bool doSingleton_)
void setSolveType(SolveType method, int extraInfo=-1)
Solve types.
void incrementReallyBadTimes()
void setDoDuprow(bool doDuprow_)
int timesFlagged() const
number of times flagged
void setDoKillSmall(bool doKill)
int presolveActions() const
Set whole group.
ClpSolve & operator=(const ClpSolve &rhs)
Assignment operator. This copies the data.
bool infeasibleReturn() const
bool doDoubleton() const
Whether we want to do doubleton part of presolve.
void setInfeasibleReturn(bool trueFalse)
Say to return at once if infeasible, default is to solve.
int numberTimesFlagged_
Number of times no iterations as flagged.
bool doTighten() const
Whether we want to do tighten part of presolve.
int oddState_
If things are in an odd state.
int badTimes() const
number of bad times
void setDoImpliedFree(bool doImpliedfree)
int independentOption(int type) const
void setPresolveActions(int action)
void setDoDoubleton(bool doDoubleton_)
bool doForcing() const
Whether we want to do forcing part of presolve.
PresolveType getPresolveType()
bool doDual() const
Whether we want to do dual part of presolve.
int numberBadTimes_
Number of times it looked like loop.
void setSubstitution(int value)
int substitution() const
Largest column for substitution (normally 3)
int getExtraInfo(int which) const
Extra info for idiot (or sprint)