# ClpSimplexNonlinear Class Reference

This solves non-linear LPs using the primal simplex method. More...

`#include <ClpSimplexNonlinear.hpp>`

Inheritance diagram for ClpSimplexNonlinear:
[legend]
Collaboration diagram for ClpSimplexNonlinear:
[legend]

List of all members.

## 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, int otherOptions=0)
| Primal algorithm for quadratic Using a semi-trust region approach as for pooling problem This is in because I have it lying around.
int | primalDualCuts (char *rowsIn, int startUp, int algorithm)
| May use a cut approach for solving any LP.
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.

## Detailed Description

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 28 of file ClpSimplexNonlinear.hpp.

## Member Function Documentation

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,
|  | int | otherOptions = `0` |
| ) |  |  |

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::primalDualCuts | ( | char * | rowsIn,
|  | int | startUp,
|  | int | algorithm |
| ) |  |  |

May use a cut approach for solving any LP.

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

- 1 normal -if good update save

2 restoring from saved

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)

The documentation for this class was generated from the following file:

- /home/coin/svn-release/Clp-1.16.6/Clp/src/ClpSimplexNonlinear.hpp

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines