FMT
An open source forest management library that makes forest planning easier.
https://github.com/bureau-du-forestier-en-chef/fmt
Category: Biosphere
Sub Category: Forest Observation and Management
Keywords
fmt forest-management forest-planning forestry optimization python-library r-package simulation
Last synced: about 10 hours ago
JSON representation
Repository metadata
Forest Management Tool a C++ library for forest planning.
- Host: GitHub
- URL: https://github.com/bureau-du-forestier-en-chef/fmt
- Owner: Bureau-du-Forestier-en-chef
- Created: 2020-08-31T19:46:23.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2025-05-23T14:48:39.000Z (9 days ago)
- Last Synced: 2025-05-31T02:09:12.542Z (1 day ago)
- Topics: fmt, forest-management, forest-planning, forestry, optimization, python-library, r-package, simulation
- Language: C++
- Homepage: https://bureau-du-forestier-en-chef.github.io/FMTdocs/
- Size: 114 MB
- Stars: 17
- Watchers: 5
- Forks: 1
- Open Issues: 77
- Releases: 7
-
Metadata Files:
- Readme: README.fr.md
- License: LICENSES/EN/LILIQ-R11EN.odt
README.fr.md
Cette page ne donne qu'un aperçu du processus d'installation et des fonctionnalités de FMT. Pour plus détails, visitez note page de documentation pour FMT.
📑 Description
FMT (Forêt Modélisée dans le Temps) est une librairie de type logiciel libre pour l'aménagement forestier.
- C'est une librairie C++ faite pour interpréter des modèles de planification forestière basés sur les fichiers Woodstock.
- Elle peut être utilisé avec Python, Cran-R ou directement en C++.
- Son approche générique de la planification forestière permet à l'utilisateur de manipuler des modèles de planification forestière et de générer des solutions.
- Son objectif principal est d'amener les différents types de modèles de planification forestière sur une même librairie générique pour aider la communauté à développer de nouvelles approches pour résoudre les problèmes de planification forestière, et d'améliorer les approches déjà présentes depuis longtemps.
✨ Capacités
Modèle de planification spatialement référencé
FMT permet à l'utilisateur de générer et de résoudre des modèles spatialement référencé de TYPE III. L'outil peut être utilisé pour réaliser des analyses de sensibilité sur plusieurs paramètres du modèle de planification. L'outil peut aussi être utilisé pour analyser l'impact d'évènements stochastiques comme les épisodes de feux de forêt et de tordeuse des bourgeons de l'épinette en utilisant la replanification.
Modèle de planification spatialement explicite
FMT offre une plateforme sur laquelle construire des heuristiques pour solutionner des problèmes de planification forestière. FMT est l'outil parfait pour solutionner des problèmes spécifiques aux enjeux de l'utilisateur comme l'allocation de calendrier de chantier de récolte. Il permet aussi l'implémentation de processus de simulation. La librairie offre aussi des outils permettant la spatialisation de solution spatialement référencée et la génération de solution spatialement explicite.
FMT est très utile lorsqu'on doit implémenter des méta-heuristiques comme le Recuit Simulé, la recherche génétique ou la recherche tabou dans un contexte de planification forestière.
Si votre intrant principal est un modèle Woodstock, FMT est probablement un bon choix de plateforme pour développer de nouvelles approches d'optimisation ou de simulation de calendrier de récolte ou d’événements stochastiques.
💽 Installation
La manière la plus simple d'utiliser FMT est d'utiliser Cmake >= 3.15 pour génerer une librairie partagée pour R ou pour Python, ou bien directement en C++. Le script Cmake de ce repository permet de génerer FMT sous Windows en utilisant VS2017/2019 ou MINGW-64 sur MSYS2 ou CYGWIN.
📦 Dépendances
Requises :
- Boost compilé avec zlib. (http://boost.org)
Optionelles :
- Librairie GEOS (http://trac.orgeo.org/geos/)
- Librairie GDAL (http://GDAL.org)
- Librairie Mosek (http://mosek.com)
- Librairie OSI par le biais du solveur CBC (http://github.com/coin/Cbc)
- Librairie Boost Python
- Rcpp et cran-R avec la version la plus récente de Rtools40 (http://cran.r-project.org)
📖 Documentation
FMT possède une documentation écrite à la main, détaillée et avec des exercices; ainsi qu'une documentation générée par le biais de Doxygen. Les deux sont accessibles via la page web de documentation de FMT.
Si vous souhaitez compiler la documentation Doxygen par vous même, dans une invite de commande Powershell, allez dans le dossier FMT et utilisez :
cd Documentation
doxygen FMTdoxygenconfig
Pour remplir les commentaires dans les fichiers sources R (.R
) et Python (.py
), utilisez :
cd Documentation
python commentsPythonandR.py
Voici une présentation pour vous former à l'API FMT(R/Python) Formation_FMT_R_Python.pptx
👉 Exemples
L'exemple suivant lit un modèle, génère un modèle de programmation linéaire de planification forestière de type III et solutionne ce modèle.
- En utilisant Python
from FMT import Models
from FMT import Parser
modelparser = Parser.FMTmodelparser()
models = modelparser.readproject("pathtoprimaryfile",["scenariox"])# Lit le scénario x depuis un fichier primaire (.pri)
optimizationmodel=Models.FMTlpmodel(models[0],Models.FMTsolverinterface.CLP)# Construit un modèle de programmation linéaire de type III depuis un FMTmodel
### Construit le graphe pendant 10 périodes
for period in range(0,10):
print(optimizationmodel.buildperiod())
# Maintenant, on ajoute la fonction d'object au FMTlpmodel et toutes les contraintes
constraints = optimizationmodel.getconstraints()
objective = constraints.pop(0)
for constraint in constraints:
print(optimizationmodel.setconstraint(constraint))
print(optimizationmodel.setobjective(objective))
# On fait une résolution initiale du modèle de planification forestière
optimizationmodel.initialsolve()
- En utilisant R
library(FMT)
modelparser<-new(FMTmodelparser)
models<-modelparser$readproject("pathtoprimaryfile",c("scenariox"),TRUE,TRUE,TRUE)# Lit le scénario x depuis un fichier primaire (.pri)
optimizationmodel<-new(FMTlpmodel,models[[1]],FMTsolverinterface$CLP)# Construit un modèle de programmation linéaire de type III depuis un FMTmodel
emptyschedule<-new(FMTschedule)
### Construit le graphe pendant 10 périodes
for (period in 1:10)
{
print(optimizationmodel$buildperiod(emptyschedule,FALSE)$str())
}
# Maintenant, on ajoute la fonction d'object au FMTlpmodel et toutes les contraintes
allmodelconstraints<-optimizationmodel$getconstraints()
modelobjective<-allmodelconstraints[[1]]
modelconstraints<-allmodelconstraints[2:length(allmodelconstraints)]
for (constraint in modelconstraints)
{
print(optimizationmodel$setconstraint(constraint)$str())
}
print(optimizationmodel$setobjective(modelobjective)$str())
# On fait une résolution initiale du modèle de planification forestière
optimizationmodel$initialsolve()
- En utilisant C++
#include <vector>
#include "FMTlpmodel.h"
#include "FMTmodelparser.h"
Parser::FMTmodelparser modelparser;
const std::vector<std::string>scenarios(1, "scenariox");
const std::vector<Models::FMTmodel> models = modelparser.readproject("pathtoprimaryfile", scenarios);
Models::FMTlpmodel optimizationmodel(models.at(0), Models::FMTsolverinterface::MOSEK);
for (size_t period = 0; period < 10; ++period)
{
optimizationmodel.buildperiod();
}
std::vector<Core::FMTconstraint>constraints = optimizationmodel.getconstraints();
const Core::FMTconstraint objective = constraints.at(0);
constraints.erase(constraints.begin());
for (const Core::FMTconstraint& constraint : constraints)
{
optimizationmodel.setconstraint(constraint);
}
optimizationmodel.setobjective(objective);
optimizationmodel.initialsolve();
🔑 License
FMT utilise la license LiLiQ-R 1.1.
📈 Coverage
GNU
MSVC
💻 Build
GNU
MSVC
Owner metadata
- Name: Bureau du forestier en chef
- Login: Bureau-du-Forestier-en-chef
- Email: [email protected]
- Kind: organization
- Description: Le Forestier en chef a pour mission principale de déterminer les possibilités forestières des forêts publiques du Québec.
- Website: https://forestierenchef.gouv.qc.ca/
- Location: Canada
- Twitter: Forestierenchef
- Company:
- Icon url: https://avatars.githubusercontent.com/u/99218695?v=4
- Repositories: 2
- Last ynced at: 2023-03-05T21:33:31.321Z
- Profile URL: https://github.com/Bureau-du-Forestier-en-chef
GitHub Events
Total
- Create event: 13
- Release event: 1
- Issues event: 24
- Watch event: 2
- Delete event: 9
- Issue comment event: 10
- Push event: 65
- Pull request event: 3
Last Year
- Create event: 13
- Release event: 1
- Issues event: 24
- Watch event: 2
- Delete event: 9
- Issue comment event: 10
- Push event: 65
- Pull request event: 3
Committers metadata
Last synced: 4 days ago
Total Commits: 1,059
Total Committers: 14
Avg Commits per committer: 75.643
Development Distribution Score (DDS): 0.373
Commits in past year: 161
Committers in past year: 5
Avg Commits per committer in past year: 32.2
Development Distribution Score (DDS) in past year: 0.509
Name | Commits | |
---|---|---|
Guillaume Cyr | G****r@f****a | 664 |
Bruno Forest | B****t@f****a | 237 |
Marc-Alexandre Martel | m****l@g****m | 56 |
Forest | F****3@f****a | 28 |
Landry-G | g****y@l****a | 25 |
Rémy Huot | r****1@u****a | 11 |
Tommy Bouchard | 1****3 | 11 |
U-INTRANET\CYRGU3 | C****3@M****V | 10 |
Clement Hardy | 4****t | 6 |
Cyr | C****3@f****a | 6 |
admlocal | a****l@2****V | 2 |
U-INTRANET\FORBR3 | F****3@2****V | 1 |
admlocal | a****l@2****V | 1 |
admlocal | a****l@2****V | 1 |
Committer domains:
- fec.gouv.qc.ca: 4
- 225302pt.intranet.mrn.gouv: 2
- 241315pt.intranet.mrn.gouv: 1
- 223229pt.intranet.mrn.gouv: 1
- mv-analyste-p38.intranet.mrn.gouv: 1
- ulaval.ca: 1
- live.ca: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 278
Total pull requests: 3
Average time to close issues: 22 days
Average time to close pull requests: 2 days
Total issue authors: 7
Total pull request authors: 2
Average comments per issue: 0.5
Average comments per pull request: 0.67
Merged pull request: 2
Bot issues: 0
Bot pull requests: 0
Past year issues: 16
Past year pull requests: 2
Past year average time to close issues: about 2 months
Past year average time to close pull requests: 2 days
Past year issue authors: 4
Past year pull request authors: 1
Past year average comments per issue: 0.94
Past year average comments per pull request: 0.5
Past year merged pull request: 1
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- gcyr (152)
- BrunoForest (90)
- JFCarle (16)
- Klemet (11)
- Landry-G (4)
- martel21324 (4)
- peret2 (1)
Top Pull Request Authors
- martel21324 (2)
- Klemet (1)
Top Issue Labels
- enhancement (142)
- bug (89)
- BFECopt (50)
- documentation (34)
- Interface (30)
- Machine Learning (12)
- Replanification (11)
- Carbone (10)
- Debug facilities (8)
- Diffusion (6)
- Excel (6)
- validation (5)
- wontfix (3)
- priority:low (3)
- CC (2)
- NeedTommyPower (2)
- priority:high (2)
- priority:normal (1)
Top Pull Request Labels
Dependencies
- Rcpp >= 1.0.4 imports
Score: 7.182352111885262