Idiot Class Reference

This class implements a very silly algorithm. More...

#include <Idiot.hpp>

Collaboration diagram for Idiot:
Collaboration graph
[legend]

List of all members.

Public Member Functions

void solve2 (CoinMessageHandler *handler, const CoinMessages *messages)
 Stuff for internal use.
Constructors and destructor

Just a pointer to model is kept



 Idiot ()
 Default constructor.
 Idiot (OsiSolverInterface &model)
 Constructor with model.
 Idiot (const Idiot &)
 Copy constructor.
Idiotoperator= (const Idiot &rhs)
 Assignment operator. This copies the data.
 ~Idiot ()
 Destructor.
Algorithmic calls



void solve ()
 Get an approximate solution with the idiot code.
void crash (int numberPass, CoinMessageHandler *handler, const CoinMessages *messages)
 Lightweight "crash".
void crossOver (int mode)
 Use simplex to get an optimal solution mode is how many steps the simplex crossover should take to arrive to an extreme point: 0 - chosen,all ever used, all 1 - chosen, all 2 - all 3 - do not do anything - maybe basis + 16 do presolves.
Gets and sets of most useful data



double getStartingWeight () const
 Starting weight - small emphasizes feasibility, default 1.0e-4.
void setStartingWeight (double value)
 Starting weight - small emphasizes feasibility, default 1.0e-4.
double getWeightFactor () const
 Weight factor - weight multiplied by this when changes, default 0.333.
void setWeightFactor (double value)
 Starting weight - small emphasizes feasibility, default 1.0e-4.
double getFeasibilityTolerance () const
 Feasibility tolerance - problem essentially feasible if individual infeasibilities less than this.
void setFeasibilityTolerance (double value)
 Starting weight - small emphasizes feasibility, default 1.0e-4.
double getReasonablyFeasible () const
 Reasonably feasible.
void setReasonablyFeasible (double value)
 Starting weight - small emphasizes feasibility, default 1.0e-4.
double getExitInfeasibility () const
 Exit infeasibility - exit if sum of infeasibilities less than this.
void setExitInfeasibility (double value)
 Starting weight - small emphasizes feasibility, default 1.0e-4.
int getMajorIterations () const
 Major iterations.
void setMajorIterations (int value)
 Starting weight - small emphasizes feasibility, default 1.0e-4.
int getMinorIterations () const
 Minor iterations.
void setMinorIterations (int value)
 Starting weight - small emphasizes feasibility, default 1.0e-4.
int getMinorIterations0 () const
 Starting weight - small emphasizes feasibility, default 1.0e-4.
void setMinorIterations0 (int value)
 Starting weight - small emphasizes feasibility, default 1.0e-4.
int getReduceIterations () const
 Reduce weight after this many major iterations.
void setReduceIterations (int value)
 Starting weight - small emphasizes feasibility, default 1.0e-4.
int getLogLevel () const
 Amount of information - default of 1 should be okay.
void setLogLevel (int value)
 Starting weight - small emphasizes feasibility, default 1.0e-4.
int getLightweight () const
 How lightweight - 0 not, 1 yes, 2 very lightweight.
void setLightweight (int value)
 Starting weight - small emphasizes feasibility, default 1.0e-4.
int getStrategy () const
 strategy
void setStrategy (int value)
 Starting weight - small emphasizes feasibility, default 1.0e-4.
double getDropEnoughFeasibility () const
 Fine tuning - okay if feasibility drop this factor.
void setDropEnoughFeasibility (double value)
 Starting weight - small emphasizes feasibility, default 1.0e-4.
double getDropEnoughWeighted () const
 Fine tuning - okay if weighted obj drop this factor.
void setDropEnoughWeighted (double value)
 Starting weight - small emphasizes feasibility, default 1.0e-4.

Private Member Functions

IdiotResult IdiSolve (int nrows, int ncols, double *rowsol, double *colsol, double *pi, double *djs, const double *origcost, double *rowlower, double *rowupper, const double *lower, const double *upper, const double *element, const int *row, const CoinBigIndex *colcc, const int *length, double *lambda, int maxIts, double mu, double drop, double maxmin, double offset, int strategy, double djTol, double djExit, double djFlag, CoinThreadRandom *randomNumberGenerator)
int dropping (IdiotResult result, double tolerance, double small, int *nbad)
IdiotResult objval (int nrows, int ncols, double *rowsol, double *colsol, double *pi, double *djs, const double *cost, const double *rowlower, const double *rowupper, const double *lower, const double *upper, const double *elemnt, const int *row, const CoinBigIndex *columnStart, const int *length, int extraBlock, int *rowExtra, double *solExtra, double *elemExtra, double *upperExtra, double *costExtra, double weight)
int cleanIteration (int iteration, int ordinaryStart, int ordinaryEnd, double *colsol, const double *lower, const double *upper, const double *rowLower, const double *rowUpper, const double *cost, const double *element, double fixTolerance, double &objChange, double &infChange)

Private Attributes

OsiSolverInterfacemodel_
 Underlying model.
