ClpNonLinearCost Class Reference

#include <ClpNonLinearCost.hpp>

Collaboration diagram for ClpNonLinearCost:
Collaboration graph
[legend]

List of all members.

Public Member Functions

Constructors, destructor



 ClpNonLinearCost ()
 Default constructor.
 ClpNonLinearCost (ClpSimplex *model, int method=1)
 Constructor from simplex.
 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 ()
 Destructor.
 ClpNonLinearCost (const ClpNonLinearCost &)
 Default constructor.
ClpNonLinearCostoperator= (const ClpNonLinearCost &)
 Default constructor.
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

  • but does not move those <= oldTolerance away.

void checkInfeasibilities (int numberInArray, const int *index)
 Changes infeasible costs for each variable The indices are row indices and need converting to sequences.
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.
void goThru (int numberInArray, double multiplier, const int *index, const double *work, double *rhs)
 Goes through one bound for each variable.
void goBack (int numberInArray, const int *index, double *rhs)
 Takes off last iteration (i.e.
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.
void zapCosts ()
 Temporary zeroing of feasible costs.
void refreshCosts (const double *columnCosts)
 Refreshes costs always makes row costs zero.
void feasibleBounds ()
 Puts feasible bounds into lower and upper.
double setOne (int sequence, double solutionValue)
 Sets bounds and cost for one variable Returns change in cost May need to be inline for speed.
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.
int setOneOutgoing (int sequence, double &solutionValue)
 Sets bounds and cost for outgoing variable may change value Returns direction.
double nearest (int sequence, double solutionValue)
 Returns nearest bound.
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.
double changeUpInCost (int sequence) const
 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

  • but does not move those <= oldTolerance away.

double changeDownInCost (int sequence) const
 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

  • but does not move those <= oldTolerance away.

double changeInCost (int sequence, double alpha, double &rhs)
 This also updates next bound.
double lower (int sequence) const
 Returns current lower bound.
double upper (int sequence) const
 Returns current upper bound.
double cost (int sequence) const
 Returns current cost.
Gets and sets



int numberInfeasibilities () const
 Number of infeasibilities.
double changeInCost () const
 Change in cost.
double feasibleCost () const
 Feasible cost.
double feasibleReportCost () const
 Feasible cost with offset and direction (i.e. for reporting).
double sumInfeasibilities () const
 Sum of infeasibilities.
double largestInfeasibility () const
 Largest infeasibility.
double averageTheta () const
 Average theta.
void setAverageTheta (double value)
 Number of infeasibilities.
void setChangeInCost (double value)
 Number of infeasibilities.
void setMethod (int value)
 Number of infeasibilities.
bool lookBothWays () const
 See if may want to look both ways.
Private functions to deal with infeasible regions



bool infeasible (int i) const
 For debug.
void setInfeasible (int i, bool trueFalse)
 For debug.
unsigned char * statusArray () const
 For debug.
void validate ()
 For debug.

Private Attributes

Data members



double changeCost_
 Change in cost because of infeasibilities.
double feasibleCost_
 Feasible cost.
double infeasibilityWeight_
 Current infeasibility weight.
double largestInfeasibility_
 Largest infeasibility.
double sumInfeasibilities_
 Sum of infeasibilities.
double averageTheta_
 Average theta - kept here as only for primal.
int numberRows_
 Number of rows (mainly for checking and copy).
int numberColumns_
 Number of columns (mainly for checking and copy).
int * start_
 Starts for each entry (columns then rows).
int * whichRange_
 Range for each entry (columns then rows).
int * offset_
 Temporary range offset for each entry (columns then rows).
double * lower_
 Lower bound for each range (upper bound is next lower).
double * cost_
 Cost for each range.
ClpSimplexmodel_
 Model.
unsigned int * infeasible_
 Change in cost because of infeasibilities.
int numberInfeasibilities_
 Number of infeasibilities found.
unsigned char * status_
 Contains status at beginning and current.
double * bound_
 Bound which has been replaced in lower_ or upper_.
double * cost2_
 Feasible cost array.
int method_
 Method 1 old, 2 new, 3 both!
bool convex_
 If all non-linear costs convex.
bool bothWays_
 If we should look both ways for djs.

Detailed Description

Definition at line 60 of file ClpNonLinearCost.hpp.


Constructor & Destructor Documentation

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  ) 

Default constructor.


Member Function Documentation

ClpNonLinearCost& ClpNonLinearCost::operator= ( const ClpNonLinearCost  ) 

Default constructor.

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

  • but does not move those <= oldTolerance away.

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.

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.

double ClpNonLinearCost::changeInCost ( int  sequence,
double  alpha 
) const [inline]

Returns change in cost - one down if alpha >0.0, up if <0.0 Value is current - new.

Definition at line 151 of file ClpNonLinearCost.hpp.

double ClpNonLinearCost::changeUpInCost ( int  sequence  )  const [inline]

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

  • but does not move those <= oldTolerance away.

Definition at line 166 of file ClpNonLinearCost.hpp.

double ClpNonLinearCost::changeDownInCost ( int  sequence  )  const [inline]

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

  • but does not move those <= oldTolerance away.

Definition at line 181 of file ClpNonLinearCost.hpp.

double ClpNonLinearCost::changeInCost ( int  sequence,
double  alpha,
double &  rhs 
) [inline]

This also updates next bound.

Definition at line 197 of file ClpNonLinearCost.hpp.

double ClpNonLinearCost::lower ( int  sequence  )  const [inline]

Returns current lower bound.

