Clp  1.17.8
Classes | Macros | Functions
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
 

Macros

#define PAN
 This solves LPs using the simplex method. More...
 
#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. More...
 
#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. More...
 
#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) More...
 

Functions

void AbcSimplexUnitTest (const std::string &mpsDir)
 A function that tests the methods in the AbcSimplex class. More...
 

Macro Definition Documentation

◆ PAN

#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.

◆ TRY_ABC_GUS

#define TRY_ABC_GUS

Definition at line 56 of file AbcSimplex.hpp.

◆ HEAVY_PERTURBATION

#define HEAVY_PERTURBATION   57

Definition at line 57 of file AbcSimplex.hpp.

◆ rowUseScale_

#define rowUseScale_   scaleFromExternal_

Definition at line 413 of file AbcSimplex.hpp.

◆ inverseRowUseScale_

#define inverseRowUseScale_   scaleToExternal_

Definition at line 414 of file AbcSimplex.hpp.

◆ NUMBER_THREADS

#define NUMBER_THREADS   3

Definition at line 1028 of file AbcSimplex.hpp.

◆ startAtLowerNoOther_

#define startAtLowerNoOther_   maximumAbcNumberRows_

Start of variables at lower bound with no upper.

Definition at line 1238 of file AbcSimplex.hpp.

◆ ALL_STATUS_OK

#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 1270 of file AbcSimplex.hpp.

◆ ROW_PRIMAL_OK

#define ROW_PRIMAL_OK   4096

Definition at line 1271 of file AbcSimplex.hpp.

◆ ROW_DUAL_OK

#define ROW_DUAL_OK   8192

Definition at line 1272 of file AbcSimplex.hpp.

◆ COLUMN_PRIMAL_OK

#define COLUMN_PRIMAL_OK   16384

Definition at line 1273 of file AbcSimplex.hpp.

◆ COLUMN_DUAL_OK

#define COLUMN_DUAL_OK   32768

Definition at line 1274 of file AbcSimplex.hpp.

◆ PESSIMISTIC

#define PESSIMISTIC   65536

Definition at line 1275 of file AbcSimplex.hpp.

◆ ADD_A_BIT

#define ADD_A_BIT   131072

Definition at line 1276 of file AbcSimplex.hpp.

◆ DO_SCALE_AND_MATRIX

#define DO_SCALE_AND_MATRIX   262144

Definition at line 1277 of file AbcSimplex.hpp.

◆ DO_BASIS_AND_ORDER

#define DO_BASIS_AND_ORDER   524288

Definition at line 1278 of file AbcSimplex.hpp.

◆ DO_STATUS

#define DO_STATUS   1048576

Definition at line 1279 of file AbcSimplex.hpp.

◆ DO_SOLUTION

#define DO_SOLUTION   2097152

Definition at line 1280 of file AbcSimplex.hpp.

◆ DO_JUST_BOUNDS

#define DO_JUST_BOUNDS   0x400000

Definition at line 1281 of file AbcSimplex.hpp.

◆ NEED_BASIS_SORT

#define NEED_BASIS_SORT   0x800000

Definition at line 1282 of file AbcSimplex.hpp.

◆ FAKE_SUPERBASIC

#define FAKE_SUPERBASIC   0x1000000

Definition at line 1283 of file AbcSimplex.hpp.

◆ VALUES_PASS

#define VALUES_PASS   0x2000000

Definition at line 1284 of file AbcSimplex.hpp.

◆ VALUES_PASS2

#define VALUES_PASS2   0x4000000

Definition at line 1285 of file AbcSimplex.hpp.

◆ ABC_NUMBER_USEFUL

#define ABC_NUMBER_USEFUL   8

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

Definition at line 1419 of file AbcSimplex.hpp.

Function Documentation

◆ AbcSimplexUnitTest()

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