FMT 1.2.0
Forest management tools for forest planning
Loading...
Searching...
No Matches
FMTVirtualLineGraph.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#ifndef FMTVIRTUALLINEGRAPH_H
8#define FMTVIRTUALLINEGRAPH_H
9
10
11#include "FMTutility.h"
12#include <vector>
13#include <map>
14#include <memory>
15#include "FMTGraphInfo.h"
16#include "FMTSpatialGraphs.h"
17
18namespace Graph
19{
20 class FMTLineGraph;
21}
22
23namespace Models
24{
25 class FMTModel;
26}
27
28namespace Core
29{
30 class FMTOutput;
31 class FMTTheme;
32 class FMTMaskFilter;
33}
34
35
36namespace Spatial
37 {
38 template <typename T>
39 class FMTLayer;
40 class FMTSolutionTracker;
41 // DocString: FMTVirtualLineGraph
46 {
47 public:
48 // DocString: FMTVirtualLineGraph()
53 // DocString: FMTVirtualLineGraph(FMTSpatialGraphs&,FMTSpatialGraphs::const_iterator,size_t)
62 size_t p_Family);
63 // DocString: FMTVirtualLineGraph(const FMTVirtualLineGraph&,FMTSpatialGraphs&)
70 // DocString: FMTVirtualLineGraph(const FMTVirtualLineGraph&)
76 // DocString: FMTVirtualLineGraph::operator=
82 FMTVirtualLineGraph& operator = (const FMTVirtualLineGraph& p_LineGraph);
83 // DocString: ~FMTVirtualLineGraph()
88 // DocString: FMTVirtualLineGraph::operator==
94 bool operator == (const FMTVirtualLineGraph& p_Element) const;
95 // DocString: FMTVirtualLineGraph::operator<
101 bool operator < (const FMTVirtualLineGraph& p_Element) const;
102 // DocString: FMTVirtualLineGraph::hash
107 size_t hash() const;
108 // DocString: FMTVirtualLineGraph::getLineGraph
114 // DocString: FMTVirtualLineGraph::setLineGraph
120 void setLineGraph(const Graph::FMTLineGraph& p_LineGraph,
121 FMTSolutionTracker& p_solution);
122 // DocString: FMTVirtualLineGraph::getOutput
131 double getOutput(const Models::FMTModel& p_model,
132 const FMTSolutionTracker& p_solution,
133 const Core::FMTOutput& p_output, int p_period) const;
134 // DocString: FMTVirtualLineGraph::getGraphFamily
139 size_t getGraphFamily() const;
140 // DocString: FMTVirtualLineGraph::setBaseGraph
146 // DocString: FMTVirtualLineGraph::setLastPeriod
152 // DocString: FMTVirtualLineGraph::setNaturalGrowth
158 // DocString: FMTVirtualLineGraph::postSolve
168 const std::vector<int>& p_actionMapping,
169 FMTSpatialGraphs& p_Graphs,
170 FMTSolutionTracker& p_solution) const;
171 private:
173 size_t m_GraphFamily;
174 FMTSpatialGraphs* m_Graphs;
175 // DocString: FMTVirtualLineGraph::_insertInto
181 void _insertInto(const Graph::FMTLineGraph& p_LineGraph,
182 FMTSolutionTracker& p_solution);
183 // DocString: FMTVirtualLineGraph::_add
188 void _add(FMTSolutionTracker& p_solution);
189 // DocString: FMTVirtualLineGraph::_remove
194 void _remove(FMTSolutionTracker& p_solution);
195 // DocString: FMTVirtualLineGraph::notNull
200 bool notNull() const;
201 };
202 }
203
204namespace std {
205 template <>
206 struct hash<Spatial::FMTVirtualLineGraph>
207 {
208 std::size_t operator()(const Spatial::FMTVirtualLineGraph& p_object) const
209 {
210 return (p_object.hash());
211 }
212 };
213
214}
215
216
217#endif
#define FMTEXPORT
Definition: FMTutility.h:125
Filter built from masks used to preSolve and postsolve FMTMask objects.
Definition: FMTMaskFilter.h:31
Class letting the user formulate a constraint in the optimize section or collect data across the grap...
Definition: FMTOutput.h:37
Simple graph where each action generates a single new vertex (0-—0-—0-—0), used with FMTLayer to simu...
Definition: FMTLineGraph.h:27
Base class for the different models in FMT.
Definition: FMTModel.h:62
Track the constraint values of a spatial solution as line graphs are added to or removed from the sol...
Definition: FMTSolutionTracker.h:36
Container of the line graphs of a spatially explicit model, organized by constraint family,...
Definition: FMTSpatialGraphs.h:52
std::map< Graph::FMTLineGraph, FMTGraphInfo >::const_iterator const_iterator
Definition: FMTSpatialGraphs.h:55
Lightweight handle to a line graph stored in a FMTSpatialGraphs, forwarding output and solution opera...
Definition: FMTVirtualLineGraph.h:46
void setLineGraph(const Graph::FMTLineGraph &p_LineGraph, FMTSolutionTracker &p_solution)
Set the underlying line graph and update the solution tracker.
FMTVirtualLineGraph(FMTSpatialGraphs &p_Graphs, FMTSpatialGraphs::const_iterator p_Iterator, size_t p_Family)
Construct a FMTVirtualLineGraph pointing to a graph of a family in a FMTSpatialGraphs.
FMTVirtualLineGraph(const FMTVirtualLineGraph &p_LineGraph)
Copy constructor for FMTVirtualLineGraph.
const Graph::FMTLineGraph & getLineGraph() const
Return the underlying line graph.
size_t getGraphFamily() const
Return the constraint family of the graph.
void setNaturalGrowth(FMTSolutionTracker &p_solution)
Set the graph to its natural growth version and update the solution tracker.
void setBaseGraph(FMTSolutionTracker &p_solution)
Set the graph to its base version and update the solution tracker.
void setLastPeriod(FMTSolutionTracker &p_solution)
Set the graph to its last period version and update the solution tracker.
FMTVirtualLineGraph(const FMTVirtualLineGraph &p_LineGraph, FMTSpatialGraphs &p_Graphs)
Copy a FMTVirtualLineGraph, rebinding it to another FMTSpatialGraphs.
double getOutput(const Models::FMTModel &p_model, const FMTSolutionTracker &p_solution, const Core::FMTOutput &p_output, int p_period) const
Return the output value of the graph for a period.
size_t hash() const
Hash the virtual line graph.
FMTVirtualLineGraph()=default
Default constructor for FMTVirtualLineGraph.
FMTVirtualLineGraph postSolve(const Core::FMTMaskFilter &p_Filter, const std::vector< int > &p_actionMapping, FMTSpatialGraphs &p_Graphs, FMTSolutionTracker &p_solution) const
Return a postsolved copy of the virtual line graph.
~FMTVirtualLineGraph()
Destructor for FMTVirtualLineGraph.
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
Definition: FMTAreaParser.h:40
STL namespace.
std::size_t operator()(const Spatial::FMTVirtualLineGraph &p_object) const
Definition: FMTVirtualLineGraph.h:208