- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

# /home/coin/svn-release/Blis-0.94.1/Blis/src/BlisBranchObjectBilevel.h

Go to the documentation of this file.

    00001 /*===========================================================================*
    00002  * This file is part of the BiCePS Linear Integer Solver (BLIS).             *
    00003  *                                                                           *
    00004  * BLIS is distributed under the Eclipse Public License as part of the       *
    00005  * COIN-OR repository (http://www.coin-or.org).                              *
    00006  *                                                                           *
    00007  * Authors:                                                                  *
    00008  *                                                                           *
    00009  *          Yan Xu, Lehigh University                                        *
    00010  *          Ted Ralphs, Lehigh University                                    *
    00011  *                                                                           *
    00012  * Conceptual Design:                                                        *
    00013  *                                                                           *
    00014  *          Yan Xu, Lehigh University                                        *
    00015  *          Ted Ralphs, Lehigh University                                    *
    00016  *          Laszlo Ladanyi, IBM T.J. Watson Research Center                  *
    00017  *          Matthew Saltzman, Clemson University                             *
    00018  *                                                                           *
    00019  *                                                                           *
    00020  * Copyright (C) 2001-2013, Lehigh University, Yan Xu, and Ted Ralphs.       *
    00021  * All Rights Reserved.                                                      *
    00022  *===========================================================================*/
    00023
    00024
    00025 //#############################################################################
    00026 // Borrow ideas from COIN/Cbc
    00027 //#############################################################################
    00028
    00029
    00030 #include "BcpsBranchObject.h"
    00031
    00032 #include "BlisModel.h"
    00033
    00034
    00035 //#############################################################################
    00036
    00037
    00038 class BlisBranchObjectBilevel : public BcpsBranchObject {
    00039
    00040  protected:
    00041
    00043     std::deque<int> *branchingSet_;
    00044
    00045  public:
    00046
    00048     BlisBranchObjectBilevel() : BcpsBranchObject()
    00049     {
    00050         type_ = BlisBranchingObjectTypeBilevel;
    00051         branchingSet_ = new std::deque<int>();
    00052     }
    00053
    00055     BlisBranchObjectBilevel(BcpsModel * model)
    00056         : BcpsBranchObject(model) {
    00057         type_ = BlisBranchingObjectTypeBilevel;
    00058         branchingSet_ = new std::deque<int>();
    00059     }
    00060
    00062     BlisBranchObjectBilevel(const BlisBranchObjectBilevel &rhs)
    00063     :
    00064     BcpsBranchObject(rhs), branchingSet_(rhs.branchingSet_) {}
    00065
    00067     BlisBranchObjectBilevel & operator = (const BlisBranchObjectBilevel& rhs);
    00068
    00070     virtual BcpsBranchObject * clone() const {
    00071         return (new BlisBranchObjectBilevel(*this));
    00072     }
    00073
    00075     virtual ~BlisBranchObjectBilevel() { delete branchingSet_; }
    00076
    00078     std::deque<int> *getBranchingSet() const {return branchingSet_;}
    00079
    00081     void addToBranchingSet(int item) {branchingSet_->push_back(item);}
    00082
    00086     virtual double branch(bool normalBranch = false);
    00087
    00089     virtual void print(bool normalBranch);
    00090
    00091  protected:
    00092
    00094     AlpsReturnStatus encodeBlis(AlpsEncoded *encoded) const {
    00095         assert(encoded);
    00096         AlpsReturnStatus status = AlpsReturnStatusOk;
    00097         return status;
    00098     }
    00099
    00101     AlpsReturnStatus decodeBlis(AlpsEncoded &encoded) {
    00102         AlpsReturnStatus status = AlpsReturnStatusOk;
    00103         return status;
    00104     }
    00105
    00106  public:
    00107
    00109     virtual AlpsReturnStatus encode(AlpsEncoded *encoded) const {
    00110         AlpsReturnStatus status = AlpsReturnStatusOk;
    00111
    00112         status = encodeBcps(encoded);
    00113         status = encodeBlis(encoded);
    00114
    00115         return status;
    00116     }
    00117
    00119     virtual AlpsReturnStatus decode(AlpsEncoded &encoded) {
    00120
    00121         AlpsReturnStatus status = AlpsReturnStatusOk;
    00122
    00123         status = decodeBcps(encoded);
    00124         status = decodeBlis(encoded);
    00125
    00126         return status;
    00127     }
    00128
    00129 };
    00130