DecompAlgoC.h

Go to the documentation of this file.
00001 //===========================================================================//
00002 // This file is part of the DIP Solver Framework.                            //
00003 //                                                                           //
00004 // DIP is distributed under the Eclipse Public License as part of the        //
00005 // COIN-OR repository (http://www.coin-or.org).                              //
00006 //                                                                           //
00007 // Author: Matthew Galati, SAS Institute Inc. (matthew.galati@sas.com)       //
00008 //                                                                           //
00009 // Conceptual Design: Matthew Galati, SAS Institute Inc.                     //
00010 //                    Ted Ralphs, Lehigh University                          //
00011 //                                                                           //
00012 // Copyright (C) 2002-2015, Lehigh University, Matthew Galati, Ted Ralphs    //
00013 // All Rights Reserved.                                                      //
00014 //===========================================================================//
00015 
00016 
00017 //===========================================================================//
00018 #ifndef DecompAlgoC_h_
00019 #define DecompAlgoC_h_
00020 
00021 //===========================================================================//
00027 //===========================================================================//
00028 
00029 //===========================================================================//
00030 #include "Decomp.h"
00031 #include "DecompAlgo.h"
00032 
00033 //===========================================================================//
00034 class DecompAlgoC : public DecompAlgo {
00035 private:
00036 
00037    //----------------------------------------------------------------------//
00042    //----------------------------------------------------------------------//
00046    std::string m_classTag;
00051    //-----------------------------------------------------------------------//
00056    //-----------------------------------------------------------------------//
00060    void createMasterProblem(DecompVarList& initVars);
00061 
00067    void recomposeSolution(const double* solution,
00068                           double*        rsolution);
00069 
00074    //-----------------------------------------------------------------------//
00079    //-----------------------------------------------------------------------//
00080 
00085    bool updateObjBound(const double mostNegRC = -DecompBigNum);
00086 
00087    void phaseInit(DecompPhase& phase) {
00088       if (getNodeIndex() == 0) {
00089          phase = PHASE_CUT;
00090       }
00091    }
00092    void phaseDone();//chance to run DC
00093 
00097    void phaseUpdate(DecompPhase&   phase,
00098                     DecompStatus& status);
00103    int generateInitVars(DecompVarList& initVars) {
00104       return 0;
00105    }
00106 
00107    void setMasterBounds(const double* lbs,
00108                         const double* ubs);
00109    void setSubProbBounds(const double* lbs,
00110                          const double* ubs) {};
00111 
00112 public:
00113    virtual DecompSolverResult*
00114    solveDirect(const DecompSolution* startSol  = NULL);
00115 
00116 
00122    //-----------------------------------------------------------------------//
00127    //-----------------------------------------------------------------------//
00128 private:
00132    DecompAlgoC(const DecompAlgoC&);
00133    DecompAlgoC& operator=(const DecompAlgoC&);
00134 
00135 public:
00139    DecompAlgoC(DecompApp*             app,
00140                UtilParameters*        utilParam):
00141       DecompAlgo(CUT, app, utilParam),
00142       m_classTag("D-ALGOC") {
00143       std::string paramSection = DecompAlgoStr[CUT];
00144       initSetup(utilParam, paramSection);
00145    }
00146 
00147    DecompAlgoC(DecompApp*       app,
00148                UtilParameters* utilParam,
00149                std::string&          paramSection):
00150       DecompAlgo(CUT, app, utilParam),
00151       m_classTag("D-ALGOC") {
00152       initSetup(utilParam, paramSection);
00153    }
00154 
00155 
00159    ~DecompAlgoC() {}
00163 };
00164 
00165 #endif

Generated on 3 Jun 2015 for Dip-All by  doxygen 1.6.1