Clp
1.17.8
|
#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"
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... | |
#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 413 of file AbcSimplex.hpp.
#define inverseRowUseScale_ scaleToExternal_ |
Definition at line 414 of file AbcSimplex.hpp.
#define NUMBER_THREADS 3 |
Definition at line 1028 of file AbcSimplex.hpp.
#define startAtLowerNoOther_ maximumAbcNumberRows_ |
Start of variables at lower bound with no upper.
Definition at line 1238 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 1270 of file AbcSimplex.hpp.
#define ROW_PRIMAL_OK 4096 |
Definition at line 1271 of file AbcSimplex.hpp.
#define ROW_DUAL_OK 8192 |
Definition at line 1272 of file AbcSimplex.hpp.
#define COLUMN_PRIMAL_OK 16384 |
Definition at line 1273 of file AbcSimplex.hpp.
#define COLUMN_DUAL_OK 32768 |
Definition at line 1274 of file AbcSimplex.hpp.
#define PESSIMISTIC 65536 |
Definition at line 1275 of file AbcSimplex.hpp.
#define ADD_A_BIT 131072 |
Definition at line 1276 of file AbcSimplex.hpp.
#define DO_SCALE_AND_MATRIX 262144 |
Definition at line 1277 of file AbcSimplex.hpp.
#define DO_BASIS_AND_ORDER 524288 |
Definition at line 1278 of file AbcSimplex.hpp.
#define DO_STATUS 1048576 |
Definition at line 1279 of file AbcSimplex.hpp.
#define DO_SOLUTION 2097152 |
Definition at line 1280 of file AbcSimplex.hpp.
#define DO_JUST_BOUNDS 0x400000 |
Definition at line 1281 of file AbcSimplex.hpp.
#define NEED_BASIS_SORT 0x800000 |
Definition at line 1282 of file AbcSimplex.hpp.
#define FAKE_SUPERBASIC 0x1000000 |
Definition at line 1283 of file AbcSimplex.hpp.
#define VALUES_PASS 0x2000000 |
Definition at line 1284 of file AbcSimplex.hpp.
#define VALUES_PASS2 0x4000000 |
Definition at line 1285 of file AbcSimplex.hpp.
#define ABC_NUMBER_USEFUL 8 |
Useful arrays (all of row+column+2 length)
Definition at line 1419 of file AbcSimplex.hpp.
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