Dip  0.92.4
MMKP_Instance.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 // Authors: Matthew Galati, SAS Institute Inc. (matthew.galati@sas.com) //
8 // Ted Ralphs, Lehigh University (ted@lehigh.edu) //
9 // Jiadong Wang, Lehigh University (jiw408@lehigh.edu) //
10 // //
11 // Copyright (C) 2002-2019, Lehigh University, Matthew Galati, and Ted Ralphs//
12 // All Rights Reserved. //
13 //===========================================================================//
14 
15 #ifndef MMKP_INSTANCE_INCLUDED
16 #define MMKP_INSTANCE_INCLUDED
17 
18 //===========================================================================//
19 #include "UtilMacros.h"
20 using namespace std;
21 //===========================================================================//
22 class MMKP_Param;
23 //===========================================================================//
24 
25 //===========================================================================//
38 //===========================================================================//
40 private:
42  int m_nKnapRows; //m
43  int m_nGroupRows; //n
44  int m_nGroupCols; //l
45  double * m_capacity; //b[k = 1..m]
46  double * m_value; //v[i,j]
47  double ** m_weight; //r[k,i,j]
48 
51  double m_bestKnownLB;
52  double m_bestKnownUB;
53 
54 
55 public:
57  inline const int getNKnapRows () const {return m_nKnapRows; }
58  inline const int getNGroupRows() const {return m_nGroupRows;}
59  inline const int getNGroupCols() const {return m_nGroupCols;}
60  inline const double * getCapacity () const {return m_capacity; }
61  inline const double * getValue () const {return m_value; }
62  inline const double * const* getWeight()const {return m_weight; }
63 
64 public:
66  void readInstance (string & fileName,
67  string & dataFormat);
68  void readInstanceSimon(string & fileName);
69  void readBestKnown(string & fileName,
70  string & instanceName);
71 
72  inline void initMembers(){
73  m_nKnapRows = 0;
74  m_nGroupRows = 0;
75  m_nGroupCols = 0;
76  m_capacity = NULL;
77  m_value = NULL;
78  m_weight = NULL;
79  m_isProvenOptimal = false;
80  m_bestKnownLB = -1.e20;
81  m_bestKnownUB = 1.e20;
82  }
83 
84  inline const int getIndexIJ(const int i,
85  const int j) const{
86  return (i * m_nGroupCols) + j;
87  }
88 
89  inline pair<int,int> getIndexInv(const int index) const {
90  return make_pair(index / m_nGroupCols, index % m_nGroupCols);
91  }
92 
93  inline const double getBestKnownLB() const {return m_bestKnownLB;}
94  inline const double getBestKnownUB() const {return m_bestKnownUB;}
95 
96 public:
101  initMembers();
102  };
103 
105  MMKP_Instance(string & fileName) {
106  string dataFormat = "hifi";
107  initMembers();
108  readInstance(fileName, dataFormat);
109  }
110 
113  int k;
114  UTIL_DELARR(m_capacity);
115  UTIL_DELARR(m_value);
116  for(k = 0; k < m_nKnapRows; k++)
117  UTIL_DELARR(m_weight[k]);
118  UTIL_DELARR(m_weight);
119  };
120 };
121 
122 #endif
bool m_isProvenOptimal
MMKP_Instance best known LB/UB.
Definition: MMKP_Instance.h:50
const int getIndexIJ(const int i, const int j) const
Definition: MMKP_Instance.h:84
const double getBestKnownUB() const
Definition: MMKP_Instance.h:94
#define UTIL_DELARR(x)
Definition: UtilMacros.h:29
const double * getValue() const
Definition: MMKP_Instance.h:61
double m_bestKnownLB
Definition: MMKP_Instance.h:51
~MMKP_Instance()
Default destructor.
MMKP_Instance(string &fileName)
Default constructor.
const int getNGroupCols() const
Definition: MMKP_Instance.h:59
double ** m_weight
Definition: MMKP_Instance.h:47
double m_bestKnownUB
Definition: MMKP_Instance.h:52
const double getBestKnownLB() const
Definition: MMKP_Instance.h:93
const double * getCapacity() const
Definition: MMKP_Instance.h:60
void initMembers()
Definition: MMKP_Instance.h:72
const double *const * getWeight() const
Definition: MMKP_Instance.h:62
double * m_capacity
Definition: MMKP_Instance.h:45
const int getNGroupRows() const
Definition: MMKP_Instance.h:58
pair< int, int > getIndexInv(const int index) const
Definition: MMKP_Instance.h:89
MMKP_Instance()
Default constructor.
double * m_value
Definition: MMKP_Instance.h:46
const int getNKnapRows() const
Definition: MMKP_Instance.h:57
int m_nKnapRows
MMKP_Instance problem instance data.
Definition: MMKP_Instance.h:42