Loading...
Searching...
No Matches
ClpSimplexPrimal.hpp
Go to the documentation of this file.
/* $Id$ */
// Copyright (C) 2002, International Business Machines
// Corporation and others. All Rights Reserved.
// This code is licensed under the terms of the Eclipse Public License (EPL).
/*
Authors
John Forrest
*/
#ifndef ClpSimplexPrimal_H
#define ClpSimplexPrimal_H
#include "ClpSimplex.hpp"
class ClpSimplexPrimal : public ClpSimplex {
public:
int primal(int ifValuesPass = 0, int startFinishOptions = 0);
void alwaysOptimal(bool onOff);
bool alwaysOptimal() const;
void exactOutgoing(bool onOff);
bool exactOutgoing() const;
int whileIterating(int valuesOption);
int pivotResult(int ifValuesPass = 0);
int updatePrimalsInPrimal(CoinIndexedVector *rowArray,
double theta,
double &objectiveChange,
int valuesPass);
void primalRow(CoinIndexedVector *rowArray,
CoinIndexedVector *rhsArray,
CoinIndexedVector *spareArray,
int valuesPass);
void primalColumn(CoinIndexedVector *updateArray,
CoinIndexedVector *spareRow1,
CoinIndexedVector *spareRow2,
CoinIndexedVector *spareColumn1,
CoinIndexedVector *spareColumn2);
int checkUnbounded(CoinIndexedVector *ray, CoinIndexedVector *spare,
double changeCost);
void statusOfProblemInPrimal(int &lastCleaned, int type,
ClpSimplexProgress *progress,
bool doFactorization,
int ifValuesPass,
ClpSimplex *saveModel = NULL);
void perturb(int type);
bool unPerturb();
int unflag();
int nextSuperBasic(int superBasicType, CoinIndexedVector *columnArray);
void primalRay(CoinIndexedVector *rowArray);
void clearAll();
int lexSolve();
};
#endif
/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
*/
type
CbcOrClpParameterType type() const
type
Definition CbcOrClpParam.hpp:462
ClpSimplex.hpp
ClpModel::ray
double * ray() const
For advanced users - no need to delete - sign not changed.
Definition ClpModel.hpp:864
ClpSimplexPrimal
This solves LPs using the primal simplex method.
Definition ClpSimplexPrimal.hpp:23
ClpSimplexPrimal::alwaysOptimal
bool alwaysOptimal() const
ClpSimplexPrimal::nextSuperBasic
int nextSuperBasic(int superBasicType, CoinIndexedVector *columnArray)
Get next superbasic -1 if none, Normal type is 1 If type is 3 then initializes sorted list if 2 uses ...
ClpSimplexPrimal::lexSolve
int lexSolve()
Sort of lexicographic resolve.
ClpSimplexPrimal::unPerturb
bool unPerturb()
Take off effect of perturbation and say whether to try dual.
ClpSimplexPrimal::exactOutgoing
void exactOutgoing(bool onOff)
Normally outgoing variables can go out to slightly negative values (but within tolerance) - this is t...
ClpSimplexPrimal::whileIterating
int whileIterating(int valuesOption)
This has the flow between re-factorizations.
ClpSimplexPrimal::exactOutgoing
bool exactOutgoing() const
ClpSimplexPrimal::primalRow
void primalRow(CoinIndexedVector *rowArray, CoinIndexedVector *rhsArray, CoinIndexedVector *spareArray, int valuesPass)
Row array has pivot column This chooses pivot row.
ClpSimplexPrimal::checkUnbounded
int checkUnbounded(CoinIndexedVector *ray, CoinIndexedVector *spare, double changeCost)
Checks if tentative optimal actually means unbounded in primal Returns -3 if not, 2 if is unbounded.
ClpSimplexPrimal::clearAll
void clearAll()
Clears all bits and clears rowArray[1] etc.
ClpSimplexPrimal::primal
int primal(int ifValuesPass=0, int startFinishOptions=0)
Primal algorithm.
ClpSimplexPrimal::alwaysOptimal
void alwaysOptimal(bool onOff)
Do not change infeasibility cost and always say optimal.
ClpSimplexPrimal::primalRay
void primalRay(CoinIndexedVector *rowArray)
Create primal ray.
ClpSimplexPrimal::updatePrimalsInPrimal
int updatePrimalsInPrimal(CoinIndexedVector *rowArray, double theta, double &objectiveChange, int valuesPass)
The primals are updated by the given array.
ClpSimplexPrimal::unflag
int unflag()
Unflag all variables and return number unflagged.
ClpSimplexPrimal::primalColumn
void primalColumn(CoinIndexedVector *updateArray, CoinIndexedVector *spareRow1, CoinIndexedVector *spareRow2, CoinIndexedVector *spareColumn1, CoinIndexedVector *spareColumn2)
Chooses primal pivot column updateArray has cost updates (also use pivotRow_ from last iteration) Wou...
ClpSimplexPrimal::statusOfProblemInPrimal
void statusOfProblemInPrimal(int &lastCleaned, int type, ClpSimplexProgress *progress, bool doFactorization, int ifValuesPass, ClpSimplex *saveModel=NULL)
Refactorizes if necessary Checks if finished.
ClpSimplexPrimal::perturb
void perturb(int type)
Perturbs problem (method depends on perturbation()).
ClpSimplexPrimal::pivotResult
int pivotResult(int ifValuesPass=0)
Do last half of an iteration.
ClpSimplexProgress
For saving extra information to see if looping.
Definition ClpSolve.hpp:310
ClpSimplex::saveModel
int saveModel(const char *fileName)
Save model to file, returns 0 if success.
ClpSimplex::theta
double theta() const
Theta (pivot change).
Definition ClpSimplex.hpp:1365
ClpSimplex::rowArray
CoinIndexedVector * rowArray(int index) const
Useful row length arrays (0,1,2,3,4,5).
Definition ClpSimplex.hpp:815
ClpSimplex::ClpSimplex
ClpSimplex(bool emptyMessages=false)
Default constructor.
ClpSimplex::columnArray
CoinIndexedVector * columnArray(int index) const
Useful column length arrays (0,1,2,3,4,5).
Definition ClpSimplex.hpp:820
ClpSimplex::progress
ClpSimplexProgress * progress()
For dealing with all issues of cycling etc.
Definition ClpSimplex.hpp:1571