Gurobi/fr: Difference between revisions

Updating to match new version of source page
No edit summary
(Updating to match new version of source page)
Line 11: Line 11:
===Academic Usage Agreement===
===Academic Usage Agreement===


My Compute Canada username is "_______" and I am a member of the academic institution "_____________________".  This message confirms that I will only use the Compute Canada Gurobi license provided on Compute Canada systems for the purpose of non-commercial research project(s) to be published in publicly available article(s).
<div class="mw-translate-fuzzy">
== Allocations interactives ==
</div>
 
<div class="mw-translate-fuzzy">
    * https://www.gurobi.com/documentation/8.1/refman/recording_api_calls.html
  ** https://www.gurobi.com/documentation/8.1/refman/parameter_descriptions.html
  *** https://www.gurobi.com/documentation/8.1/refman/optimization_status_codes.html
  **** https://www.gurobi.com/documentation/8.1/refman/attributes.html
</div>


== Allocations interactives ==
$ module load gurobi
$ gurobi_cl 1> /dev/null && echo Success || echo Fail


<div class="mw-translate-fuzzy">
===Ligne de commande===
===Ligne de commande===
</div>
<div class="mw-translate-fuzzy">
=== Gurobi-Python ===
</div>


  [gra-login2:~] salloc --time=1:00:0 --cpus-per-task=8 --mem=1G --account=def-xyz
  [gra-login2:~] salloc --time=1:00:0 --cpus-per-task=8 --mem=1G --account=def-xyz
Line 22: Line 39:
  [gra800:~] gurobi_cl --help
  [gra800:~] gurobi_cl --help


<div class="mw-translate-fuzzy">
# Create environment file in current directory setting the number of threads:
echo "Threads ${SLURM_CPUS_ON_NODE:-1}" > gurobi.env
</div>
<div class="mw-translate-fuzzy">
== Environnements virtuels Python ==
</div>
<div class="mw-translate-fuzzy">
=== Interpréteur interactif ===
=== Interpréteur interactif ===
   
   
Line 38: Line 65:
  gurobi> m.runtime                          see ****
  gurobi> m.runtime                          see ****
  gurobi> help()
  gurobi> help()
</div>
<div class="mw-translate-fuzzy">
Cette procédure est effectuée une seule fois pour chaque système.
</div>


<div class="mw-translate-fuzzy">
    * https://www.gurobi.com/documentation/8.1/refman/recording_api_calls.html
{{Commands|prompt=[name@server ~] $
  ** https://www.gurobi.com/documentation/8.1/refman/parameter_descriptions.html
| module load gurobi/9.0.1 python/3.7
   *** https://www.gurobi.com/documentation/8.1/refman/optimization_status_codes.html
| virtualenv --no-download  ~/env_gurobi
**** https://www.gurobi.com/documentation/8.1/refman/attributes.html
  Using base prefix '/cvmfs/soft.computecanada.ca/easybuild/software/2017/Core/python/3.7.4'
   New python executable in /home/name/env_gurobi/bin/python
  Installing setuptools, pip, wheel...
  done.
| source ~/env_gurobi/bin/activate
}}
</div>


<div class="mw-translate-fuzzy">
===Répéter des appels API===
===Répéter des appels API===
Il est possible d'enregistrer des appels API et de rejouer l'enregistrement avec la commande
Il est possible d'enregistrer des appels API et de rejouer l'enregistrement avec la commande
</div>


[gra800:~] gurobi_cl recording000.grbr
<div class="mw-translate-fuzzy">
Nous pouvons maintenant activer Gurobi et l'environnement avec
</div>


Référence : https://www.gurobi.com/documentation/8.1/refman/recording_api_calls.html
<div class="mw-translate-fuzzy">
Remarquez que nous utilisons maintenant <code>python</code> plutôt que <code>gurobi.sh</code>.
</div>


== Tâches en lots ==
<div class="mw-translate-fuzzy">
 
== Comment citer Gurobi ==
=== Format LP ===  
</div>
 
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
  |name=gurobi_example.sh
  |lang="sh"
  |contents=
#!/bin/bash
#SBATCH --account=def-group  # some account
#SBATCH --time=0:30          # time limit (D-HH:MM)
#SBATCH --mem-per-cpu=1000M  # memory per CPU (in MB)


<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>
# Create environment file in current directory setting the number of threads:
echo "Threads ${SLURM_CPUS_ON_NODE:-1}" > gurobi.env


gurobi_cl ${GUROBI_HOME}/examples/data/coins.lp
gurobi_cl ${GUROBI_HOME}/examples/data/coins.lp
}}
}}