double djTolerance_
double mu_
double drop_
double muFactor_
double stopMu_
double smallInfeas_
double reasonableInfeas_
double exitDrop_
double muAtExit_
double exitFeasibility_
double dropEnoughFeasibility_
double dropEnoughWeighted_
int * whenUsed_
int maxBigIts_
int maxIts_
int majorIterations_
int logLevel_
int logFreq_
int checkFrequency_
int lambdaIterations_
int maxIts2_
int strategy_
int lightWeight_

Detailed Description

This class implements a very silly algorithm.

It has no merit apart from the fact that it gets an approximate solution to some classes of problems. Better if vaguely homogeneous. It works on problems where volume algorithm works and often gets a better primal solution but it has no dual solution.

It can also be used as a "crash" to get a problem started. This is probably its most useful function.

It is based on the idea that algorithms with terrible convergence properties may be okay at first. Throw in some random dubious tricks and the resulting code may be worth keeping as long as you don't look at it.

Definition at line 45 of file Idiot.hpp.


Constructor & Destructor Documentation

Idiot::Idiot (  ) 

Default constructor.

Idiot::Idiot ( OsiSolverInterface model  ) 

Constructor with model.

Idiot::Idiot ( const Idiot  ) 

Copy constructor.

Idiot::~Idiot (  ) 

Destructor.


Member Function Documentation

Idiot& Idiot::operator= ( const Idiot rhs  ) 

Assignment operator. This copies the data.

void Idiot::solve (  ) 

Get an approximate solution with the idiot code.

void Idiot::crash ( int  numberPass,
CoinMessageHandler handler,
const CoinMessages messages 
)

Lightweight "crash".

void Idiot::crossOver ( int  mode  ) 

Use simplex to get an optimal solution mode is how many steps the simplex crossover should take to arrive to an extreme point: 0 - chosen,all ever used, all 1 - chosen, all 2 - all 3 - do not do anything - maybe basis + 16 do presolves.

