Dip  0.92.4
ATM_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 // 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_DECOMPAPP_INCLUDED
16 #define ATM_DECOMPAPP_INCLUDED
17 
18 //===========================================================================//
19 #include "DecompApp.h"
20 //===========================================================================//
21 #include "ATM_Param.h"
22 #include "ATM_Instance.h"
23 
24 
25 //===========================================================================//
36 //===========================================================================//
37 class ATM_DecompApp : public DecompApp {
38 private:
40  const string m_classTag;
41 
44 
47 
49  double * m_objective;
50 
52  vector<DecompConstraintSet*> m_models;
53 
54 public:
55  /* @name Inherited (from virtual) methods. */
56  virtual bool APPisUserFeasible(const double * x,
57  const int nCols,
58  const double tolZero);
59 
60 public:
64  void initializeApp();
65 
66  /* Create models. */
67  void createModels();
68 
69 
70  //create model
72  const int atmIndex);
74  const int atmIndex);
76  const int atmIndex);
77 
78  DecompConstraintSet * createModelCore1(bool includeCount = true);
80  bool includeCount = true);
81 
84 
87 
88  //counts
89  inline const int numCoreCols() const {
90  //--- for a in A, d in D:
91  //--- f+[a,d], f-[a,d] >= 0
92  //--- f-[a,d] <= w[a,d]
93  //--- v[a,d] in {0,1}
94  //--- for a in A:
95  //--- x2[a] in [0,1], x3[a] >= 0
96  //--- for a in A, t in T
97  //--- x1[a,t] in {0,1}, z[a,t] >= 0
98  int nAtms = m_instance.getNAtms();
99  int nPairs = m_instance.getNPairs();
100  int nCols = (2 * (getNAtmsSteps() + nPairs + nAtms)) + nPairs;
101  return nCols;
102  }
103 
104  inline const int getNAtmsSteps() const {
106  return m_instance.getNAtms() * (m_appParam.NumSteps+1);
107  else
109  }
110 
111  //---
112  //--- Columns
113  //--- x1[a,t] (binary)
114  //--- z [a,t]
115  //--- f+[a,d]
116  //--- f-[a,d]
117  //--- x2[a]
118  //--- x3[a]
119  //--- v[a,d] (binary)
120  //---
122  const int atmIndex = -1,
123  const int dateIndex = -1);
124 
125  inline const int getColOffset_x1() const {
126  return 0;
127  }
128  inline const int getColOffset_z() const {
129  return getColOffset_x1() + getNAtmsSteps();
130  }
131  inline const int getColOffset_fp() const {
132  return getColOffset_z() + getNAtmsSteps();
133  }
134  inline const int getColOffset_fm() const {
135  return getColOffset_fp() + m_instance.getNPairs();
136  }
137  inline const int getColOffset_x2() const {
138  return getColOffset_fm() + m_instance.getNPairs();
139  }
140  inline const int getColOffset_x3() const {
141  return getColOffset_x2() + m_instance.getNAtms();
142  }
143  inline const int getColOffset_v() const {
144  return getColOffset_x3() + m_instance.getNAtms();
145  }
146 
147  inline const int colIndex_x1(const int a, const int t) const {
148  int tLen = m_appParam.NumSteps;
150  tLen++;
151  return getColOffset_x1() + ((a * tLen) + t);
152  }
153  inline const int colIndex_z(const int a, const int t) const {
154  int tLen = m_appParam.NumSteps;
156  tLen++;
157  return getColOffset_z() + ((a * tLen) + t);
158  }
159  inline const int colIndex_fp(const int pairIndex) const {
160  return getColOffset_fp() + pairIndex;
161  }
162  inline const int colIndex_fm(const int pairIndex) const {
163  return getColOffset_fm() + pairIndex;
164  }
165  inline const int colIndex_x2(const int a) const {
166  return getColOffset_x2() + a;
167  }
168  inline const int colIndex_x3(const int a) const {
169  return getColOffset_x3() + a;
170  }
171  inline const int colIndex_v(const int pairIndex) const {
172  return getColOffset_v() + pairIndex;
173  }
174 
175  //column names
177  const string prefix,
178  const int offset);
180  const string prefix,
181  const int offset);
183  const string prefix,
184  const int offset);
185 
186 
187 public:
192  DecompApp (utilParam),
193  m_classTag ("ATM-APP"),
194  m_objective (NULL)
195  {
196  m_appParam.getSettings(utilParam);
197 
198  if (m_appParam.LogLevel >= 1) {
200  }
201 
202  initializeApp();
203  };
204 
205  virtual ~ATM_DecompApp() {
206  //UTIL_DELARR(m_objective);
208  };
209 };
210 
211 #endif
const int getColOffset_x2() const
Initialize application.
const int getNAtmsSteps() const
Initialize application.
void UtilDeleteVectorPtr(vector< T * > &vectorPtr, typename vector< T * >::iterator first, typename vector< T * >::iterator last)
Definition: UtilMacros.h:288
virtual ~ATM_DecompApp()
Default constructor.
int LogLevel
Definition: ATM_Param.h:33
const int colIndex_x2(const int a) const
Initialize application.
const string m_classTag
Class id tag (for log / debugging).
Definition: ATM_DecompApp.h:40
void createModels()
Initialize application.
const int colIndex_x3(const int a) const
Initialize application.
int createConPickOne(DecompConstraintSet *model, const int atmIndex)
Initialize application.
void addColumnNamesAD(DecompConstraintSet *model, const string prefix, const int offset)
Initialize application.
void initializeApp()
Initialize application.
void createModelColumns(DecompConstraintSet *model, const int atmIndex=-1, const int dateIndex=-1)
Initialize application.
const int getColOffset_z() const
Initialize application.
vector< DecompConstraintSet * > m_models
The various model constraint systems used for different algos.
Definition: ATM_DecompApp.h:52
void dumpSettings(ostream *os=&cout)
Definition: ATM_Param.h:60
bool UseTightModel
Definition: ATM_Param.h:39
DecompConstraintSet * createModelRelax1(const int a, bool includeCount=true)
Initialize application.
DecompConstraintSet * createModelRelaxCount()
Initialize application.
const int colIndex_fm(const int pairIndex) const
Initialize application.
const int getNPairs() const
Definition: ATM_Instance.h:77
int NumSteps
Definition: ATM_Param.h:38
const int getColOffset_fp() const
Initialize application.
const int getColOffset_x1() const
Initialize application.
ATM_DecompApp(UtilParameters &utilParam)
Default constructor.
DecompConstraintSet * createModelCoreCount()
Initialize application.
const int getColOffset_fm() const
Initialize application.
DecompConstraintSet * createModelCore2()
Initialize application.
const int getNAtms() const
Definition: ATM_Instance.h:75
DecompConstraintSet * createModelRelax2(const int d)
Initialize application.
DecompConstraintSet * createModelCore1(bool includeCount=true)
Initialize application.
int createConCount(DecompConstraintSet *model, const int atmIndex)
Initialize application.
int createConZtoX(DecompConstraintSet *model, const int atmIndex)
Initialize application.
virtual bool APPisUserFeasible(const double *x, const int nCols, const double tolZero)
Method to determine if the solution (x) is feasible to the original model.
const int colIndex_x1(const int a, const int t) const
Initialize application.
ATM_Instance m_instance
ATM problem instance data.
Definition: ATM_DecompApp.h:43
ATM_Param m_appParam
Application specific parameters.
Definition: ATM_DecompApp.h:46
const int numCoreCols() const
Initialize application.
Definition: ATM_DecompApp.h:89
const int getColOffset_x3() const
Initialize application.
void getSettings(UtilParameters &utilParam)
Definition: ATM_Param.h:45
void addColumnNamesA(DecompConstraintSet *model, const string prefix, const int offset)
Initialize application.
double * m_objective
The model objective coefficients (original space).
Definition: ATM_DecompApp.h:49
const int colIndex_fp(const int pairIndex) const
Initialize application.
const int getColOffset_v() const
Initialize application.
const int colIndex_z(const int a, const int t) const
Initialize application.
void addColumnNamesAT(DecompConstraintSet *model, const string prefix, const int offset)
Initialize application.
const int colIndex_v(const int pairIndex) const
Initialize application.
The main application class.
Definition: DecompApp.h:48