- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# Idiot Class Reference

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

`#include <Idiot.hpp>`

Collaboration diagram for Idiot:

[legend]
List of all members.

## Public Member Functions
void | solve2 (CoinMessageHandler *handler, const CoinMessages *messages)
| Does actual work.
Constructors and destructor
Just a pointer to model is kept
| Idiot ()
| Default constructor.
| Idiot (OsiSolverInterface &model)
| Constructor with model.
| Idiot (const Idiot &)
| Copy constructor.
Idiot & | operator= (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
OsiSolverInterface * | model_
| 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 46 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 93 of file Idiot.hpp.

References mu_.

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

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

Definition at line 95 of file Idiot.hpp.

References mu_.

double Idiot::getWeightFactor | ( |  | ) | const`[inline]`

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

Definition at line 99 of file Idiot.hpp.

References muFactor_.

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

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

Definition at line 101 of file Idiot.hpp.

References muFactor_.

double Idiot::getFeasibilityTolerance | ( |  | ) | const`[inline]`

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

default 0.1

Definition at line 106 of file Idiot.hpp.

References smallInfeas_.

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

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

Definition at line 108 of file Idiot.hpp.

References smallInfeas_.

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

References reasonableInfeas_.

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

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

Definition at line 115 of file Idiot.hpp.

References reasonableInfeas_.

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

References exitFeasibility_.

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

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

Definition at line 121 of file Idiot.hpp.

References exitFeasibility_.

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

References majorIterations_.

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

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

Definition at line 127 of file Idiot.hpp.

References majorIterations_.

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

References maxIts2_.

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

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

Definition at line 137 of file Idiot.hpp.

References maxIts2_.

int Idiot::getMinorIterations0 | ( |  | ) | const`[inline]`

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

Definition at line 140 of file Idiot.hpp.

References maxIts_.

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

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

Definition at line 142 of file Idiot.hpp.

References maxIts_.

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

References maxBigIts_.

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

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

Definition at line 149 of file Idiot.hpp.

References maxBigIts_.

int Idiot::getLogLevel | ( |  | ) | const`[inline]`

Amount of information - default of 1 should be okay.

Definition at line 152 of file Idiot.hpp.

References logLevel_.

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

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

Definition at line 154 of file Idiot.hpp.

References logLevel_.

int Idiot::getLightweight | ( |  | ) | const`[inline]`

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

Definition at line 157 of file Idiot.hpp.

References lightWeight_.

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

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

Definition at line 159 of file Idiot.hpp.

References lightWeight_.

int Idiot::getStrategy | ( |  | ) | const`[inline]`

strategy

Definition at line 162 of file Idiot.hpp.

References strategy_.

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

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

Definition at line 164 of file Idiot.hpp.

References strategy_.

double Idiot::getDropEnoughFeasibility | ( |  | ) | const`[inline]`

Fine tuning - okay if feasibility drop this factor.

Definition at line 167 of file Idiot.hpp.

References dropEnoughFeasibility_.

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

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

Definition at line 169 of file Idiot.hpp.

References dropEnoughFeasibility_.

double Idiot::getDropEnoughWeighted | ( |  | ) | const`[inline]`

Fine tuning - okay if weighted obj drop this factor.

Definition at line 172 of file Idiot.hpp.

References dropEnoughWeighted_.

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

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

Definition at line 174 of file Idiot.hpp.

References dropEnoughWeighted_.

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

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

OsiSolverInterface* Idiot::model_`[private]`

Underlying model.

Definition at line 220 of file Idiot.hpp.

double Idiot::djTolerance_`[private]`

Definition at line 222 of file Idiot.hpp.

double Idiot::mu_`[private]`

Definition at line 223 of file Idiot.hpp.

Referenced by getStartingWeight(), and setStartingWeight().

double Idiot::drop_`[private]`

Definition at line 224 of file Idiot.hpp.

double Idiot::muFactor_`[private]`

Definition at line 225 of file Idiot.hpp.

Referenced by getWeightFactor(), and setWeightFactor().

double Idiot::stopMu_`[private]`

Definition at line 226 of file Idiot.hpp.

double Idiot::smallInfeas_`[private]`

Definition at line 227 of file Idiot.hpp.

Referenced by getFeasibilityTolerance(), and setFeasibilityTolerance().

double Idiot::reasonableInfeas_`[private]`

Definition at line 228 of file Idiot.hpp.

Referenced by getReasonablyFeasible(), and setReasonablyFeasible().

double Idiot::exitDrop_`[private]`

Definition at line 229 of file Idiot.hpp.

double Idiot::muAtExit_`[private]`

Definition at line 230 of file Idiot.hpp.

double Idiot::exitFeasibility_`[private]`

Definition at line 231 of file Idiot.hpp.

Referenced by getExitInfeasibility(), and setExitInfeasibility().

double Idiot::dropEnoughFeasibility_`[private]`

Definition at line 232 of file Idiot.hpp.

Referenced by getDropEnoughFeasibility(), and setDropEnoughFeasibility().

double Idiot::dropEnoughWeighted_`[private]`

Definition at line 233 of file Idiot.hpp.

Referenced by getDropEnoughWeighted(), and setDropEnoughWeighted().

int* Idiot::whenUsed_`[private]`

Definition at line 234 of file Idiot.hpp.

int Idiot::maxBigIts_`[private]`

Definition at line 235 of file Idiot.hpp.

Referenced by getReduceIterations(), and setReduceIterations().

int Idiot::maxIts_`[private]`

Definition at line 236 of file Idiot.hpp.

Referenced by getMinorIterations0(), and setMinorIterations0().

int Idiot::majorIterations_`[private]`

Definition at line 237 of file Idiot.hpp.

Referenced by getMajorIterations(), and setMajorIterations().

int Idiot::logLevel_`[private]`

Definition at line 238 of file Idiot.hpp.

Referenced by getLogLevel(), and setLogLevel().

int Idiot::logFreq_`[private]`

Definition at line 239 of file Idiot.hpp.

int Idiot::checkFrequency_`[private]`

Definition at line 240 of file Idiot.hpp.

int Idiot::lambdaIterations_`[private]`

Definition at line 241 of file Idiot.hpp.

int Idiot::maxIts2_`[private]`

Definition at line 242 of file Idiot.hpp.

Referenced by getMinorIterations(), and setMinorIterations().

int Idiot::strategy_`[private]`

Definition at line 243 of file Idiot.hpp.

Referenced by getStrategy(), and setStrategy().

int Idiot::lightWeight_`[private]`

Definition at line 255 of file Idiot.hpp.

Referenced by getLightweight(), and setLightweight().

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

- /home/coin/SVN-release/Blis-0.91.2/Clp/src/Idiot.hpp