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

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

Generated on 31 Oct 2014 for Clp by  doxygen 1.6.1