Clp
1.16.6
|
#include <ClpNonLinearCost.hpp>
Public Member Functions | |
Constructors, destructor | |
ClpNonLinearCost () | |
Default constructor. More... | |
ClpNonLinearCost (ClpSimplex *model, int method=1) | |
Constructor from simplex. More... | |
ClpNonLinearCost (ClpSimplex *model, const int *starts, const double *lower, const double *cost) | |
Constructor from simplex and list of non-linearities (columns only) First lower of each column has to match real lower Last lower has to be <= upper (if == then cost ignored) This could obviously be changed to make more user friendly. More... | |
~ClpNonLinearCost () | |
Destructor. More... | |
ClpNonLinearCost (const ClpNonLinearCost &) | |
ClpNonLinearCost & | operator= (const ClpNonLinearCost &) |
Actual work in primal | |
void | checkInfeasibilities (double oldTolerance=0.0) |
Changes infeasible costs and computes number and cost of infeas Puts all non-basic (non free) variables to bounds and all free variables to zero if oldTolerance is non-zero. More... | |
void | checkInfeasibilities (int numberInArray, const int *index) |
Changes infeasible costs for each variable The indices are row indices and need converting to sequences. More... | |
void | checkChanged (int numberInArray, CoinIndexedVector *update) |
Puts back correct infeasible costs for each variable The input indices are row indices and need converting to sequences for costs. More... | |
void | goThru (int numberInArray, double multiplier, const int *index, const double *work, double *rhs) |
Goes through one bound for each variable. More... | |
void | goBack (int numberInArray, const int *index, double *rhs) |
Takes off last iteration (i.e. More... | |
void | goBackAll (const CoinIndexedVector *update) |
Puts back correct infeasible costs for each variable The input indices are row indices and need converting to sequences for costs. More... | |
void | zapCosts () |
Temporary zeroing of feasible costs. More... | |
void | refreshCosts (const double *columnCosts) |
Refreshes costs always makes row costs zero. More... | |
void | feasibleBounds () |
Puts feasible bounds into lower and upper. More... | |
void | refresh () |
Refresh - assuming regions OK. More... | |
double | setOne (int sequence, double solutionValue) |
Sets bounds and cost for one variable Returns change in cost May need to be inline for speed. More... | |
void | setOne (int sequence, double solutionValue, double lowerValue, double upperValue, double costValue=0.0) |
Sets bounds and infeasible cost and true cost for one variable This is for gub and column generation etc. More... | |
int | setOneOutgoing (int sequence, double &solutionValue) |
Sets bounds and cost for outgoing variable may change value Returns direction. More... | |
double | nearest (int sequence, double solutionValue) |
Returns nearest bound. More... | |
double | changeInCost (int sequence, double alpha) const |
Returns change in cost - one down if alpha >0.0, up if <0.0 Value is current - new. More... | |
double | changeUpInCost (int sequence) const |
double | changeDownInCost (int sequence) const |
double | changeInCost (int sequence, double alpha, double &rhs) |
This also updates next bound. More... | |
double | lower (int sequence) const |
Returns current lower bound. More... | |
double | upper (int sequence) const |
Returns current upper bound. More... | |
double | cost (int sequence) const |
Returns current cost. More... | |
Gets and sets | |
int | numberInfeasibilities () const |
Number of infeasibilities. More... | |
double | changeInCost () const |
Change in cost. More... | |
double | feasibleCost () const |
Feasible cost. More... | |
double | feasibleReportCost () const |
Feasible cost with offset and direction (i.e. for reporting) More... | |
double | sumInfeasibilities () const |
Sum of infeasibilities. More... | |
double | largestInfeasibility () const |
Largest infeasibility. More... | |
double | averageTheta () const |
Average theta. More... | |
void | setAverageTheta (double value) |
void | setChangeInCost (double value) |
void | setMethod (int value) |
bool | lookBothWays () const |
See if may want to look both ways. More... | |
Private functions to deal with infeasible regions | |
bool | infeasible (int i) const |
void | setInfeasible (int i, bool trueFalse) |
unsigned char * | statusArray () const |
void | validate () |
For debug. More... | |
Definition at line 78 of file ClpNonLinearCost.hpp.
ClpNonLinearCost::ClpNonLinearCost | ( | ) |
Default constructor.
ClpNonLinearCost::ClpNonLinearCost | ( | ClpSimplex * | model, |
int | method = 1 |
||
) |
Constructor from simplex.
This will just set up wasteful arrays for linear, but later may do dual analysis and even finding duplicate columns .
ClpNonLinearCost::ClpNonLinearCost | ( | ClpSimplex * | model, |
const int * | starts, | ||
const double * | lower, | ||
const double * | cost | ||
) |
Constructor from simplex and list of non-linearities (columns only) First lower of each column has to match real lower Last lower has to be <= upper (if == then cost ignored) This could obviously be changed to make more user friendly.
ClpNonLinearCost::~ClpNonLinearCost | ( | ) |
Destructor.
ClpNonLinearCost::ClpNonLinearCost | ( | const ClpNonLinearCost & | ) |
ClpNonLinearCost& ClpNonLinearCost::operator= | ( | const ClpNonLinearCost & | ) |
void ClpNonLinearCost::checkInfeasibilities | ( | double | oldTolerance = 0.0 | ) |
Changes infeasible costs and computes number and cost of infeas Puts all non-basic (non free) variables to bounds and all free variables to zero if oldTolerance is non-zero.
void ClpNonLinearCost::checkInfeasibilities | ( | int | numberInArray, |
const int * | index | ||
) |
Changes infeasible costs for each variable The indices are row indices and need converting to sequences.
void ClpNonLinearCost::checkChanged | ( | int | numberInArray, |
CoinIndexedVector * | update | ||
) |
Puts back correct infeasible costs for each variable The input indices are row indices and need converting to sequences for costs.
On input array is empty (but indices exist). On exit just changed costs will be stored as normal CoinIndexedVector
void ClpNonLinearCost::goThru | ( | int | numberInArray, |
double | multiplier, | ||
const int * | index, | ||
const double * | work, | ||
double * | rhs | ||
) |
Goes through one bound for each variable.
If multiplier*work[iRow]>0 goes down, otherwise up. The indices are row indices and need converting to sequences Temporary offsets may be set Rhs entries are increased
void ClpNonLinearCost::goBack | ( | int | numberInArray, |
const int * | index, | ||
double * | rhs | ||
) |
Takes off last iteration (i.e.
offsets closer to 0)
void ClpNonLinearCost::goBackAll | ( | const CoinIndexedVector * | update | ) |
Puts back correct infeasible costs for each variable The input indices are row indices and need converting to sequences for costs.
At the end of this all temporary offsets are zero
void ClpNonLinearCost::zapCosts | ( | ) |
Temporary zeroing of feasible costs.
void ClpNonLinearCost::refreshCosts | ( | const double * | columnCosts | ) |
Refreshes costs always makes row costs zero.
void ClpNonLinearCost::feasibleBounds | ( | ) |
Puts feasible bounds into lower and upper.
void ClpNonLinearCost::refresh | ( | ) |
Refresh - assuming regions OK.
double ClpNonLinearCost::setOne | ( | int | sequence, |
double | solutionValue | ||
) |
Sets bounds and cost for one variable Returns change in cost May need to be inline for speed.
void ClpNonLinearCost::setOne | ( | int | sequence, |
double | solutionValue, | ||
double | lowerValue, | ||
double | upperValue, | ||
double | costValue = 0.0 |
||
) |
Sets bounds and infeasible cost and true cost for one variable This is for gub and column generation etc.
int ClpNonLinearCost::setOneOutgoing | ( | int | sequence, |
double & | solutionValue | ||
) |
Sets bounds and cost for outgoing variable may change value Returns direction.
double ClpNonLinearCost::nearest | ( | int | sequence, |
double | solutionValue | ||
) |
Returns nearest bound.
|
inline |
Returns change in cost - one down if alpha >0.0, up if <0.0 Value is current - new.
Definition at line 171 of file ClpNonLinearCost.hpp.
|
inline |
Definition at line 185 of file ClpNonLinearCost.hpp.
|
inline |
Definition at line 199 of file ClpNonLinearCost.hpp.
|
inline |
This also updates next bound.
Definition at line 214 of file ClpNonLinearCost.hpp.
|
inline |
Returns current lower bound.
Definition at line 273 of file ClpNonLinearCost.hpp.
|
inline |
Returns current upper bound.
Definition at line 277 of file ClpNonLinearCost.hpp.
|
inline |
Returns current cost.
Definition at line 281 of file ClpNonLinearCost.hpp.
|
inline |
Number of infeasibilities.
Definition at line 290 of file ClpNonLinearCost.hpp.
|
inline |
Change in cost.
Definition at line 294 of file ClpNonLinearCost.hpp.
|
inline |
Feasible cost.
Definition at line 298 of file ClpNonLinearCost.hpp.
double ClpNonLinearCost::feasibleReportCost | ( | ) | const |
Feasible cost with offset and direction (i.e. for reporting)
|
inline |
Sum of infeasibilities.
Definition at line 304 of file ClpNonLinearCost.hpp.
|
inline |
Largest infeasibility.
Definition at line 308 of file ClpNonLinearCost.hpp.
|
inline |
Average theta.
Definition at line 312 of file ClpNonLinearCost.hpp.
|
inline |
Definition at line 315 of file ClpNonLinearCost.hpp.
|
inline |
Definition at line 318 of file ClpNonLinearCost.hpp.
|
inline |
Definition at line 321 of file ClpNonLinearCost.hpp.
|
inline |
See if may want to look both ways.
Definition at line 325 of file ClpNonLinearCost.hpp.
|
inline |
Definition at line 330 of file ClpNonLinearCost.hpp.
|
inline |
Definition at line 333 of file ClpNonLinearCost.hpp.
|
inline |
Definition at line 341 of file ClpNonLinearCost.hpp.
void ClpNonLinearCost::validate | ( | ) |
For debug.