diff options
author | Harpreet | 2016-09-03 00:36:51 +0530 |
---|---|---|
committer | Harpreet | 2016-09-03 00:36:51 +0530 |
commit | a0d9443af147e949c1e6a01ac24749d12593ec5b (patch) | |
tree | 1a1955c5482ae608fd7f618b06f4ecc6a0d39a23 /thirdparty/linux/include/coin/CbcPartialNodeInfo.hpp | |
parent | 4b64cf486f5c999fd8167758cae27839f3b50848 (diff) | |
download | FOSSEE-Optim-toolbox-development-a0d9443af147e949c1e6a01ac24749d12593ec5b.tar.gz FOSSEE-Optim-toolbox-development-a0d9443af147e949c1e6a01ac24749d12593ec5b.tar.bz2 FOSSEE-Optim-toolbox-development-a0d9443af147e949c1e6a01ac24749d12593ec5b.zip |
cbcintlinprog added
Diffstat (limited to 'thirdparty/linux/include/coin/CbcPartialNodeInfo.hpp')
-rw-r--r-- | thirdparty/linux/include/coin/CbcPartialNodeInfo.hpp | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/thirdparty/linux/include/coin/CbcPartialNodeInfo.hpp b/thirdparty/linux/include/coin/CbcPartialNodeInfo.hpp new file mode 100644 index 0000000..446a3eb --- /dev/null +++ b/thirdparty/linux/include/coin/CbcPartialNodeInfo.hpp @@ -0,0 +1,110 @@ +// $Id: CbcPartialNodeInfo.hpp 1899 2013-04-09 18:12:08Z stefan $ +// 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). + +// Edwin 11/24/09 carved from CbcNode + +#ifndef CbcPartialNodeInfo_H +#define CbcPartialNodeInfo_H + +#include <string> +#include <vector> + +#include "CoinWarmStartBasis.hpp" +#include "CoinSearchTree.hpp" +#include "CbcBranchBase.hpp" +#include "CbcNodeInfo.hpp" + +class OsiSolverInterface; +class OsiSolverBranch; + +class OsiCuts; +class OsiRowCut; +class OsiRowCutDebugger; +class CoinWarmStartBasis; +class CbcCountRowCut; +class CbcModel; +class CbcNode; +class CbcSubProblem; +class CbcGeneralBranchingObject; +/** \brief Holds information for recreating a subproblem by incremental change + from the parent. + + A CbcPartialNodeInfo object contains changes to the bounds and basis, and + additional cuts, required to recreate a subproblem by modifying and + augmenting the parent subproblem. +*/ + +class CbcPartialNodeInfo : public CbcNodeInfo { + +public: + + /** \brief Modify model according to information at node + + The routine modifies the model according to bound and basis change + information at node and adds any cuts to the addCuts array. + */ + virtual void applyToModel (CbcModel *model, CoinWarmStartBasis *&basis, + CbcCountRowCut **addCuts, + int ¤tNumberCuts) const ; + + /// Just apply bounds to one variable - force means overwrite by lower,upper (1=>infeasible) + virtual int applyBounds(int iColumn, double & lower, double & upper, int force) ; + /** Builds up row basis backwards (until original model). + Returns NULL or previous one to apply . + Depends on Free being 0 and impossible for cuts + */ + virtual CbcNodeInfo * buildRowBasis(CoinWarmStartBasis & basis ) const ; + // Default Constructor + CbcPartialNodeInfo (); + + // Constructor from current state + CbcPartialNodeInfo (CbcNodeInfo * parent, CbcNode * owner, + int numberChangedBounds, const int * variables, + const double * boundChanges, + const CoinWarmStartDiff *basisDiff) ; + + // Copy constructor + CbcPartialNodeInfo ( const CbcPartialNodeInfo &); + + // Destructor + ~CbcPartialNodeInfo (); + + /// Clone + virtual CbcNodeInfo * clone() const; + /// Basis diff information + inline const CoinWarmStartDiff *basisDiff() const { + return basisDiff_ ; + } + /// Which variable (top bit if upper bound changing) + inline const int * variables() const { + return variables_; + } + // New bound + inline const double * newBounds() const { + return newBounds_; + } + /// Number of bound changes + inline int numberChangedBounds() const { + return numberChangedBounds_; + } +protected: + /* Data values */ + + /// Basis diff information + CoinWarmStartDiff *basisDiff_ ; + /// Which variable (top bit if upper bound changing) + int * variables_; + // New bound + double * newBounds_; + /// Number of bound changes + int numberChangedBounds_; +private: + + /// Illegal Assignment operator + CbcPartialNodeInfo & operator=(const CbcPartialNodeInfo& rhs); +}; + +#endif //CbcPartialNodeInfo_H + |