FMT 1.2.0
Forest management tools for forest planning
Loading...
Searching...
No Matches
FMTYieldModel.h
Go to the documentation of this file.
1/*
2Copyright (c) 2019 Gouvernement du Québec
3
4SPDX-License-Identifier: LiLiQ-R-1.1
5License-Filename: LICENSES/EN/LiLiQ-R11unicode.txt
6*/
7#include "FMTObject.h"
8#include <boost/serialization/serialization.hpp>
9#include <boost/serialization/nvp.hpp>
10
11
12#ifndef FMTYIELDMODEL_Hm_included
13#define FMTYIELDMODEL_Hm_included
14
15namespace Graph
16{
17 class FMTPredictor;
18}
19
20namespace Models
21{
22 class FMTModel;
23}
24
25namespace boost
26{
27 namespace property_tree
28 {
29 template < class Key, class Data, class KeyCompare >
32 }
33}
34
35namespace Core
36{
37 class FMTYieldRequest;
38 class FMTTheme;
39 class FMTMaskFilter;
40 // DocString: FMTYieldModel
44 class FMTYieldModel : public FMTObject
45 {
46 public:
47 // DocString: FMTYieldModel::setModel
52 virtual void setModel(Models::FMTModel* p_modelPtr);
53 // DocString: FMTYieldModel::~FMTYieldModel()
57 virtual ~FMTYieldModel();
58 // DocString: FMTYieldModel::FMTYieldModel()
63 // DocString: FMTYieldModel::FMTYieldModel()
68 FMTYieldModel(const FMTYieldModel& rhs)=default;
69 // DocString: FMTYieldModel::operator = (const FMTYieldModel& rhs)
76 // DocString: FMTYieldModel::getModelName()
81 const std::string& getModelName() const;
82 // DocString: FMTYieldModelNn::getModelYields()
87 const std::vector<std::string>& getModelYields() const;
88 // DocString: FMTYieldModel::clone()
93 virtual std::unique_ptr<FMTYieldModel>clone() const = 0;
94 // DocString: FMTYieldModel::predict
100 virtual const std::vector<double>predict(const Core::FMTYieldRequest& request) const = 0;
101 // DocString: FMTYieldModel::preSolve
108 virtual std::unique_ptr<FMTYieldModel> preSolve(const FMTMaskFilter& filter,
109 const std::vector<FMTTheme>& newthemes) const;
110 // DocString: FMTYieldModel::postSolve
117 virtual std::unique_ptr<FMTYieldModel> postSolve(const FMTMaskFilter& filter,
118 const std::vector<FMTTheme>& basethemes) const;
119 // DocString: FMTYieldModel::std::string()
124 virtual operator std::string() const;
125 // DocString: FMTYieldModel::getPeriodicValues
130 virtual std::vector<std::vector<double>>getPeriodicValues() const;
131 // DocString: FMTYieldModel::clearRandomYieldsCache
136 protected:
137 std::string m_modelName;
138 std::vector<std::string> m_modelYields = {};
139 const std::string m_JSON_PROP_MODEL_NAME = "modelFileName";
141 private:
143 // DocString: FMTYieldModel::serialize
150 template<class Archive>
151 void serialize(Archive& ar, const unsigned int version)
152 {
153 ar& boost::serialization::make_nvp("FMTobject", boost::serialization::base_object<FMTObject>(*this));
154 }
155 };
156}
157
158#endif
Filter built from masks used to preSolve and postsolve FMTMask objects.
Definition: FMTMaskFilter.h:31
Base class of multiple FMT classes holding a shared exception handler pointer and logger.
Definition: FMTObject.h:49
Abstract class to be implemented as a machine learning yield model.
Definition: FMTYieldModel.h:45
virtual std::unique_ptr< FMTYieldModel > preSolve(const FMTMaskFilter &filter, const std::vector< FMTTheme > &newthemes) const
Return a presolved copy of the yield model, or the same model by default.
const std::vector< std::string > & getModelYields() const
Return the model yield names.
virtual std::unique_ptr< FMTYieldModel > postSolve(const FMTMaskFilter &filter, const std::vector< FMTTheme > &basethemes) const
Return a postsolved copy of the yield model, a clone by default.
virtual void clearRandomYieldsCache()
Clear the cache of all random yield models.
virtual ~FMTYieldModel()
Destructor for FMTYieldModel.
const std::string & getModelName() const
Return the model name.
virtual std::vector< std::vector< double > > getPeriodicValues() const
Try to turn the yield model into periodic constant values.
virtual const std::vector< double > predict(const Core::FMTYieldRequest &request) const =0
Predict the yield for a request.
virtual std::unique_ptr< FMTYieldModel > clone() const =0
clone the yield model.
std::string m_modelName
Definition: FMTYieldModel.h:137
FMTYieldModel(const FMTYieldModel &rhs)=default
Copy constructor for FMTYieldModel.
FMTYieldModel & operator=(const FMTYieldModel &rhs)=default
Default copy assignment operator for FMTYieldModel.
const std::string m_JSON_PROP_MODEL_NAME
Definition: FMTYieldModel.h:139
virtual void setModel(Models::FMTModel *p_modelPtr)
Set the model linked to the yield model.
std::vector< std::string > m_modelYields
Definition: FMTYieldModel.h:138
friend class boost::serialization::access
Definition: FMTYieldModel.h:142
Models::FMTModel * m_modelPtr
Definition: FMTYieldModel.h:140
FMTYieldModel()
Constructor for FMTYieldModel.
Request for yield values using a development and optionally a graph vertex.
Definition: FMTYieldRequest.h:37
Base class for the different models in FMT.
Definition: FMTModel.h:62
Definition: FMTYieldModel.h:30
The Core namespace provides classes for simulating stands/strata growth/harvest through time.
Definition: FMTAction.h:34
Definition: FMTAreaParser.h:35
Namespace containing all enumerator and classes used to construct or manipulate the different type of...
Definition: FMTAreaParser.h:54
basic_ptree< std::string, std::string, std::less< std::string > > ptree
Definition: FMTYieldModel.h:31
Definition: FMTAction.h:463