fmt

Forest Management Tool a C++ library for forest planning.

https://github.com/bureau-du-forestier-en-chef/fmt

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (5.5%) to scientific vocabulary

Keywords

fmt forest-management forest-planning forestry optimization python-library r-package simulation
Last synced: 6 months ago · JSON representation

Repository

Forest Management Tool a C++ library for forest planning.

Basic Info
Statistics
  • Stars: 16
  • Watchers: 5
  • Forks: 1
  • Open Issues: 79
  • Releases: 7
Topics
fmt forest-management forest-planning forestry optimization python-library r-package simulation
Created over 5 years ago · Last pushed 7 months ago
Metadata Files
Readme License

README.fr.md

FMT (Forêt Modélisée dans le Temps)





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 :

powershell cd Documentation doxygen FMTdoxygenconfig Pour remplir les commentaires dans les fichiers sources R (.R) et Python (.py), utilisez :

powershell cd Documentation python commentsPythonandR.py Voici une présentation pour vous former à l'API FMT(R/Python) FormationFMTR_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 ```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 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++ C++

include

include "FMTlpmodel.h"

include "FMTmodelparser.h"

Parser::FMTmodelparser modelparser; const std::vectorstd::stringscenarios(1, "scenariox"); const std::vectorModels::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::vectorCore::FMTconstraintconstraints = 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.

License

📈 Coverage

GNU MSVC

💻 Build

GNU MSVC

Owner

  • Name: Bureau du forestier en chef
  • Login: Bureau-du-Forestier-en-chef
  • Kind: organization
  • Email: bureau@fec.gouv.qc.ca
  • Location: Canada

Le Forestier en chef a pour mission principale de déterminer les possibilités forestières des forêts publiques du Québec.

GitHub Events

Total
  • Create event: 16
  • Release event: 1
  • Issues event: 24
  • Watch event: 2
  • Delete event: 12
  • Issue comment event: 12
  • Push event: 69
  • Pull request event: 3
Last Year
  • Create event: 16
  • Release event: 1
  • Issues event: 24
  • Watch event: 2
  • Delete event: 12
  • Issue comment event: 12
  • Push event: 69
  • Pull request event: 3

Committers

Last synced: 6 months ago

All Time
  • Total Commits: 1,064
  • Total Committers: 14
  • Avg Commits per committer: 76.0
  • Development Distribution Score (DDS): 0.376
Past Year
  • Commits: 130
  • Committers: 5
  • Avg Commits per committer: 26.0
  • Development Distribution Score (DDS): 0.554
Top Committers
Name Email Commits
Guillaume Cyr G****r@f****a 664
Bruno Forest B****t@f****a 237
Marc-Alexandre Martel m****l@g****m 57
Landry-G g****y@l****a 29
Forest F****3@f****a 28
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

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 119
  • Total pull requests: 7
  • Average time to close issues: 28 days
  • Average time to close pull requests: 1 day
  • Total issue authors: 7
  • Total pull request authors: 3
  • Average comments per issue: 0.62
  • Average comments per pull request: 0.29
  • Merged pull requests: 5
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 18
  • Pull requests: 6
  • Average time to close issues: about 1 month
  • Average time to close pull requests: about 19 hours
  • Issue authors: 4
  • Pull request authors: 2
  • Average comments per issue: 0.72
  • Average comments per pull request: 0.17
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • gcyr (93)
  • BrunoForest (33)
  • martel21324 (12)
  • Klemet (9)
  • Landry-G (8)
  • JFCarle (7)
  • frad123 (2)
  • peret2 (1)
  • LA-Giasson (1)
  • BFECLucasMoreau (1)
Pull Request Authors
  • martel21324 (15)
  • gcyr (7)
  • Landry-G (4)
  • BFECLucasMoreau (1)
  • Klemet (1)
Top Labels
Issue Labels
enhancement (70) bug (61) BFECopt (21) CC (16) priority:high (15) documentation (14) Interface (13) Carbone (9) Replanification (7) priority:normal (7) Machine Learning (5) Excel (4) priority:low (4) Debug facilities (3) validation (3) Diffusion (2) wontfix (1)
Pull Request Labels
priority:high (4) bug (3) enhancement (2) CC (1) Replanification (1) Carbone (1)

Packages

  • Total packages: 2
  • Total downloads: unknown
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 4
proxy.golang.org: github.com/bureau-du-forestier-en-chef/fmt
  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago
proxy.golang.org: github.com/Bureau-du-Forestier-en-chef/FMT
  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago

Dependencies

Templates/Rpackage/FMT/DESCRIPTION cran
  • Rcpp >= 1.0.4 imports