This solves non-linear LPs using the primal simplex method. More...
#include <ClpSimplexNonlinear.hpp>
Public Member Functions | |
Description of algorithm | |
int | primal () |
Primal algorithms for reduced gradient At present we have two algorithms:. | |
int | primalSLP (int numberPasses, double deltaTolerance) |
Primal algorithm for quadratic Using a semi-trust region approach as for pooling problem This is in because I have it lying around. | |
int | primalSLP (int numberConstraints, ClpConstraint **constraints, int numberPasses, double deltaTolerance) |
Primal algorithm for nonlinear constraints Using a semi-trust region approach as for pooling problem This is in because I have it lying around. | |
void | directionVector (CoinIndexedVector *longArray, CoinIndexedVector *spare1, CoinIndexedVector *spare2, int mode, double &normFlagged, double &normUnflagged, int &numberNonBasic) |
Creates direction vector. | |
int | whileIterating (int &pivotMode) |
Main part. | |
int | pivotColumn (CoinIndexedVector *longArray, CoinIndexedVector *rowArray, CoinIndexedVector *columnArray, CoinIndexedVector *spare, int &pivotMode, double &solutionError, double *array1) |
longArray has direction pivotMode - 0 - use all dual infeasible variables 1 - largest dj while >= 10 trying startup phase Returns 0 - can do normal iteration (basis change) 1 - no basis change 2 - if wants singleton 3 - if time to re-factorize If sequenceIn_ >=0 then that will be incoming variable | |
void | statusOfProblemInPrimal (int &lastCleaned, int type, ClpSimplexProgress *progress, bool doFactorization, double &bestObjectiveWhenFlagged) |
Refactorizes if necessary Checks if finished. | |
int | pivotNonlinearResult () |
Do last half of an iteration. |
This solves non-linear LPs using the primal simplex method.
It inherits from ClpSimplexPrimal. It has no data of its own and is never created - only cast from a ClpSimplexPrimal object at algorithm time. If needed create new class and pass around
Definition at line 27 of file ClpSimplexNonlinear.hpp.
int ClpSimplexNonlinear::primal | ( | ) |
Primal algorithms for reduced gradient At present we have two algorithms:.
A reduced gradient method.
int ClpSimplexNonlinear::primalSLP | ( | int | numberPasses, | |
double | deltaTolerance | |||
) |
Primal algorithm for quadratic Using a semi-trust region approach as for pooling problem This is in because I have it lying around.
int ClpSimplexNonlinear::primalSLP | ( | int | numberConstraints, | |
ClpConstraint ** | constraints, | |||
int | numberPasses, | |||
double | deltaTolerance | |||
) |
Primal algorithm for nonlinear constraints Using a semi-trust region approach as for pooling problem This is in because I have it lying around.
void ClpSimplexNonlinear::directionVector | ( | CoinIndexedVector * | longArray, | |
CoinIndexedVector * | spare1, | |||
CoinIndexedVector * | spare2, | |||
int | mode, | |||
double & | normFlagged, | |||
double & | normUnflagged, | |||
int & | numberNonBasic | |||
) |
Creates direction vector.
note longArray is long enough for rows and columns. If numberNonBasic 0 then is updated otherwise mode is ignored and those are used. Norms are only for those > 1.0e3*dualTolerance If mode is nonzero then just largest dj
int ClpSimplexNonlinear::whileIterating | ( | int & | pivotMode | ) |
Main part.
int ClpSimplexNonlinear::pivotColumn | ( | CoinIndexedVector * | longArray, | |
CoinIndexedVector * | rowArray, | |||
CoinIndexedVector * | columnArray, | |||
CoinIndexedVector * | spare, | |||
int & | pivotMode, | |||
double & | solutionError, | |||
double * | array1 | |||
) |
longArray has direction pivotMode - 0 - use all dual infeasible variables 1 - largest dj while >= 10 trying startup phase Returns 0 - can do normal iteration (basis change) 1 - no basis change 2 - if wants singleton 3 - if time to re-factorize If sequenceIn_ >=0 then that will be incoming variable
void ClpSimplexNonlinear::statusOfProblemInPrimal | ( | int & | lastCleaned, | |
int | type, | |||
ClpSimplexProgress * | progress, | |||
bool | doFactorization, | |||
double & | bestObjectiveWhenFlagged | |||
) |
Refactorizes if necessary Checks if finished.
Updates status. lastCleaned refers to iteration at which some objective/feasibility cleaning too place.
type - 0 initial so set up save arrays etc
int ClpSimplexNonlinear::pivotNonlinearResult | ( | ) |
Do last half of an iteration.
Return codes Reasons to come out normal mode -1 normal -2 factorize now - good iteration -3 slight inaccuracy - refactorize - iteration done -4 inaccuracy - refactorize - no iteration -5 something flagged - go round again +2 looks unbounded +3 max iterations (iteration done)