Clp trunk
Public Member Functions
Idiot Class Reference

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

#include <Idiot.hpp>

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

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 48 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,
bool  doCrossover = true 
)

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 96 of file Idiot.hpp.

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

Definition at line 99 of file Idiot.hpp.

double Idiot::getWeightFactor ( ) const [inline]

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

Definition at line 104 of file Idiot.hpp.

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

Definition at line 107 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 113 of file Idiot.hpp.

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

Definition at line 116 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 122 of file Idiot.hpp.

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

Definition at line 125 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 130 of file Idiot.hpp.

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

Definition at line 133 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 138 of file Idiot.hpp.

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

Definition at line 141 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 150 of file Idiot.hpp.

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

Definition at line 153 of file Idiot.hpp.

int Idiot::getMinorIterations0 ( ) const [inline]

Definition at line 157 of file Idiot.hpp.

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

Definition at line 160 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 166 of file Idiot.hpp.

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

Definition at line 169 of file Idiot.hpp.

int Idiot::getLogLevel ( ) const [inline]

Amount of information - default of 1 should be okay.

Definition at line 173 of file Idiot.hpp.

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

Definition at line 176 of file Idiot.hpp.

int Idiot::getLightweight ( ) const [inline]

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

Definition at line 180 of file Idiot.hpp.

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

Definition at line 183 of file Idiot.hpp.

int Idiot::getStrategy ( ) const [inline]

strategy

Definition at line 187 of file Idiot.hpp.

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

Definition at line 190 of file Idiot.hpp.

double Idiot::getDropEnoughFeasibility ( ) const [inline]

Fine tuning - okay if feasibility drop this factor.

Definition at line 194 of file Idiot.hpp.

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

Definition at line 197 of file Idiot.hpp.

double Idiot::getDropEnoughWeighted ( ) const [inline]

Fine tuning - okay if weighted obj drop this factor.

Definition at line 201 of file Idiot.hpp.

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

Definition at line 204 of file Idiot.hpp.

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

Stuff for internal use.

Does actual work


The documentation for this class was generated from the following file:
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines