# Messages

Some of the more common messages and codes passed by CLP are listed in the tables below. This is list is not meant to exhaustive. The notation is as for printf from "C":

- `%s` is a string

- `%d` is an integer

- `%g` or `%f` is a floating point value

## COIN Messages passed at or above logging level 1

Code | Area |  | Text and notes
1 | MPSREAD |  | `At line %d %s`
| This just prints out NAME line, ROW line, etc
2 | MPSREAD |  | `Problem %s has %d rows, %d columns and %d elements`
| This gives statistics after reading an MPS file
8 | MPSREAD |  | `%s read with %d errors`
| This gives error statistics for file
505 | PRESOLVE |  | `Presolved poblem not optimal, resolve after postsolve`
| This could be because it was not feasible or because of maximum iterations. If this message occurs then consider using primal clean up
506 | PRESOLVE |  | `Presolve %d (%d) rows, %d (%d) columns and %d (%d) elements`
| The first number is the number after presolve and the number in parentheses is amount of reduction
510 | PRESOLVE |  | `Presolve is modifying %d integer bounds and re-presolving`
| If presolve determines at the end that an integer variable have its bounds changed then it will repeat the entrire presolve
511 | PRESOLVE |  | `After Postsolve, objective %g, infeasibilities - dual %g (%d), primal %g (%d)`
| This gives the state after postsolve - this gives the objective value and the sum of dual and primal infeasibilities with the number of infeasibilities in parentheses. Hopefully these should be zero
512 | PRESOLVE |  | `Presolved model was optimal, full model needs cleaning up`
| If the numbers in previous message (511) were large then maybe we need to know, if small then that's life

## CLP Messages passed at or above logging level 1

Code | Area |  | Text and notes
0 | SIMPLEX |  | `Optimal - objective value %g`
| The only message you want to see
| 1 | SIMPLEX |  | `Primal infeasible - objective value %g`
| You may need to look at previous messages or use methods. Such as sumPrimalInfeasibilities() to find cause
2 | SIMPLEX |  | `Dual infeasible - objective value %g`
| You may need to look at previous messages or use methods. Such as sumDualInfeasibilities() to find cause
3 | SIMPLEX |  | `Stopped - objective value %g`
| The algorithm stopped as requested by the user.
4 | SIMPLEX |  | `Stopped due to errors - objective value %g`
| Switch on log level 2 to see information on size of elements etc. If they look reasonable then maybe we need to know.
5 | SIMPLEX |  | `%d Obj %g Primal inf %g (%d) Dual inf %g (%d)`
| At each re-factorization this gives the number of iterations and the value of the objective function. If there are primal infeasibilities then the sum and number are given and similarly for dual infeasibilities. (This is a simplified form of message.)
14 | SIMPLEX |  | `Perturbing problem by %g % of %g`
| There is more to this message but if the user sees this then s/he has chosen to perturb the problem or the algorithm has decided to do so. If the numbers look too large the user may wish to think again.
19 | SIMPLEX |  | `%d variables/rows fixed as scaled bounds too close`
| If this occurs look carefully at your input data
24 | SIMPLEX |  | `Matrix will be packed to eliminate small elements`
| If this occurs the user should look carefully at data.
26 | SIMPLEX |  | `Matrix will be packed to eliminate %d duplicate elements`
| If this occurs the user should look carefully at data.
28 | SIMPLEX |  | `Crash put %d variables in basis, %d dual infeasibilities`
29 | SIMPLEX |  | `End of values pass after %d iterations`
| ??? If primal(1) or dual(1) the a sweep through model is made and this signals end of pass.

## COIN Messages passed at or above logging level 0

Code | Area |  | Text and notes
3001 | MPSREAD |  | `Illegal value for %s of %g`
| String will be "infinity" if setInfinity passed bad value, or "default integer bound" if setDefaultBound passed bad value.
3002 | MPSREAD |  | `Bad image at line %d < %s >`
| This gives line number and the offending line
3003 | MPSREAD |  | `Duplicate objective at line %d < %s >`
| An objective row appears twice in one column
3004 | MPSREAD |  | `Duplicate row %s at line %d %s`
| The named row appears twice in one column.
3005 | MPSREAD |  | `No match for row %s at line %d < %s >`
| The named row did not appear in ROWS section.
3006 | MPSREAD |  | `No match for column at line %d < %s >`
| The named column (in BOUNDS section) did not appear in COLUMNS section.
6001 | MPSREAD |  | `Unable to open mps input file %s`
6002 | MPSREAD |  | `Unknown image %s at line %d of file %s`
| The Mps reader could not make sense of the image file specified.
6003 | MPSREAD |  | `Consider the possibility of a compressed file which zlib is unable to read.`
| Some .gz files can not be read by zlib. Using gunzip and then gzip normally cures problem.
6004 | MPSREAD |  | `EOF on file %s`
| The Mps reader did not find expected section marker.
6005 | MPSREAD |  | `Returning as too many errors`
| The reader has put out 100 messages and is giving up.
507 | PRESOLVE |  | `Presolve determined that the problem is infeasible with tolerance of %g`
| If you want you can try with a larger tolerance
508 | PRESOLVE |  | `Presolve thinks problem is unbounded`
| Perhaps the user should maximize if initially minimizing or vice versa.
509 | PRESOLVE |  | `Presolve thinks problem is infeasible AND unbounded???`
| If you get this message we want to know

## CLP Messages passed at or above logging level 0

Code | Area |  | Text and notes
3002 | SIMPLEX |  | `Not solving empty problem - %d rows, %d columns and %d elements`
| Test problem size before solving.
6002 | SIMPLEX |  | `%d bad bound pairs or bad objectives were found`
| Either the value in the objective was too large or a lower bound was greater than an upper bound.
6003 | SIMPLEX |  | `Matrix has %d large values, first at column %d, row %d is %g`
| Some of the values in matrix are ridiculous.
6004 | SIMPLEX |  | `Can't get out of loop ...`

There are also messages available at log level 2 (the most likely useful relate to scaling), and will be addressed in a future version of this User Guide.