Dip  0.92.4
ATM_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 ATM_INSTANCE_INCLUDED
16 #define ATM_INSTANCE_INCLUDED
17 
18 // --------------------------------------------------------------------- //
19 #include "UtilMacros.h"
20 
21 using namespace std;
22 
23 // --------------------------------------------------------------------- //
24 
51 // --------------------------------------------------------------------- //
52 class ATM_Instance {
53 
54 private:
56  int m_nAtms; //number of atms (20 of these)
57  int m_nDates; //number of dates (272 of these)
58  map<string, int> m_strToIntAtms; //map from name to index (atms)
59  map<string, int> m_strToIntDates; //map from date to index (dates)
60  vector<string> m_intToStrAtms; //map from index to name (atms)
61  vector<string> m_intToStrDates; //map from index to date (dates)
62  vector<int> m_pairsAD; //pairs of indices with observations
63 
64  double * m_a_ad; //a[a,d]
65  double * m_b_ad; //b[a,d]
66  double * m_c_ad; //c[a,d]
67  double * m_d_ad; //d[a,d]
68  double * m_e_ad; //e[a,d]
69  double * m_w_ad; //w[a,d]
70  double * m_B_d; //B[d]
71  double * m_K_a; //K[a]
72 
73 public:
75  inline const int getNAtms () const {return m_nAtms; }
76  inline const int getNDates () const {return m_nDates;}
77  inline const int getNPairs () const {
78  return static_cast<int>(m_pairsAD.size());
79  }
80  inline const vector<int> & getPairsAD() const {
81  return m_pairsAD;
82  }
83  inline const int getIndexAD(int a, int d) const {
84  return a * m_nDates + d;
85  }
86  inline const pair<int,int> getIndexADInv(int ad) const {
87  return make_pair(ad / m_nDates, ad % m_nDates);
88  }
89  inline const double * get_a_ad() const {return m_a_ad;}
90  inline const double * get_b_ad() const {return m_b_ad;}
91  inline const double * get_c_ad() const {return m_c_ad;}
92  inline const double * get_d_ad() const {return m_d_ad;}
93  inline const double * get_e_ad() const {return m_e_ad;}
94  inline const double * get_w_ad() const {return m_w_ad;}
95  inline const double * get_B_d() const {return m_B_d;}
96  inline const double * get_K_a() const {return m_K_a;}
97  inline const string & getAtmName(const int a) const{
98  return m_intToStrAtms[a];
99  }
100  inline const string & getDateName(const int d) const{
101  return m_intToStrDates[d];
102  }
103 
104 
105 public:
107  void readInstance(string & fileNameA,
108  string & fileNameD,
109  string & fileNameAD);
110  void generateRandom(const int nAtms,
111  const int nDates,
112  const int seed);
113  void initMembers(){
114  m_nAtms = 0;
115  m_nDates= 0;
116  m_a_ad = NULL;
117  m_b_ad = NULL;
118  m_c_ad = NULL;
119  m_d_ad = NULL;
120  m_e_ad = NULL;
121  m_w_ad = NULL;
122  m_B_d = NULL;
123  m_K_a = NULL;
124  }
125 
126 public:
130  ATM_Instance(){initMembers();};
131 
132  ATM_Instance(string & fileNameA,
133  string & fileNameD,
134  string & fileNameAD)
135  {
136  initMembers();
137  readInstance(fileNameA,
138  fileNameD,
139  fileNameAD);
140  }
141 
143  UTIL_DELARR(m_a_ad);
144  UTIL_DELARR(m_b_ad);
145  UTIL_DELARR(m_c_ad);
146  UTIL_DELARR(m_d_ad);
147  UTIL_DELARR(m_e_ad);
148  UTIL_DELARR(m_w_ad);
149  UTIL_DELARR(m_B_d);
150  UTIL_DELARR(m_K_a);
151  };
152 };
153 
154 #endif
ATM_Instance()
Default constructor.
Definition: ATM_Instance.h:130
const string & getAtmName(const int a) const
Definition: ATM_Instance.h:97
vector< string > m_intToStrDates
Definition: ATM_Instance.h:61
double * m_c_ad
Definition: ATM_Instance.h:66
const double * get_e_ad() const
Definition: ATM_Instance.h:93
double * m_d_ad
Definition: ATM_Instance.h:67
const int getIndexAD(int a, int d) const
Definition: ATM_Instance.h:83
const double * get_c_ad() const
Definition: ATM_Instance.h:91
#define UTIL_DELARR(x)
Definition: UtilMacros.h:29
double * m_B_d
Definition: ATM_Instance.h:70
vector< int > m_pairsAD
Definition: ATM_Instance.h:62
double * m_K_a
Definition: ATM_Instance.h:71
int m_nAtms
ATM_Instance problem instance data.
Definition: ATM_Instance.h:56
const int getNPairs() const
Definition: ATM_Instance.h:77
const double * get_w_ad() const
Definition: ATM_Instance.h:94
const string & getDateName(const int d) const
Definition: ATM_Instance.h:100
void initMembers()
Definition: ATM_Instance.h:113
double * m_w_ad
Definition: ATM_Instance.h:69
map< string, int > m_strToIntDates
Definition: ATM_Instance.h:59
const int getNDates() const
Definition: ATM_Instance.h:76
const double * get_b_ad() const
Definition: ATM_Instance.h:90
~ATM_Instance()
Default constructor.
Definition: ATM_Instance.h:142
double * m_b_ad
Definition: ATM_Instance.h:65
const pair< int, int > getIndexADInv(int ad) const
Definition: ATM_Instance.h:86
const int getNAtms() const
Definition: ATM_Instance.h:75
double * m_a_ad
Definition: ATM_Instance.h:64
vector< string > m_intToStrAtms
Definition: ATM_Instance.h:60
const double * get_K_a() const
Definition: ATM_Instance.h:96
const vector< int > & getPairsAD() const
Definition: ATM_Instance.h:80
double * m_e_ad
Definition: ATM_Instance.h:68
const double * get_a_ad() const
Definition: ATM_Instance.h:89
map< string, int > m_strToIntAtms
Definition: ATM_Instance.h:58
const double * get_d_ad() const
Definition: ATM_Instance.h:92
const double * get_B_d() const
Definition: ATM_Instance.h:95
ATM_Instance(string &fileNameA, string &fileNameD, string &fileNameAD)
Default constructor.
Definition: ATM_Instance.h:132