FMT 1.2.0
Forest management tools for forest planning
Loading...
Searching...
No Matches
FMTSolutionTracker.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 FMTSOLUTIONTRACKER_H
8#define FMTSOLUTIONTRACKER_H
9
10
11#include <map>
12#include <vector>
13#include <string>
14#include <memory>
15#include "FMTObject.h"
16
17namespace Graph
18{
19 class FMTLineGraph;
20}
21
22namespace Core
23{
24 class FMTConstraint;
25}
26
27
28namespace Spatial
29 {
30 class FMTGraphInfo;
31 // DocString: FMTSolutionTracker
36 {
37 public:
38 // DocString: FMTSolutionTracker(const std::vector<size_t>&,const std::vector<std::vector<size_t>>&,size_t)
45 FMTSolutionTracker(const std::vector<size_t>& p_solution,
46 const std::vector<std::vector<size_t>>&p_ConstraintsFamilies,
47 size_t p_NumberOfFamilies);
48 // DocString: FMTSolutionTracker()
53 // DocString: FMTSolutionTracker(const FMTSolutionTracker)
58 FMTSolutionTracker(const FMTSolutionTracker& p_rhs) = default;
59 // DocString: FMTSolutionTracker::operator=
66 // DocString: ~FMTSolutionTracker()
71 // DocString: FMTSolutionTracker::addToSolution
78 void addToSolution(size_t p_family,
79 std::map<Graph::FMTLineGraph, FMTGraphInfo>::const_iterator p_NewGraph,
80 size_t p_LastGraphId);
81 // DocString: FMTSolutionTracker::removeFromSolution
87 void removeFromSolution(size_t p_family,
88 std::map<Graph::FMTLineGraph, FMTGraphInfo>::const_iterator p_OldGraph);
89 // DocString: FMTSolutionTracker::getConstraintsValues
95 const std::vector<double>& getConstraintsValues(size_t p_Constraint)const;
96 // DocString: FMTSolutionTracker::getNumberOfCells
102 size_t getNumberOfCells(size_t p_GraphId) const;
103 // DocString: FMTSolutionTracker::size
108 size_t size() const;
109 // DocString: FMTSolutionTracker::swap
114 void swap(FMTSolutionTracker& p_tracker);
115 // DocString: FMTSolutionTracker::getNonSpatialCellsCount
121 // DocString: FMTSolutionTracker::setConstraintValues
128 void setConstraintValues(const std::vector<std::vector<double>>& p_constraintValues,
129 const std::vector<std::vector<size_t>>& p_ConstraintsFamilies,
130 size_t p_NumberOfFamilies);
131 // DocString: FMTSolutionTracker::enableTracking
137 // DocString: FMTSolutionTracker::disableTracking
142 // DocString: FMTSolutionTracker::isTrackingEnable
147 bool isTrackingEnable() const;
148 private:
149 std::vector<std::vector<double>>m_LastConstraintsEvaluation;
150 std::vector<size_t>m_Solution;
151 std::vector<std::vector<size_t>>m_ConstraintsFamilies;
152 const static size_t m_SOLUTION_RESIZE_FACTOR = 2;
153 // DocString: FMTSolutionTracker::_modifySolution
160 void _modifySolution(size_t p_family,
161 std::map<Graph::FMTLineGraph, FMTGraphInfo>::const_iterator p_It,
162 double p_sense);
163 // DocString: FMTSolutionTracker::_buildConstraintsFamilies
169 void _buildConstraintsFamilies(const std::vector<std::vector<size_t>>& p_ConstraintsFamilies,
170 size_t p_NumberOfFamilies);
171 };
172}
173
174
175#endif
Base class of multiple FMT classes holding a shared exception handler pointer and logger.
Definition: FMTObject.h:49
Track the constraint values of a spatial solution as line graphs are added to or removed from the sol...
Definition: FMTSolutionTracker.h:36
void setConstraintValues(const std::vector< std::vector< double > > &p_constraintValues, const std::vector< std::vector< size_t > > &p_ConstraintsFamilies, size_t p_NumberOfFamilies)
Set the constraint values and families.
void addToSolution(size_t p_family, std::map< Graph::FMTLineGraph, FMTGraphInfo >::const_iterator p_NewGraph, size_t p_LastGraphId)
Add a line graph to the solution for a constraint family, updating the tracked constraint values.
size_t getNonSpatialCellsCount() const
Return the number of non spatial cells.
FMTSolutionTracker(const FMTSolutionTracker &p_rhs)=default
Default copy constructor for FMTSolutionTracker.
FMTSolutionTracker & operator=(const FMTSolutionTracker &p_rhs)=default
Default copy assignment operator for FMTSolutionTracker.
void swap(FMTSolutionTracker &p_tracker)
Swap this FMTSolutionTracker with another one.
bool enableTracking()
Enable the tracking of the constraint values.
bool isTrackingEnable() const
Return true if the tracking is enabled.
FMTSolutionTracker()
Default constructor for FMTSolutionTracker.
void disableTracking()
Disable the tracking of the constraint values.
~FMTSolutionTracker()=default
Default destructor for FMTSolutionTracker.
size_t size() const
Return the number of graphs in the solution.
FMTSolutionTracker(const std::vector< size_t > &p_solution, const std::vector< std::vector< size_t > > &p_ConstraintsFamilies, size_t p_NumberOfFamilies)
Construct a FMTSolutionTracker from a solution and its constraint families.
const std::vector< double > & getConstraintsValues(size_t p_Constraint) const
Return the tracked values of a constraint.
size_t getNumberOfCells(size_t p_GraphId) const
Return the number of cells of a graph.
void removeFromSolution(size_t p_family, std::map< Graph::FMTLineGraph, FMTGraphInfo >::const_iterator p_OldGraph)
Remove a line graph from the solution for a constraint family, updating the tracked constraint values...
The Core namespace provides classes for simulating stands/strata growth/harvest through time.
Definition: FMTAction.h:34
Definition: FMTAreaParser.h:35
Definition: FMTAreaParser.h:40