diff options
author | Harpreet | 2016-08-04 15:25:44 +0530 |
---|---|---|
committer | Harpreet | 2016-08-04 15:25:44 +0530 |
commit | 9fd2976931c088dc523974afb901e96bad20f73c (patch) | |
tree | 22502de6e6988d5cd595290d11266f8432ad825b /build/Bonmin/include/coin/CbcPartialNodeInfo.hpp | |
download | FOSSEE-Optim-toolbox-development-9fd2976931c088dc523974afb901e96bad20f73c.tar.gz FOSSEE-Optim-toolbox-development-9fd2976931c088dc523974afb901e96bad20f73c.tar.bz2 FOSSEE-Optim-toolbox-development-9fd2976931c088dc523974afb901e96bad20f73c.zip |
initial add
Diffstat (limited to 'build/Bonmin/include/coin/CbcPartialNodeInfo.hpp')
-rw-r--r-- | build/Bonmin/include/coin/CbcPartialNodeInfo.hpp | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/build/Bonmin/include/coin/CbcPartialNodeInfo.hpp b/build/Bonmin/include/coin/CbcPartialNodeInfo.hpp new file mode 100644 index 0000000..446a3eb --- /dev/null +++ b/build/Bonmin/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 + |