1 #ifndef __NESTEDPIT_H__
2 #define __NESTEDPIT_H__
4 #include "../../data_structures/bm/blockmodel.h"
5 #include "../../data_structures/precs/slopes.h"
6 #include "../../utils/exprtk.hpp"
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;
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
57 ,
const string& value_attr
58 ,
const string& pit_attr
59 ,
const bool& multiattr=
true);
75 ,
const vector<double>& rf
77 ,
const string& value_attr
78 ,
const string& pit_attr
79 ,
const bool& multiattr=
true);
84 const vector<double>&
GetRF()
const;
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;
146 vector<unsigned int> _nestedpits;
147 vector<BlockSelection*> _multi_nestedpits;
188 unsigned int GetPitId(
const BlockIndexType& blockid)
const;
200 double GetRF(BlockIndexType blockid)
const;
276 virtual const bool IsSolved()
const;
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