# /home/coin/svn-release/Alps-1.4.5/Clp/src/AbcSimplex.hpp File Reference

`#include <iostream>`
`#include <cfloat>`
`#include "ClpModel.hpp"`
`#include "ClpMatrixBase.hpp"`
`#include "CoinIndexedVector.hpp"`
`#include "AbcCommon.hpp"`
`#include "ClpSolve.hpp"`
`#include "CoinAbcCommon.hpp"`
`#include "ClpSimplex.hpp"`
Include dependency graph for AbcSimplex.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Classes
struct | CoinAbcThreadInfo
class | AbcSimplex
## Defines
#define | PAN
| This solves LPs using the simplex method.
#define | TRY_ABC_GUS
#define | HEAVY_PERTURBATION 57
Functions less likely to be useful to casual user
#define | rowUseScale_ scaleFromExternal_
#define | inverseRowUseScale_ scaleToExternal_
status methods
#define | NUMBER_THREADS 3
data. Many arrays have a row part and a column part.
There is a single array with both - columns then rows and then normally two arrays pointing to rows and columns. The single array is the owner of memory
#define | startAtLowerNoOther_ maximumAbcNumberRows_
| Start of variables at lower bound with no upper.
#define | ALL_STATUS_OK 2048
| State of problem State of external arrays 2048 - status OK 4096 - row primal solution OK 8192 - row dual solution OK 16384 - column primal solution OK 32768 - column dual solution OK 65536 - Everything not going smoothly (when smooth we forget about tiny bad djs) 131072 - when increasing rows add a bit 262144 - scale matrix and create new one 524288 - do basis and order 1048576 - just status (and check if order needed) 2097152 - just solution 4194304 - just redo bounds (and offset) Bottom bits say if usefulArray in use.
#define | ROW_PRIMAL_OK 4096
| Start of variables at lower bound with no upper.
#define | ROW_DUAL_OK 8192
| Start of variables at lower bound with no upper.
#define | COLUMN_PRIMAL_OK 16384
| Start of variables at lower bound with no upper.
#define | COLUMN_DUAL_OK 32768
| Start of variables at lower bound with no upper.
#define | PESSIMISTIC 65536
| Start of variables at lower bound with no upper.
#define | ADD_A_BIT 131072
| Start of variables at lower bound with no upper.
#define | DO_SCALE_AND_MATRIX 262144
| Start of variables at lower bound with no upper.
#define | DO_BASIS_AND_ORDER 524288
| Start of variables at lower bound with no upper.
#define | DO_STATUS 1048576
| Start of variables at lower bound with no upper.
#define | DO_SOLUTION 2097152
| Start of variables at lower bound with no upper.
#define | DO_JUST_BOUNDS 0x400000
| Start of variables at lower bound with no upper.
#define | NEED_BASIS_SORT 0x800000
| Start of variables at lower bound with no upper.
#define | FAKE_SUPERBASIC 0x1000000
| Start of variables at lower bound with no upper.
#define | VALUES_PASS 0x2000000
| Start of variables at lower bound with no upper.
#define | VALUES_PASS2 0x4000000
| Start of variables at lower bound with no upper.
#define | ABC_NUMBER_USEFUL 8
| Useful arrays (all of row+column+2 length).
## Functions
void | AbcSimplexUnitTest (const std::string &mpsDir)
| A function that tests the methods in the AbcSimplex class.

## Define Documentation

#define PAN

This solves LPs using the simplex method.

It inherits from ClpModel and all its arrays are created at algorithm time. Originally I tried to work with model arrays but for simplicity of coding I changed to single arrays with structural variables then row variables. Some coding is still based on old style and needs cleaning up.

For a description of algorithms:

for dual see AbcSimplexDual.hpp and at top of AbcSimplexDual.cpp for primal see AbcSimplexPrimal.hpp and at top of AbcSimplexPrimal.cpp

There is an algorithm data member. + for primal variations and - for dual variations

Definition at line 52 of file AbcSimplex.hpp.

