MineLink
 All Data Structures Functions Variables Pages
nestedpit.h
1 #ifndef __NESTEDPIT_H__
2 #define __NESTEDPIT_H__
3 
4 #include "../../data_structures/bm/blockmodel.h"
5 #include "../../data_structures/precs/slopes.h"
6 #include "../../utils/exprtk.hpp"
7 
8 namespace delphos {
9 
10 
11 
12 
17 private:
18  const Precedence & _prec;
19  const vector<double> _rf;
20  vector< vector< string> > _materials;
21  const string _value_attr;
22  const string _formula;
23  const string _pit_attr;
24  const bool _multiattr;
25 
26 public:
47  NestedPitInstance(const string& priceformula
48  ,const string& recformula
49  ,const string& rmultformula
50  ,const string& csellformula
51  ,const string& cminformula
52  ,const string& cplantformula
53  ,const string& grade_attr
54  ,const string& tonn_attr
55  ,const vector<double>& rf
56  ,const Precedence& prec
57  ,const string& value_attr
58  ,const string& pit_attr
59  ,const bool& multiattr=true);
60 
74  NestedPitInstance(const string& formula
75  ,const vector<double>& rf
76  ,const Precedence& prec
77  ,const string& value_attr
78  ,const string& pit_attr
79  ,const bool& multiattr=true);
80 
84  const vector<double>& GetRF() const;
85 
97  void AddMaterial(const string& priceformula
98  ,const string& recformula
99  ,const string& rmultformula
100  ,const string& csellformula
101  ,const string& cminformula
102  ,const string& cplantformula
103  ,const string& grade_attr
104  ,const string& tonn_attr);
110  const vector<string>& GetMaterial(const unsigned int& index) const;
115  unsigned int GetNumMaterials() const;
119  const string& GetValueAttr() const;
123  const string& GetPitAttr() const;
127  const Precedence & GetPrecedence() const;
131  const string& GetFormula() const;
132 
137  bool IsMultiattr() const;
138 };
139 
144 private:
145  NestedPitInstance* _pi;
146  vector<unsigned int> _nestedpits;
147  vector<BlockSelection*> _multi_nestedpits;
148 
149 public:
159  ~NestedPits();
164 
168  void SetNestedPits(const vector<unsigned int>& npits);
172  static const unsigned int NO_INDEX;
176  unsigned int GetSize() const;
177 
182  unsigned int GetPitId(const delphos::Block& block) const;
183 
188  unsigned int GetPitId(const BlockIndexType& blockid) const;
189 
194  double GetRF(const delphos::Block& block) const;
195 
200  double GetRF(BlockIndexType blockid) const;
201 
208  delphos::BlockSelection* GetBlocksInPitByIndex(const unsigned int& pitindex) const;
209 
214  delphos::BlockSelection* GetBlocksInPitByRF(const double& rf) const;
215 
224  void StorePitsAsAttribute(const string& attribute,const bool& multiattr=true);
225 
226 };
227 
228 
229 
234 private:
235  NestedPitInstance* _np;
236  CallBackPtr _fp;
237 public:
241  virtual ~NestedPitSolver();
248 
254  virtual bool Run();
255 
259  const NestedPitInstance & GetInstance() const;
260 
265 
270 
276  virtual const bool IsSolved() const;
277 
284 
288  void SetCallBack(delphos::CallBackPtr fp);
289 
293  delphos::CallBackPtr GetCallBack();
294 };
295 
296 
297 
298 
299 }
300 
301 #endif
Defines a case for the nested pits problem.
Definition: nestedpit.h:16
static const unsigned int NO_INDEX
Index of nonexistent Pit.
Definition: nestedpit.h:172
Defines nested pits.
Definition: nestedpit.h:143
delphos::CallBackPtr GetCallBack()
Returns the user run step callback.
Definition: nestedpit.cpp:349
A dummy class that specifies the methods of an algorithm that can solve a nested pit instance...
Definition: nestedpit.h:233
Abstracts a set of blocks (subset of a blockmodel).
Definition: blocksel.h:33
const vector< string > & GetMaterial(const unsigned int &index) const
Returns the indexed material characteritics used in the valorization formula if the the constructor w...
Definition: nestedpit.cpp:264
A utility class to access blocks individually.
Definition: blockmodel.h:1390
bool IsMultiattr() const
Returns true only if each pit will be added as 1 column attribute In case of false, only one column attribute will be created for all pits.
Definition: nestedpit.cpp:289
unsigned int GetNumMaterials() const
Returns the number of materials present in the valorization formula if the the constructor with 6 sub...
Definition: nestedpit.cpp:271
delphos::BlockSelection * GetBlocksInPitByIndex(const unsigned int &pitindex) const
Returns the pit of given index.
Definition: nestedpit.cpp:111
virtual ~NestedPitSolver()
The destructor.
Definition: nestedpit.cpp:335
void SetInstance(delphos::NestedPitInstance &npi)
Set the instance to be solved.
Definition: nestedpit.cpp:313
NestedPitSolver(NestedPitInstance &np)
Creates a new nested Pit Solver based on an instance of the nested Pit Problem.
Definition: nestedpit.cpp:296
void StorePitsAsAttribute(const string &attribute, const bool &multiattr=true)
Saves the nested pits as an attribute or as attributes in the block model.
Definition: nestedpit.cpp:133
const string & GetPitAttr() const
Returns the pit attribute string used as base for the pit attribute string result constructed for eac...
Definition: nestedpit.cpp:280
delphos::BlockSelection * GetBlocksInPitByRF(const double &rf) const
Returns the pit of given revenue factor.
Definition: nestedpit.cpp:118
delphos::NestedPitInstance * GetInstancePtr() const
Return a pointer to the instance being solved.
Definition: nestedpit.cpp:323
Implements a precedence as an explicit set of arcs between blocks. Provides utility functions...
Definition: precs.h:22
const string & GetFormula() const
Returns the formula used in the computation only if the 1 formula constructor was used...
Definition: nestedpit.cpp:222
virtual bool Run()
Calculates the final pit. Returns true on success.
Definition: nestedpit.cpp:327
void SetCallBack(delphos::CallBackPtr fp)
Set the user run step callback.
Definition: nestedpit.cpp:345
unsigned int GetPitId(const delphos::Block &block) const
Returns the index of the Pit minimum that contains given block.
Definition: nestedpit.cpp:77
NestedPitInstance(const string &priceformula, const string &recformula, const string &rmultformula, const string &csellformula, const string &cminformula, const string &cplantformula, const string &grade_attr, const string &tonn_attr, const vector< double > &rf, const Precedence &prec, const string &value_attr, const string &pit_attr, const bool &multiattr=true)
Creates a new instance of the Nested Pit Problem.
Definition: nestedpit.cpp:161
const vector< double > & GetRF() const
Returns the revenue factors.
Definition: nestedpit.cpp:230
void SetNestedPits(const vector< unsigned int > &npits)
Set the nested pits.
Definition: nestedpit.cpp:36
delphos::NestedPitInstance & GetInstance() const
Returns the nested pit instance.
Definition: nestedpit.cpp:31
void AddMaterial(const string &priceformula, const string &recformula, const string &rmultformula, const string &csellformula, const string &cminformula, const string &cplantformula, const string &grade_attr, const string &tonn_attr)
Add a new Material to the valorization formula.
Definition: nestedpit.cpp:235
const Precedence & GetPrecedence() const
Returns the precedence used in the computation.
Definition: nestedpit.cpp:285
virtual const bool IsSolved() const
Checks if the solver was already run or not.
Definition: nestedpit.cpp:331
unsigned int GetSize() const
Returns the number of Pits.
Definition: nestedpit.cpp:72
A base class for object associated to a given block model.
Definition: blockmodel.h:1356
~NestedPits()
Deletes the nested pits.
Definition: nestedpit.cpp:20
const string & GetValueAttr() const
Returns the value attribute string used as base for the value attribute string constructed for each r...
Definition: nestedpit.cpp:276
const NestedPitInstance & GetInstance() const
Retrieves the instance being solved.
Definition: nestedpit.cpp:319
double GetRF(const delphos::Block &block) const
Returns the Revenue factor of the Pit minimum that contains given block.
Definition: nestedpit.cpp:87
virtual delphos::NestedPits * GetNestedPits()
Returns the nested pits.
Definition: nestedpit.cpp:340
NestedPits(NestedPitInstance &pi)
Create new nested pits.
Definition: nestedpit.cpp:15