# 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
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
#define | ROW_DUAL_OK 8192
#define | COLUMN_PRIMAL_OK 16384
#define | COLUMN_DUAL_OK 32768
#define | PESSIMISTIC 65536
#define | ADD_A_BIT 131072
#define | DO_SCALE_AND_MATRIX 262144
#define | DO_BASIS_AND_ORDER 524288
#define | DO_STATUS 1048576
#define | DO_SOLUTION 2097152
#define | DO_JUST_BOUNDS 0x400000
#define | NEED_BASIS_SORT 0x800000
#define | FAKE_SUPERBASIC 0x1000000
#define | VALUES_PASS 0x2000000
#define | VALUES_PASS2 0x4000000
#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 375 of file AbcSimplex.hpp.

#define inverseRowUseScale_ scaleToExternal_

Definition at line 376 of file AbcSimplex.hpp.

#define NUMBER_THREADS 3

Definition at line 863 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

Definition at line 1092 of file AbcSimplex.hpp.

#define ROW_DUAL_OK 8192

Definition at line 1093 of file AbcSimplex.hpp.

#define COLUMN_PRIMAL_OK 16384

Definition at line 1094 of file AbcSimplex.hpp.

#define COLUMN_DUAL_OK 32768

Definition at line 1095 of file AbcSimplex.hpp.

#define PESSIMISTIC 65536

Definition at line 1096 of file AbcSimplex.hpp.

#define ADD_A_BIT 131072

Definition at line 1097 of file AbcSimplex.hpp.

#define DO_SCALE_AND_MATRIX 262144

Definition at line 1098 of file AbcSimplex.hpp.

#define DO_BASIS_AND_ORDER 524288

Definition at line 1099 of file AbcSimplex.hpp.

#define DO_STATUS 1048576

Definition at line 1100 of file AbcSimplex.hpp.

#define DO_SOLUTION 2097152

Definition at line 1101 of file AbcSimplex.hpp.

#define DO_JUST_BOUNDS 0x400000

Definition at line 1102 of file AbcSimplex.hpp.

#define NEED_BASIS_SORT 0x800000

Definition at line 1103 of file AbcSimplex.hpp.

#define FAKE_SUPERBASIC 0x1000000

Definition at line 1104 of file AbcSimplex.hpp.

#define VALUES_PASS 0x2000000

Definition at line 1105 of file AbcSimplex.hpp.

#define VALUES_PASS2 0x4000000

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

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines