FMT 1.2.0
Forest management tools for forest planning
Loading...
Searching...
No Matches
FMTNssModel.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
8#ifndef FMTNSSMODEL_H
9#define FMTNSSMODEL_H
10
11#ifdef FMTWITHOSI
12
13#include "FMTSrModel.h"
14#include <sstream>
15#include <boost/serialization/serialization.hpp>
16#include <boost/serialization/nvp.hpp>
17#include <boost/serialization/split_member.hpp>
18#include <boost/serialization/export.hpp>
19#include <random>
20
21
22namespace Models
23{
24 // DocString: FMTNssModel
29 {
30 public:
31 // DocString: FMTNssModel()
36 // DocString: ~FMTNssModel()
40 ~FMTNssModel()=default;
41 // DocString: FMTNssModel(const FMTNssModel&)
47 // DocString: FMTNssModel::operator=
53 FMTNssModel& operator=(const FMTNssModel& rhs) = default;
54 // DocString: FMTNssModel(const FMTModel&,unsigned int)
60 FMTNssModel(const FMTModel& rhs, unsigned int seed);
61
62 // DocString: FMTNssModel(FMTNssModel&&)
67 FMTNssModel(FMTNssModel&& rhs)=default;
68 // DocString: FMTNssModel::operator=(FMTNssModel&& rhs)
74 FMTNssModel& operator =(FMTNssModel&& rhs) =default;
75 // DocString: FMTNssModel::setParameter(const FMTintmodelparameters,const int&)
82 virtual bool setParameter(const FMTintmodelparameters& p_key, const int& p_value);
83 // DocString: FMTNssModel::simulate
87 void simulate();
88 // DocString: FMTNssModel::preSolve
94 virtual std::unique_ptr<FMTModel>preSolve(std::vector<Core::FMTActualDevelopment> optionaldevelopments = std::vector<Core::FMTActualDevelopment>()) const;
95 // DocString: FMTNssModel::clone
100 virtual std::unique_ptr<FMTModel>clone() const;
101 // DocString: FMTModel::build
107 virtual bool build(std::vector<Core::FMTSchedule> schedules=std::vector<Core::FMTSchedule>());
108 // DocString: FMTModel::solve
113 virtual bool solve()
114 {
115 return true;
116 }
117 // DocString: FMTNssModel::setParameter(const FMTboolmodelparameters, const bool)
124 bool setParameter(const FMTboolmodelparameters& key, const bool& value) override;
125 // DocString: FMTNssModel::getCopy
131 virtual std::unique_ptr<FMTModel> getCopy(int period = 0) const;
132 private:
133 // DocString: FMTNssModel::save
140 friend class boost::serialization::access;
141 template<class Archive>
142 void save(Archive& ar, const unsigned int version) const
143 {
144 ar& boost::serialization::make_nvp("model", boost::serialization::base_object<FMTSrModel>(*this));
145
146 }
147 // DocString: FMTNssModel::load
154 template<class Archive>
155 void load(Archive& ar, const unsigned int version)
156 {
157 ar& boost::serialization::make_nvp("model", boost::serialization::base_object<FMTSrModel>(*this));
158
159 }
160 BOOST_SERIALIZATION_SPLIT_MEMBER()
161 // DocString: FMTNssModel::constraintsToTarget
168 std::vector<const Core::FMTOutput*> constraintsToTarget(std::vector<double>& p_targets, const int& p_period);
169 // DocString: FMTNssModel::gotOutputForDev
177 bool gotOutputForDev(const Core::FMTDevelopment& p_development,
178 const std::vector<const Core::FMTOutput*>& p_outputs,
179 const std::set<size_t>& p_outputIds) const;
180 // DocString: FMTNssModel::getFirstOperable
188 std::pair<size_t, const Core::FMTAction*> getFirstOperable(const Core::FMTDevelopment& development,
189 std::vector<std::vector<const Core::FMTAction*>> targets,
190 const std::vector<const Core::FMTOutput*>& alloutputs) const;
191 // DocString: FMTNssModel::getActionsTargets
197 std::vector<std::set<size_t>> getActionsTargets(const std::vector<const Core::FMTOutput*>& p_allOutputs) const;
198 // DocString: FMTNssModel::updateOutputs
210 double updateOutputs(const Core::FMTDevelopment& p_development,
211 const std::vector<Core::FMTDevelopmentPath>& p_paths,
212 const int& p_action, const double& p_devArea,
213 std::vector<double>& p_targets, std::vector<std::set<size_t>>& p_actionsoutputs,
214 const std::vector<const Core::FMTOutput*>& p_allOutput) const;
215 // DocString: FMTNssModel(const FMTSrModel&,unsigned int)
221 FMTNssModel(const FMTSrModel& rhs, unsigned int seed);
222 // DocString: FMTNssModel::swapPtr
227 virtual void swapPtr(std::unique_ptr<FMTModel>& rhs);
228
229 };
230}
231
232BOOST_CLASS_EXPORT_KEY(Models::FMTNssModel)
233#endif
234#endif
235
#define FMTEXPORT
Definition: FMTutility.h:125
Base class for the different models in FMT.
Definition: FMTModel.h:62
Non spatial simulation model, mainly used to simulate stochastic actions during the local replanning ...
Definition: FMTNssModel.h:29
virtual std::unique_ptr< FMTModel > preSolve(std::vector< Core::FMTActualDevelopment > optionaldevelopments=std::vector< Core::FMTActualDevelopment >()) const
Return a presolved copy of the model.
FMTNssModel(const FMTModel &rhs, unsigned int seed)
Construct a FMTNssModel from a model and a seed for the random number generator.
void simulate()
Do a non spatial simulation based on the area constraints in the optimize section.
FMTNssModel & operator=(const FMTNssModel &rhs)=default
Copy assignment operator for FMTNssModel.
FMTNssModel(const FMTNssModel &rhs)
Copy constructor for FMTNssModel.
virtual bool setParameter(const FMTintmodelparameters &p_key, const int &p_value)
set int parameters to nss model.
~FMTNssModel()=default
Default destructor for FMTNssModel.
virtual bool build(std::vector< Core::FMTSchedule > schedules=std::vector< Core::FMTSchedule >())
Build the model by simulating over the number of periods set as LENGTH.
bool setParameter(const FMTboolmodelparameters &key, const bool &value) override
Override setter for bool model parameters.
FMTNssModel()
Default constructor for FMTNssModel.
virtual std::unique_ptr< FMTModel > getCopy(int period=0) const
Return a copy of the model for the selected period.
virtual std::unique_ptr< FMTModel > clone() const
Get a clone of the FMTNssModel.
FMTNssModel(FMTNssModel &&rhs)=default
Default move constructor for FMTNssModel.
virtual bool solve()
Return true; there is no solve since this is a simulation.
Definition: FMTNssModel.h:113
Base class holding the attributes and methods shared between the spatially referenced models (FMTLpMo...
Definition: FMTSrModel.h:46
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
FMTintmodelparameters
Enumerator of the integer parameters of a FMTModel.
Definition: FMTModelParameters.h:28
FMTboolmodelparameters
Enumerator of the boolean parameters of a FMTModel.
Definition: FMTModelParameters.h:67
STL namespace.