FMT 1.2.0
Forest management tools for forest planning
Loading...
Searching...
No Matches
FMTYieldModelDecisionTree.h
Go to the documentation of this file.
1
2#include "FMTYieldModel.h"
3#include <vector>
4#include <string>
5#include <memory>
6#include <map>
7#include <boost/thread/recursive_mutex.hpp>
8
9#ifndef FMTYIELDMODELDECISIONTREE_Hm_included
10#define FMTYIELDMODELDECISIONTREE_Hm_included
11
12namespace Models
13{
14 class FMTModel;
15}
16
17namespace Core
18{
19 class FMTMask;
20 class FMTConstraint;
21 class FMTOutput;
22 // DocString: FMTYieldModelDecisionTree
27 {
28
29 public:
30 // DocString: FMTYieldModelDecisionTree::FMTYieldModelDecisionTree()
35 // DocString: FMTYieldModelDecisionTree::FMTYieldModelDecisionTree(const FMTYieldModelDecisionTree& rhs)
41 // DocString: FMTYieldModelDecisionTree::operator = (const FMTYieldModelDecisionTree& rhs)
48 // DocString: FMTYieldModelDecisionTree::~FMTYieldModelDecisionTree()
53 // DocString: FMTYieldModelDecisionTree::FMTYieldModelDecisionTree(const boost::property_tree::ptree& jsonProps, std::vector<std::string>& inputYields)
60 FMTYieldModelDecisionTree(const boost::property_tree::ptree& jsonProps,const std::vector<std::string>& inputYields,const Core::FMTMask& mainmask);
61 // DocString: FMTYieldModelDecisionTree::clone()
66 std::unique_ptr<FMTYieldModel>clone() const;
67 // DocString: FMTYieldModelDecisionTree::predict
73 const std::vector<double>predict(const Core::FMTYieldRequest& request) const;
74 // DocString: FMTYieldModelDecisionTree::getModelType()
79 static std::string getModelType();
80 // DocString: FMTYieldModelDecisionTree::preSolve
87 virtual std::unique_ptr<FMTYieldModel> preSolve(const FMTMaskFilter& filter,
88 const std::vector<FMTTheme>& newthemes) const;
89 // DocString: FMTYieldModelDecisionTree::postSolve
96 virtual std::unique_ptr<FMTYieldModel> postSolve(const FMTMaskFilter& filter,
97 const std::vector<FMTTheme>& basethemes) const;
98 // DocString: FMTyieldmodeldecisiontreel::getPeriodicValues
103 virtual std::vector<std::vector<double>>getPeriodicValues() const;
104 private:
105 // DocString: FMTYieldModelDecisionTree::m_mtx
107 //mutable std::recursive_mutex m_mtx;
108 mutable boost::recursive_mutex m_mtx;
109 // DocString: FMTYieldModelDecisionTree::m_values
111 mutable std::map<size_t, std::vector<double>>m_values;
112 // DocString: FMTYieldModelDecisionTree::m_reference
114 std::unique_ptr<FMTOutput> m_reference;
115 // DocString: FMTYieldModelDecisionTree::m_nodes
117 std::vector<FMTConstraint>m_nodes;
118 // DocString: FMTYieldModelDecisionTree::m_default_values
120 std::vector<double>m_default_values;
121 // DocString: FMTYieldModelDecisionTree::m_update
123 std::string m_update;
124 // DocString: FMTYieldModelDecisionTree::m_JSON_PROP_TREE
126 const std::string m_JSON_PROP_TREE = "Tree";
127 // DocString: FMTYieldModelDecisionTree::m_JSON_PROP_DECISIONS
129 const std::string m_JSON_PROP_DECISIONS = "Decisions";
130 // DocString: FMTYieldModelDecisionTree::m_JSON_PROP_REFERENCE
132 const std::string m_JSON_PROP_REFERENCE = "Reference";
133 // DocString: FMTYieldModelDecisionTree::m_JSON_PROP_DEFAULT
135 const std::string m_JSON_PROP_DEFAULT = "Default";
136 // DocString: FMTYieldModelDecisionTree::m_JSON_PROP_UPDATE
138 const std::string m_JSON_PROP_UPDATE = "Update";
139 // DocString: FMTYieldModelDecisionTree::_getMask
144 Core::FMTMask _getMask() const;
145 // DocString: FMTYieldModelDecisionTree::_buildConstraint
156 Core::FMTConstraint _buildConstraint(const std::string& name, const std::string& yld, const Core::FMTMask& mask, const double& lowerbound, const double& upperbound, const int& lag) const;
157 // DocString: FMTYieldModelDecisionTree::_getADecision
166 size_t _getADecision(const std::unique_ptr<Models::FMTModel>& p_naturalGrowth,
167 size_t p_constraint_id, int p_period, int p_update) const;
168 // DocString: FMTYieldModelDecisionTree::_getNaturalGrowth
174 std::unique_ptr<Models::FMTModel> _getNaturalGrowth(const Core::FMTYieldRequest& request) const;
175 // DocString: FMTYieldModelDecisionTree::_modify
183 std::unique_ptr<FMTYieldModel> _modify(const FMTMaskFilter& filter,
184 const std::vector<FMTTheme>& newthemes, bool preSolve = true) const;
185 // DocString: FMTYieldModelDecisionTree::_getUpdatePeriod
191 int _getUpdatePeriod(const Core::FMTYieldRequest& p_request) const;
192 };
193}
194
195#endif
Representation of a line in the optimize section, an objective being considered a constraint.
Definition: FMTConstraint.h:52
Filter built from masks used to preSolve and postsolve FMTMask objects.
Definition: FMTMaskFilter.h:31
Core class holding, as a boost dynamic bitset, which theme attributes are part of a mask.
Definition: FMTMask.h:96
Yield model using a decision tree based on the growth outputs of the model to get yield values.
Definition: FMTYieldModelDecisionTree.h:27
virtual std::unique_ptr< FMTYieldModel > preSolve(const FMTMaskFilter &filter, const std::vector< FMTTheme > &newthemes) const
Return a presolved copy of the yield model.
virtual std::unique_ptr< FMTYieldModel > postSolve(const FMTMaskFilter &filter, const std::vector< FMTTheme > &basethemes) const
Return a postsolved copy of the yield model, restoring the original output and constraint masks.
virtual std::vector< std::vector< double > > getPeriodicValues() const
Try to turn the yield model into periodic constant values.
const std::vector< double > predict(const Core::FMTYieldRequest &request) const
Run the decision tree, building a natural growth model if needed, and return the predictions.
~FMTYieldModelDecisionTree()=default
Default destructor for FMTYieldModelDecisionTree.
FMTYieldModelDecisionTree()=default
Default constructor for FMTYieldModelDecisionTree.
static std::string getModelType()
Return the model type of the yield model.
FMTYieldModelDecisionTree(const boost::property_tree::ptree &jsonProps, const std::vector< std::string > &inputYields, const Core::FMTMask &mainmask)
Construct a decision tree yield model from a JSON tree, an input yield name list and the global mask.
FMTYieldModelDecisionTree & operator=(const FMTYieldModelDecisionTree &rhs)=default
Copy assignment operator for FMTYieldModelDecisionTree.
std::unique_ptr< FMTYieldModel > clone() const
clone the yield model.
FMTYieldModelDecisionTree(const FMTYieldModelDecisionTree &rhs)
Copy constructor for FMTYieldModelDecisionTree.
Abstract class to be implemented as a machine learning yield model.
Definition: FMTYieldModel.h:45
Request for yield values using a development and optionally a graph vertex.
Definition: FMTYieldRequest.h:37
Definition: FMTYieldModel.h:30
The Core namespace provides classes for simulating stands/strata growth/harvest through time.
Definition: FMTAction.h:34
Namespace containing all enumerator and classes used to construct or manipulate the different type of...
Definition: FMTAreaParser.h:54