38,789
edits
No edit summary |
(Updating to match new version of source page) |
||
Line 4: | Line 4: | ||
[http://www.gurobi.com/ Gurobi] est une suite logicielle du commerce qui permet de résoudre des problèmes complexes d'optimisation. Nous abordons ici son utilisation pour la recherche sur les grappes de Calcul Canada. Des renseignements additionnels seront fournis dès que disponibles. | [http://www.gurobi.com/ Gurobi] est une suite logicielle du commerce qui permet de résoudre des problèmes complexes d'optimisation. Nous abordons ici son utilisation pour la recherche sur les grappes de Calcul Canada. Des renseignements additionnels seront fournis dès que disponibles. | ||
<div class="mw-translate-fuzzy"> | |||
==Limites de la licence== | ==Limites de la licence== | ||
</div> | |||
Calcul Canada dispense le soutien technique pour la licence gratuite disponible sur [[Graham/fr|Graham]], [[Cedar/fr|Cedar]], [[Béluga]] et [[Niagara/fr|Niagara]]. Cette licence permet 4096 utilisations simultanées (avec jetons) et l'optimisation distribuée sur un maximum de 100 nœuds. Un utilisateur peut faire exécuter plusieurs tâches en simultané. | Calcul Canada dispense le soutien technique pour la licence gratuite disponible sur [[Graham/fr|Graham]], [[Cedar/fr|Cedar]], [[Béluga]] et [[Niagara/fr|Niagara]]. Cette licence permet 4096 utilisations simultanées (avec jetons) et l'optimisation distribuée sur un maximum de 100 nœuds. Un utilisateur peut faire exécuter plusieurs tâches en simultané. | ||
Line 60: | Line 62: | ||
Référence : https://www.gurobi.com/documentation/8.1/refman/recording_api_calls.html | Référence : https://www.gurobi.com/documentation/8.1/refman/recording_api_calls.html | ||
<div class="mw-translate-fuzzy"> | |||
== Tâches en lots == | == Tâches en lots == | ||
</div> | |||
import pandas as pd | |||
import numpy as np | |||
import gurobipy as gurobi | |||
from gurobipy import * | |||
# [...] | |||
<div class="mw-translate-fuzzy"> | |||
=== Format LP === | |||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
Le script suivant est un exemple pour un modèle au [https://www.gurobi.com/documentation/8.1/refman/lp_format.html format LP]. | Le script suivant est un exemple pour un modèle au [https://www.gurobi.com/documentation/8.1/refman/lp_format.html format LP]. | ||
{{File | {{File | ||
Line 73: | Line 86: | ||
#SBATCH --time=0:30 # time limit (D-HH:MM) | #SBATCH --time=0:30 # time limit (D-HH:MM) | ||
#SBATCH --mem-per-cpu=1000M # memory per CPU (in MB) | #SBATCH --mem-per-cpu=1000M # memory per CPU (in MB) | ||
</div> | |||
Voici un exemple de script pour une tâche : | |||
<div class="mw-translate-fuzzy"> | |||
# use a version >= 9.0.3 | # use a version >= 9.0.3 | ||
module load StdEnv/2020 | module load StdEnv/2020 | ||
module load gurobi/9.1.0 | module load gurobi/9.1.0 | ||
</div> | |||
Référez-vous à [https://support.gurobi.com/hc/en-us/articles/360013195592-How-do-I-cite-Gurobi-software-for-an-academic-publication- ''How do I cite Gurobi software for an academic publication?''] | |||
<div class="mw-translate-fuzzy"> | |||
Le script suivant est un exemple de modèle qui utilise [https://www.gurobi.com/documentation/8.1/refman/py_python_api_overview.html#sec:Python Gurobi-Python]. | Le script suivant est un exemple de modèle qui utilise [https://www.gurobi.com/documentation/8.1/refman/py_python_api_overview.html#sec:Python Gurobi-Python]. | ||
{{File | {{File | ||
Line 96: | Line 109: | ||
#SBATCH --cpus-per-task=1 # number of CPUs (threads) to use | #SBATCH --cpus-per-task=1 # number of CPUs (threads) to use | ||
#SBATCH --mem-per-cpu=1000M # memory per CPU (in MB) | #SBATCH --mem-per-cpu=1000M # memory per CPU (in MB) | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
# use a version <= 9.0.2 | # use a version <= 9.0.2 | ||
module load StdEnv/2016.4 # or StdEnv/2018.3 | module load StdEnv/2016.4 # or StdEnv/2018.3 | ||
module load gurobi/9.0.2 | module load gurobi/9.0.2 | ||
</div> | |||
#module load StdEnv/2016 # for versions < 9.0.3 | |||
module load StdEnv/2020 # for versions > 9.0.2 | |||
<div class="mw-translate-fuzzy"> | |||
# Create environment file in current directory setting the number of threads: | # Create environment file in current directory setting the number of threads: | ||
echo "Threads ${SLURM_CPUS_ON_NODE:-1}" > gurobi.env | |||
</div> | |||
echo "Threads ${SLURM_CPUS_ON_NODE:-1}" > gurobi.env | echo "Threads ${SLURM_CPUS_ON_NODE:-1}" > gurobi.env | ||
<div class="mw-translate-fuzzy"> | |||
gurobi.sh ${GUROBI_HOME}/examples/python/facility.py | gurobi.sh ${GUROBI_HOME}/examples/python/facility.py | ||
}} | }} | ||
</div> | |||
== Environnements virtuels Python == | == Environnements virtuels Python == | ||
Line 226: | Line 251: | ||
== Utiliser Gurobi avec Java == | == Utiliser Gurobi avec Java == | ||
<div class="mw-translate-fuzzy"> | |||
Vous devez aussi charger un module Java et ajouter une option à la commande Java pour permettre à l'environnement virtuel Java de localiser les bibliothèques Gurobi, comme dans l'exemple suivant : | Vous devez aussi charger un module Java et ajouter une option à la commande Java pour permettre à l'environnement virtuel Java de localiser les bibliothèques Gurobi, comme dans l'exemple suivant : | ||
{{File | {{File | ||
Line 235: | Line 261: | ||
#SBATCH --cpus-per-task=1 # number of CPUs (threads) to use | #SBATCH --cpus-per-task=1 # number of CPUs (threads) to use | ||
#SBATCH --mem=4096M # memory per CPU (in MB) | #SBATCH --mem=4096M # memory per CPU (in MB) | ||
</div> | |||
module load java/14.0.2 | module load java/14.0.2 | ||
module load gurobi/9.1.2 | module load gurobi/9.1.2 | ||
java -Djava.library.path=$EBROOTGUROBI/lib -Xmx4g -jar my_java_file.jar | |||
}} | |||
<div class="mw-translate-fuzzy"> | |||
java -Djava.library.path=$EBROOTGUROBI/lib -Xmx4g -jar my_java_file.jar | java -Djava.library.path=$EBROOTGUROBI/lib -Xmx4g -jar my_java_file.jar | ||
}} | }} | ||
== Utiliser Gurobi avec des notebooks Jupyter == | == Utiliser Gurobi avec des notebooks Jupyter == | ||
</div> | |||
Vous trouverez de l'information sur [https://www.gurobi.com/resources/ Resources], [https://www.gurobi.com/resources/?category-filter=code-example Code and Modeling Examples] et [https://www.gurobi.com/resource/modeling-examples-using-the-gurobi-python-api-in-jupyter-notebook/ Optimization with Python – Jupyter Notebook Modeling Examples]. Sur le site [https://support.gurobi.com/ support.gurobi.com] faites une recherche avec <I>Jupyter Notebooks</I>. Nous ajouterons au besoin des renseignements particuliers sur comment utiliser Guroby avec Jupyter Notebooks sur les systèmes de Calcul Canada. | Vous trouverez de l'information sur [https://www.gurobi.com/resources/ Resources], [https://www.gurobi.com/resources/?category-filter=code-example Code and Modeling Examples] et [https://www.gurobi.com/resource/modeling-examples-using-the-gurobi-python-api-in-jupyter-notebook/ Optimization with Python – Jupyter Notebook Modeling Examples]. Sur le site [https://support.gurobi.com/ support.gurobi.com] faites une recherche avec <I>Jupyter Notebooks</I>. Nous ajouterons au besoin des renseignements particuliers sur comment utiliser Guroby avec Jupyter Notebooks sur les systèmes de Calcul Canada. |