FMT 1.2.0
Forest management tools for forest planning
Loading...
Searching...
No Matches
FMTOperatingAreaClusterer.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#include "FMTLpHeuristic.h"
10#include <boost/serialization/serialization.hpp>
11#include <boost/serialization/nvp.hpp>
12#include <boost/serialization/export.hpp>
13#include <boost/serialization/vector.hpp>
14#include <vector>
15
16#ifdef FMTWITHOSI
17
18#ifndef FMToperatingareaclusterer_Hm_included
19#define FMToperatingareaclusterer_Hm_included
20namespace Heuristics
21{
22// DocString: FMTOperatingAreaClusterer
28 {
29 public:
30 // DocString: FMTOperatingAreaClusterer::FMTOperatingAreaClusterer()
35 // DocString: FMTOperatingAreaClusterer::FMTOperatingAreaClusterer(const Models::FMTSolverInterface&,const size_t&,const std::vector<FMTOperatingAreaCluster>&)
45 const size_t& p_seed,const std::vector<FMTOperatingAreaCluster>& p_clusters,
46 int p_minimalnumberofclusters = -1,int p_maximalnumberofclusters = -1);
47 // DocString: FMTOperatingAreaClusterer::FMTOperatingAreaClusterer(const FMTOperatingAreaClusterer&)
52 // DocString: FMTOperatingAreaClusterer::operator =
58 // DocString: FMTOperatingAreaClusterer::setNumberOfSimulationPass
63 void setNumberOfSimulationPass(const int& pass);
64 // DocString: FMTOperatingAreaClusterer::~FMTOperatingAreaClusterer()
69 // DocString: FMTOperatingAreaClusterer::getBinariesCount
74 size_t getBinariesCount() const;
75 // DocString: FMTOperatingAreaClusterer::initialSolve
80 bool initialSolve() final;
81 // DocString: FMTOperatingAreaClusterer::branchNBoundSolve
86 bool branchNBoundSolve() final;
87 // DocString: FMTOperatingAreaClusterer::getSolution
92 std::vector<FMTOperatingAreaCluster>getSolution() const;
93 // DocString: FMTOperatingAreaClusterer::buildProblem
97 void buildProblem();
98
99 private:
100 friend class boost::serialization::access;
101 // DocString: FMTOperatingAreaClusterer::serialize
108 template<class Archive>
109 void serialize(Archive& ar, const unsigned int version)
110 {
111 ar & boost::serialization::make_nvp("FMTlpheuristic", boost::serialization::base_object<FMTLpHeuristic>(*this));
112 ar & boost::serialization::make_nvp("clusters", m_clusters);
113 ar & boost::serialization::make_nvp("numberofsimulationpass", m_numberofsimulationpass);
114
115 }
116 // DocString: FMTOperatingAreaClusterer::m_clusters
120 std::vector<FMTOperatingAreaCluster>m_clusters;
121 // DocString: FMTOperatingAreaClusterer::m_numberofsimulationpass
123 int m_numberofsimulationpass;
124 // DocString: FMTOperatingAreaClusterer::m_minimalnumberofclusters
126 int m_minimalnumberofclusters;
127 // DocString: FMTOperatingAreaClusterer::m_maximalnumberofclusters
129 int m_maximalnumberofclusters;
130 // DocString: FMTOperatingAreaClusterer::m_totalarea
132 double m_totalarea;
133 // DocString: FMTOperatingAreaClusterer::_getAllBinaries
138 std::map<Core::FMTMask,std::vector<FMTOperatingAreaClusterBinary>>_getAllBinaries() const;
139 // DocString: FMTOperatingAreaClusterer::_getTotalArea()
144 double _calculateTotalArea() const;
145 // DocString: FMTOperatingAreaClusterer::_getTotalArea
150 inline const double& _getTotalArea() const
151 {
152 return m_totalarea;
153 }
154 // DocString: FMTOperatingAreaClusterer::_addMaxMinObjective
162 void _addMaxMinObjective(const FMTOperatingAreaCluster& cluster, const FMTOperatingAreaClusterBinary& binary,
163 const std::vector<FMTOperatingAreaClusterBinary>& binaries,
164 const int& clusterid);
165 // DocString: FMTOperatingAreaClusterer::_buildClustersVariables
169 void _buildClustersVariables();
170 // DocString: FMTOperatingAreaClusterer::_addObjective
174 void _addObjective();
175 // DocString: FMTOperatingAreaClusterer::_addLinksRows
179 void _addLinksRows();
180 // DocString: FMTOperatingAreaClusterer::_addForcingRows
184 void _addForcingRows();
185 // DocString: FMTOperatingAreaClusterer::_addNumberOfClusterRows
189 void _addNumberOfClusterRows();
190 // DocString: FMTOperatingAreaClusterer::_addAreaConstraints
194 void _addAreaConstraints();
195
196 // DocString: FMTOperatingAreaClusterer::_setAllInteger
200 void _setAllInteger();
201 // DocString: FMTOperatingAreaClusterer::_getSpreadProbability
208 double _getSpreadProbability(const std::vector<FMTOperatingAreaClusterBinary>& incluster,const FMTOperatingAreaClusterBinary& target) const;
209 // DocString: FMTOperatingAreaClusterer::_spread
217 bool _spread(const FMTOperatingAreaCluster& ignition,std::vector<FMTOperatingAreaClusterBinary>& assigned);
218 // DocString: FMTOperatingAreaClusterer::_getTargetedOperatingAreaSize
224 double _getTargetedOperatingAreaSize(const FMTOperatingAreaCluster& target);
225 // DocString: FMTOperatingAreaClusterer::_isValidarea
233 bool _isValidarea(const FMTOperatingAreaCluster& cluster,
234 const double& area, const size_t& actives) const;
235 // DocString: FMTOperatingAreaClusterer::_unboundAll
239 void _unboundAll();
240 // DocString: FMTOperatingAreaClusterer::_getBinariesVariables
245 std::vector<int>_getBinariesVariables() const;
246 };
247}
248
249BOOST_CLASS_EXPORT_KEY(Heuristics::FMTOperatingAreaClusterer)
250
251
252#endif
253#endif
#define FMTEXPORT
Definition: FMTutility.h:125
Base class for solving LP and MIP problems using a heuristic, holding a random generator and its own ...
Definition: FMTLpHeuristic.h:34
Potential cluster of multiple operating areas.
Definition: FMTOperatingAreaCluster.h:27
Heuristic to do spatial clustering of operating areas across a landscape from a shapefile.
Definition: FMTOperatingAreaClusterer.h:28
~FMTOperatingAreaClusterer()=default
Default destructor for FMTOperatingAreaClusterer.
FMTOperatingAreaClusterer(const FMTOperatingAreaClusterer &)
Default copy constructor for FMTOperatingAreaClusterer.
FMTOperatingAreaClusterer(const Models::FMTSolverInterface &p_interfacetype, const size_t &p_seed, const std::vector< FMTOperatingAreaCluster > &p_clusters, int p_minimalnumberofclusters=-1, int p_maximalnumberofclusters=-1)
Construct a FMTOperatingAreaClusterer from a solver interface, a seed and a vector of clusters to agg...
FMTOperatingAreaClusterer()=default
Default constructor for FMTOperatingAreaClusterer.
void setNumberOfSimulationPass(const int &pass)
Set the number of passes made by the heuristic to get a better objective or a feasible solution durin...
size_t getBinariesCount() const
Get the number of binaries in the whole problem.
bool initialSolve() final
Solve the heuristic problem using the fire spread heuristic to get a good initial clustering solution...
Namespace regrouping all tools for solving LP/MIP problems using an heuristic.
Definition: FMTAreaParser.h:47
FMTSolverInterface
Enumerator used to specify the solver to use when solving the FMTLpModel.
Definition: FMTsolverinterface.h:21
Definition: FMTAction.h:463
STL namespace.