#define TRY_ABC_GUS

Definition at line 56 of file AbcSimplex.hpp.

#define HEAVY_PERTURBATION 57

Definition at line 57 of file AbcSimplex.hpp.

#define rowUseScale_ scaleFromExternal_

Definition at line 383 of file AbcSimplex.hpp.

#define inverseRowUseScale_ scaleToExternal_

Definition at line 384 of file AbcSimplex.hpp.

#define NUMBER_THREADS 3

Definition at line 864 of file AbcSimplex.hpp.

#define startAtLowerNoOther_ maximumAbcNumberRows_

Start of variables at lower bound with no upper.

Definition at line 1059 of file AbcSimplex.hpp.

#define ALL_STATUS_OK 2048

State of problem State of external arrays 2048 - status OK 4096 - row primal solution OK 8192 - row dual solution OK 16384 - column primal solution OK 32768 - column dual solution OK 65536 - Everything not going smoothly (when smooth we forget about tiny bad djs) 131072 - when increasing rows add a bit 262144 - scale matrix and create new one 524288 - do basis and order 1048576 - just status (and check if order needed) 2097152 - just solution 4194304 - just redo bounds (and offset) Bottom bits say if usefulArray in use.

Definition at line 1091 of file AbcSimplex.hpp.

#define ROW_PRIMAL_OK 4096

Start of variables at lower bound with no upper.

Definition at line 1092 of file AbcSimplex.hpp.

#define ROW_DUAL_OK 8192

Start of variables at lower bound with no upper.

Definition at line 1093 of file AbcSimplex.hpp.

#define COLUMN_PRIMAL_OK 16384

Start of variables at lower bound with no upper.

Definition at line 1094 of file AbcSimplex.hpp.

#define COLUMN_DUAL_OK 32768

Start of variables at lower bound with no upper.

Definition at line 1095 of file AbcSimplex.hpp.

#define PESSIMISTIC 65536

Start of variables at lower bound with no upper.

Definition at line 1096 of file AbcSimplex.hpp.

#define ADD_A_BIT 131072

Start of variables at lower bound with no upper.

Definition at line 1097 of file AbcSimplex.hpp.

#define DO_SCALE_AND_MATRIX 262144

Start of variables at lower bound with no upper.

Definition at line 1098 of file AbcSimplex.hpp.

#define DO_BASIS_AND_ORDER 524288

Start of variables at lower bound with no upper.

Definition at line 1099 of file AbcSimplex.hpp.

#define DO_STATUS 1048576

Start of variables at lower bound with no upper.

Definition at line 1100 of file AbcSimplex.hpp.

#define DO_SOLUTION 2097152

Start of variables at lower bound with no upper.

Definition at line 1101 of file AbcSimplex.hpp.

#define DO_JUST_BOUNDS 0x400000

Start of variables at lower bound with no upper.

Definition at line 1102 of file AbcSimplex.hpp.

#define NEED_BASIS_SORT 0x800000

Start of variables at lower bound with no upper.

Definition at line 1103 of file AbcSimplex.hpp.

#define FAKE_SUPERBASIC 0x1000000

Start of variables at lower bound with no upper.

Definition at line 1104 of file AbcSimplex.hpp.

#define VALUES_PASS 0x2000000

Start of variables at lower bound with no upper.

Definition at line 1105 of file AbcSimplex.hpp.

#define VALUES_PASS2 0x4000000

Start of variables at lower bound with no upper.

Definition at line 1106 of file AbcSimplex.hpp.

#define ABC_NUMBER_USEFUL 8

Useful arrays (all of row+column+2 length).

Definition at line 1239 of file AbcSimplex.hpp.

## Function Documentation

void AbcSimplexUnitTest | ( | const std::string & | mpsDir | ) |

A function that tests the methods in the AbcSimplex class.

The only reason for it not to be a member method is that this way it doesn't have to be compiled into the library. And that's a gain, because the library should be compiled with optimization on, but this method should be compiled with debugging.

It also does some testing of AbcSimplexFactorization class