double Idiot::getStartingWeight (  )  const [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 92 of file Idiot.hpp.

void Idiot::setStartingWeight ( double  value  )  [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 94 of file Idiot.hpp.

double Idiot::getWeightFactor (  )  const [inline]

Weight factor - weight multiplied by this when changes, default 0.333.

Definition at line 98 of file Idiot.hpp.

void Idiot::setWeightFactor ( double  value  )  [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 100 of file Idiot.hpp.

double Idiot::getFeasibilityTolerance (  )  const [inline]

Feasibility tolerance - problem essentially feasible if individual infeasibilities less than this.

default 0.1

Definition at line 105 of file Idiot.hpp.

void Idiot::setFeasibilityTolerance ( double  value  )  [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 107 of file Idiot.hpp.

double Idiot::getReasonablyFeasible (  )  const [inline]

Reasonably feasible.

Dubious method concentrates more on objective when sum of infeasibilities less than this. Very dubious default value of (Number of rows)/20

Definition at line 112 of file Idiot.hpp.

void Idiot::setReasonablyFeasible ( double  value  )  [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 114 of file Idiot.hpp.

double Idiot::getExitInfeasibility (  )  const [inline]

Exit infeasibility - exit if sum of infeasibilities less than this.

Default -1.0 (i.e. switched off)

Definition at line 118 of file Idiot.hpp.

void Idiot::setExitInfeasibility ( double  value  )  [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 120 of file Idiot.hpp.

int Idiot::getMajorIterations (  )  const [inline]

Major iterations.

stop after this number. Default 30. Use 2-5 for "crash" 50-100 for serious crunching

Definition at line 124 of file Idiot.hpp.

void Idiot::setMajorIterations ( int  value  )  [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 126 of file Idiot.hpp.

int Idiot::getMinorIterations (  )  const [inline]

Minor iterations.

Do this number of tiny steps before deciding whether to change weights etc. Default - dubious sqrt(Number of Rows). Good numbers 105 to 405 say (5 is dubious method of making sure idiot is not trying to be clever which it may do every 10 minor iterations)

Definition at line 134 of file Idiot.hpp.

void Idiot::setMinorIterations ( int  value  )  [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 136 of file Idiot.hpp.

int Idiot::getMinorIterations0 (  )  const [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 139 of file Idiot.hpp.

void Idiot::setMinorIterations0 ( int  value  )  [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 141 of file Idiot.hpp.

int Idiot::getReduceIterations (  )  const [inline]

Reduce weight after this many major iterations.

It may get reduced before this but this is a maximum. Default 3. 3-10 plausible.

Definition at line 146 of file Idiot.hpp.

void Idiot::setReduceIterations ( int  value  )  [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 148 of file Idiot.hpp.

int Idiot::getLogLevel (  )  const [inline]

Amount of information - default of 1 should be okay.

Definition at line 151 of file Idiot.hpp.

void Idiot::setLogLevel ( int  value  )  [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 153 of file Idiot.hpp.

int Idiot::getLightweight (  )  const [inline]

How lightweight - 0 not, 1 yes, 2 very lightweight.

Definition at line 156 of file Idiot.hpp.

void Idiot::setLightweight ( int  value  )  [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 158 of file Idiot.hpp.

int Idiot::getStrategy (  )  const [inline]

strategy

Definition at line 161 of file Idiot.hpp.

void Idiot::setStrategy ( int  value  )  [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 163 of file Idiot.hpp.

double Idiot::getDropEnoughFeasibility (  )  const [inline]

Fine tuning - okay if feasibility drop this factor.

Definition at line 166 of file Idiot.hpp.

void Idiot::setDropEnoughFeasibility ( double  value  )  [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 168 of file Idiot.hpp.

double Idiot::getDropEnoughWeighted (  )  const [inline]

Fine tuning - okay if weighted obj drop this factor.

Definition at line 171 of file Idiot.hpp.

void Idiot::setDropEnoughWeighted ( double  value  )  [inline]

Starting weight - small emphasizes feasibility, default 1.0e-4.

Definition at line 173 of file Idiot.hpp.

void Idiot::solve2 ( CoinMessageHandler handler,
const CoinMessages messages 
)

Stuff for internal use.

Does actual work

IdiotResult Idiot::IdiSolve ( int  nrows,
int  ncols,
double *  rowsol,
double *  colsol,
double *  pi,
double *  djs,
const double *  origcost,
double *  rowlower,
double *  rowupper,
const double *  lower,
const double *  upper,
const double *  element,
const int *  row,
const CoinBigIndex colcc,
const int *  length,
double *  lambda,
int  maxIts,
double  mu,
double  drop,
double  maxmin,
double  offset,
int  strategy,
double  djTol,
double  djExit,
double  djFlag,
CoinThreadRandom randomNumberGenerator 
) [private]
int Idiot::dropping ( IdiotResult  result,
double  tolerance,
double  small,
int *  nbad 
) [private]
IdiotResult Idiot::objval ( int  nrows,
int  ncols,
double *  rowsol,
double *  colsol,
double *  pi,
double *  djs,
const double *  cost,
const double *  rowlower,
const double *  rowupper,
const double *  lower,
const double *  upper,
const double *  elemnt,
const int *  row,
const CoinBigIndex columnStart,
const int *  length,
int  extraBlock,
int *  rowExtra,
double *  solExtra,
double *  elemExtra,
double *  upperExtra,
double *  costExtra,
double  weight 
) [private]
int Idiot::cleanIteration ( int  iteration,
int  ordinaryStart,
int  ordinaryEnd,
double *  colsol,
const double *  lower,
const double *  upper,
const double *  rowLower,
const double *  rowUpper,
const double *  cost,
const double *  element,
double  fixTolerance,
double &  objChange,
double &  infChange 
) [private]

Member Data Documentation

Underlying model.

Definition at line 219 of file Idiot.hpp.

double Idiot::djTolerance_ [private]

Definition at line 221 of file Idiot.hpp.

double Idiot::mu_ [private]

Definition at line 222 of file Idiot.hpp.

double Idiot::drop_ [private]

Definition at line 223 of file Idiot.hpp.

double Idiot::muFactor_ [private]

Definition at line 224 of file Idiot.hpp.

double Idiot::stopMu_ [private]

Definition at line 225 of file Idiot.hpp.

double Idiot::smallInfeas_ [private]

Definition at line 226 of file Idiot.hpp.

double Idiot::reasonableInfeas_ [private]

Definition at line 227 of file Idiot.hpp.

double Idiot::exitDrop_ [private]

Definition at line 228 of file Idiot.hpp.

double Idiot::muAtExit_ [private]

Definition at line 229 of file Idiot.hpp.

double Idiot::exitFeasibility_ [private]

Definition at line 230 of file Idiot.hpp.

Definition at line 231 of file Idiot.hpp.

double Idiot::dropEnoughWeighted_ [private]

Definition at line 232 of file Idiot.hpp.

int* Idiot::whenUsed_ [private]

Definition at line 233 of file Idiot.hpp.

int Idiot::maxBigIts_ [private]

Definition at line 234 of file Idiot.hpp.

int Idiot::maxIts_ [private]

Definition at line 235 of file Idiot.hpp.

int Idiot::majorIterations_ [private]

Definition at line 236 of file Idiot.hpp.

int Idiot::logLevel_ [private]

Definition at line 237 of file Idiot.hpp.

int Idiot::logFreq_ [private]

Definition at line 238 of file Idiot.hpp.

int Idiot::checkFrequency_ [private]

Definition at line 239 of file Idiot.hpp.

int Idiot::lambdaIterations_ [private]

Definition at line 240 of file Idiot.hpp.

int Idiot::maxIts2_ [private]

Definition at line 241 of file Idiot.hpp.

int Idiot::strategy_ [private]

Definition at line 242 of file Idiot.hpp.

int Idiot::lightWeight_ [private]

Definition at line 254 of file Idiot.hpp.


The documentation for this class was generated from the following file:

Generated on 15 Mar 2015 for Coin-All by  doxygen 1.6.1