Definition at line 257 of file ClpNonLinearCost.hpp.

double ClpNonLinearCost::upper ( int  sequence  )  const [inline]

Returns current upper bound.

Definition at line 260 of file ClpNonLinearCost.hpp.

double ClpNonLinearCost::cost ( int  sequence  )  const [inline]

Returns current cost.

Definition at line 263 of file ClpNonLinearCost.hpp.

int ClpNonLinearCost::numberInfeasibilities (  )  const [inline]

Number of infeasibilities.

Definition at line 271 of file ClpNonLinearCost.hpp.

double ClpNonLinearCost::changeInCost (  )  const [inline]

Change in cost.

Definition at line 274 of file ClpNonLinearCost.hpp.

double ClpNonLinearCost::feasibleCost (  )  const [inline]

Feasible cost.

Definition at line 277 of file ClpNonLinearCost.hpp.

double ClpNonLinearCost::feasibleReportCost (  )  const

Feasible cost with offset and direction (i.e. for reporting).

double ClpNonLinearCost::sumInfeasibilities (  )  const [inline]

Sum of infeasibilities.

Definition at line 282 of file ClpNonLinearCost.hpp.

double ClpNonLinearCost::largestInfeasibility (  )  const [inline]

Largest infeasibility.

Definition at line 285 of file ClpNonLinearCost.hpp.

double ClpNonLinearCost::averageTheta (  )  const [inline]

Average theta.

Definition at line 288 of file ClpNonLinearCost.hpp.

void ClpNonLinearCost::setAverageTheta ( double  value  )  [inline]

Number of infeasibilities.

Definition at line 290 of file ClpNonLinearCost.hpp.

void ClpNonLinearCost::setChangeInCost ( double  value  )  [inline]

Number of infeasibilities.

Definition at line 292 of file ClpNonLinearCost.hpp.

void ClpNonLinearCost::setMethod ( int  value  )  [inline]

Number of infeasibilities.

Definition at line 294 of file ClpNonLinearCost.hpp.

bool ClpNonLinearCost::lookBothWays (  )  const [inline]

See if may want to look both ways.

Definition at line 297 of file ClpNonLinearCost.hpp.

bool ClpNonLinearCost::infeasible ( int  i  )  const [inline]

For debug.

Definition at line 301 of file ClpNonLinearCost.hpp.

void ClpNonLinearCost::setInfeasible ( int  i,
bool  trueFalse 
) [inline]

For debug.

Definition at line 304 of file ClpNonLinearCost.hpp.

unsigned char* ClpNonLinearCost::statusArray (  )  const [inline]

For debug.

Definition at line 312 of file ClpNonLinearCost.hpp.

void ClpNonLinearCost::validate (  ) 

For debug.


Member Data Documentation

Change in cost because of infeasibilities.

Definition at line 322 of file ClpNonLinearCost.hpp.

Feasible cost.

Definition at line 324 of file ClpNonLinearCost.hpp.

Current infeasibility weight.

Definition at line 326 of file ClpNonLinearCost.hpp.

Largest infeasibility.

Definition at line 328 of file ClpNonLinearCost.hpp.

Sum of infeasibilities.

Definition at line 330 of file ClpNonLinearCost.hpp.

Average theta - kept here as only for primal.

Definition at line 332 of file ClpNonLinearCost.hpp.

Number of rows (mainly for checking and copy).

Definition at line 334 of file ClpNonLinearCost.hpp.

Number of columns (mainly for checking and copy).

Definition at line 336 of file ClpNonLinearCost.hpp.

int* ClpNonLinearCost::start_ [private]

Starts for each entry (columns then rows).

Definition at line 338 of file ClpNonLinearCost.hpp.

Range for each entry (columns then rows).

Definition at line 340 of file ClpNonLinearCost.hpp.

int* ClpNonLinearCost::offset_ [private]

Temporary range offset for each entry (columns then rows).

Definition at line 342 of file ClpNonLinearCost.hpp.

double* ClpNonLinearCost::lower_ [private]

Lower bound for each range (upper bound is next lower).

For various reasons there is always an infeasible range at bottom - even if lower bound is - infinity

Definition at line 346 of file ClpNonLinearCost.hpp.

double* ClpNonLinearCost::cost_ [private]

Cost for each range.

Definition at line 348 of file ClpNonLinearCost.hpp.

Model.

Definition at line 350 of file ClpNonLinearCost.hpp.

unsigned int* ClpNonLinearCost::infeasible_ [private]

Change in cost because of infeasibilities.

Definition at line 352 of file ClpNonLinearCost.hpp.

Number of infeasibilities found.

Definition at line 354 of file ClpNonLinearCost.hpp.

unsigned char* ClpNonLinearCost::status_ [private]

Contains status at beginning and current.

Definition at line 357 of file ClpNonLinearCost.hpp.

double* ClpNonLinearCost::bound_ [private]

Bound which has been replaced in lower_ or upper_.

Definition at line 359 of file ClpNonLinearCost.hpp.

double* ClpNonLinearCost::cost2_ [private]

Feasible cost array.

Definition at line 361 of file ClpNonLinearCost.hpp.

Method 1 old, 2 new, 3 both!

Definition at line 363 of file ClpNonLinearCost.hpp.

bool ClpNonLinearCost::convex_ [private]

If all non-linear costs convex.

Definition at line 365 of file ClpNonLinearCost.hpp.

If we should look both ways for djs.

Definition at line 367 of file ClpNonLinearCost.hpp.


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

Generated on 15 Mar 2015 for Coin-All by  doxygen 1.6.1