=== Gurobi-Python ===  
=== Job using 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].
This is an example jobscript for a model using [https://www.gurobi.com/documentation/8.1/refman/py_python_api_overview.html#sec:Python Gurobi-Python].
{{File
{{File
   |name=gurobi-py_example.sh
   |name=gurobi-py_example.sh
Line 99: Line 132:
}}
}}


== Environnements virtuels Python ==
== Using Gurobi in Python virtual environments ==


Gurobi a sa propre version de Python qui ne contient aucun autre paquet de tiers autre que Gurobi. Pour utiliser Gurobi avec d'autres paquets Python comme NumPy, Matplotlib, Pandas et autres, il faut [[Python/fr#Créer_et_utiliser_un_environnement_virtuel|créer un environnement virtuel Python]] dans lequel seront installés <code>gurobipy</code> et par exemple <code>pandas</code>.
Gurobi brings it's own version of Python but that one does not contain any 3rd-party Python packages except Gurobi.   In order to use Gurobi together with popular Python  
packages like NumPy, Matplotlib, Pandas and others, we need to create a [[Python#Creating_and_using_a_virtual_environment|virtual Python environment]] in which we can install both <code>gurobipy</code> and e.g. <code>pandas</code>.


Nous devons d'abord déterminer la combinaison des versions de Gurobi et Python à utiliser.
Before we start, we need to decide which combination of versions for Gurobi and Python to use.


{{Commands|prompt=[name@server ~] $
{{Commands|prompt=[name@server ~] $
Line 121: Line 155:
}}
}}


Nous voyons que <code>gurobi/8.1.1</code> a sa propre installation de  <code>python2.7/</code> et des paquets Python pour les versions de Python 2.7, 3.5, 3.6 et 3.7 (<code>pythonX.Y_utf32/</code>),
We see that <code>gurobi/8.1.1</code> brings it's own installation of <code>python2.7/</code> and Python packages for Python 2.7, 3.5, 3.6 and 3.7 (<code>pythonX.Y_utf32/</code>),
et que <code>gurobi/9.0.1</code> utilise par défaut <code>python3.7/</code> et fournit les paquets Python pour les versions Python 2.7, 3.5, 3.6, 3.7 et 3.8 (<code>pythonX.Y_utf32/</code>).
while <code>gurobi/9.0.1</code> by default uses <code>python3.7/</code> and brings Python packages for Python 2.7, 3.5, 3.6, 3.7 and 3.8 (<code>pythonX.Y_utf32/</code>).


Dans cet exemple, nous voulons créer un environnement Python basé sur <code>python/3.7</code> où nous voulons utiliser <code>gurobi/9.0.1</code> et installer le paquet Pandas.
In this example we want to create a Python environment based on <code>python/3.7</code> in which we want to use <code>gurobi/9.0.1</code> and install the Pandas package.


=== Créer un environnement virtuel Python ===
=== Creating a Python virtual environments with Gurobi ===


Cette procédure est effectuée une seule fois pour chaque système.  
These steps need to be done only once per system.  


Chargez d'abord les modules pour [[Python/fr#Créer_et_utiliser_un_environnement_virtuel|créer l'environnement virtuel]], puis activez l'environnement.
The first step is to load the modules to [[Python#Creating_and_using_a_virtual_environment|create the virtual environment]] and activate it.


{{Commands|prompt=[name@server ~] $
{{Commands|prompt=[name@server ~] $
Line 142: Line 176:
}}
}}


Une fois l'environnement activé, vous pouvez installer les paquets Python que vous voulez, ici <code>pandas</code>.
Now that the environment has been activated we can install the Python packages we want to use, in this case <code>pandas</code>.


{{Commands|prompt=(env_gurobi) [name@server ~] $
{{Commands|prompt=(env_gurobi) [name@server ~] $
Line 154: Line 188:
}}
}}


Installez ensuite gurobipy dans l'environnement.
The third step is to install gurobipy into the environment:


{{Commands|prompt=(env_gurobi) [name@server ~] $
{{Commands|prompt=(env_gurobi) [name@server ~] $
Line 177: Line 211:
}}
}}


=== Utilisation ===
=== Using the Gurobi-enabled virtual environment ===


Les scripts Python peuvent maintenant importer Pandas et Gurobi.
Python scripts can now import both Pandas and Gurobi:


  import pandas as pd
  import pandas as pd
Line 187: Line 221:
  # [...]
  # [...]


Nous pouvons maintenant activer Gurobi et l'environnement avec
Once created we can activate Gurobi and the environment with:


  module load gurobi/9.0.1
  module load gurobi/9.0.1
Line 193: Line 227:
  python  my_gurobi_script.py
  python  my_gurobi_script.py


Remarquez que nous utilisons maintenant <code>python</code> plutôt que <code>gurobi.sh</code>.
Note that we now use <code>python</code> instead of <code>gurobi.sh</code>!


Voici un exemple de script pour une tâche :
And this is an example job script that we can use:
{{File
{{File
   |name=gurobi-py_example.sh
   |name=gurobi-py_example.sh
Line 216: Line 250:
}}
}}


== Comment citer Gurobi ==
== Cite Gurobi ==


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?'']
Please see [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?]
38,892

edits