Dip-All  0.91.0
MMKP_DecompApp.h
Go to the documentation of this file.
1 //===========================================================================//
2 // This file is part of the Decomp Solver Framework. //
3 // //
4 // Decomp is distributed under the Common Public License as part of the //
5 // COIN-OR repository (http://www.coin-or.org). //
6 // //
7 // Author: Matthew Galati, Lehigh University //
8 // //
9 // Copyright (C) 2002-2015, Lehigh University, Matthew Galati, and Ted Ralphs//
10 // All Rights Reserved. //
11 //===========================================================================//
12 
13 #ifndef MMKP_DECOMPAPP_INCLUDED
14 #define MMKP_DECOMPAPP_INCLUDED
15 
16 //===========================================================================//
17 #include "DecompApp.h"
18 
19 //===========================================================================//
20 #include "MMKP_Instance.h"
21 #include "MMKP_MCKnap.h"
22 #include "MMKP_Param.h"
23 #include "MMKP_MemPool.h"
24 //===========================================================================//
25 
26 //===========================================================================//
37 //===========================================================================//
38 class MMKP_DecompApp : public DecompApp {
39 private:
41  const string m_classTag;
42 
45 
48 
50  vector<MMKP_MCKnap*> m_mcknap;
51 
53  double * m_objective;
54 
56  vector<DecompConstraintSet*> m_models;
57 
60 
61 public:
62  /* @name Inherited (from virtual) methods. */
63 
65  virtual DecompSolverStatus solveRelaxed(const int whichBlock,
66  const double * redCostX,
67  const double convexDual,
68  DecompVarList & varList);
69 
71  virtual void printOriginalColumn(const int index,
72  ostream * os = &cout) const;
73 
74 public:
78  void initializeApp(UtilParameters & utilParam);
79 
80  /* Create models. */
81  void createModels();
82 
83  /* Create MCKP model. */
86  int whichKnap = 0);
88  int whichKnap1,
89  int whichKnap2);
91  vector<int> & whichKnaps);
94 
95  /* Create MDKP model. */
97  int whichKnap = 0);
101  vector<int> & whichKnaps);
102 
103 public:
108  DecompApp (utilParam),
109  m_classTag ("MMKP-APP"),
110  m_mcknap (),
111  m_objective (NULL),
112  m_auxMemPool()
113  {
114  initializeApp(utilParam);
115  }
116 
117  virtual ~MMKP_DecompApp() {
121  };
122 };
123 
124 #endif
vector< DecompConstraintSet * > m_models
The various model constraint systems used for different algos.
double * m_objective
The model objective coefficients (original space).
void UtilDeleteVectorPtr(vector< T * > &vectorPtr, typename vector< T * >::iterator first, typename vector< T * >::iterator last)
Definition: UtilMacros.h:288
MMKP_Param m_appParam
Application specific parameters.
virtual void printOriginalColumn(const int index, ostream *os=&cout) const
Print an original column (format for this app).
void createModelPartMC2KP(DecompConstraintSet *model, int whichKnap1, int whichKnap2)
Initialize application.
MMKP_MemPool m_auxMemPool
Auxiliary memory storage.
void createModelPartMCKP(DecompConstraintSet *model, int whichKnap=0)
Initialize application.
const string m_classTag
Class id tag (for log / debugging).
MMKP_Instance m_instance
MMKP problem instance data.
#define UTIL_DELARR(x)
Definition: UtilMacros.h:29
void initializeApp(UtilParameters &utilParam)
Initialize application.
void createModelPartMMKPHalf(DecompConstraintSet *model)
Initialize application.
void createModelPartMDKPCompl(DecompConstraintSet *model, int whichKnap=0)
Initialize application.
void createModelPartMMKP(DecompConstraintSet *model)
Initialize application.
virtual ~MMKP_DecompApp()
Default constructor.
vector< MMKP_MCKnap * > m_mcknap
MMKP_MCKnap object for each knapsack row.
void createModels()
Initialize application.
DecompSolverStatus
Definition: Decomp.h:170
std::list< DecompVar * > DecompVarList
Definition: Decomp.h:53
void createModelPartMCP(DecompConstraintSet *model)
Initialize application.
void createModelPartMDKP(DecompConstraintSet *model)
Initialize application.
The main application class.
Definition: DecompApp.h:50
void createModelPartMDKPHalf(DecompConstraintSet *model)
Initialize application.
virtual DecompSolverStatus solveRelaxed(const int whichBlock, const double *redCostX, const double convexDual, DecompVarList &varList)
Solve the relaxed problem.
MMKP_DecompApp(UtilParameters &utilParam)
Default constructor.