Aller au contenu

GUROBI

Obtention

Pour obtenir gurobi, vous devez vous inscrire sur le site https://www.gurobi.com/academia/academic-program-and-licenses/

Ensuite vous pourrez télécharger et activer votre clé.

Sur les postes Linux du CIRRELT/GERAD, le logiciel est déjà disponible et vous pouvez y accéder en chargeant le module gurobi.

module load gurobi

Installation

Pour certains langages comme python et julia, même si gurobi est déjà installé, vous devez tout de même installer le package approprié pour la langue.

Le module gurobipy est disponible dans pypy, donc il peut être installé avec pip.

module load gurobi/11.0.0
pip3 install gurobipy

Voici un exemple d'installation pour gurobi 11.0.0. Assurez-vous de charger la même version du module que celle que vous utilisez lors de l'installation.

Nous vous recommandons d'utiliser un environnement virtuel pour votre projet.

import Pkg
Pkg.add("JuMP")
ENV["GUROBI_HOME"]  = "/home/gurobi/11.0.0/linux64"
Pkg.add("Gurobi")
Pkg.build("Gurobi")

Compilation

C++

Lorsque vous compilez votre programme C++ avec gurobi, vous devez spécifier quelle version de la librairie g++ utiliser. La décision dépends de quelle version de g++ Vous utilisez. vous pouvez vérifier en utilisant la commande suivante:

g++ --version
  • g++ < 7 utilisez: -lgurobi_g++4.8

  • g++ >= 7 utilisez: -lgurobi_g++5.2

Si vous n'utilisez pas la version par défaut de gurobi, il est possible que vous ayez à ajuster la version de la librairie à utiliser.

Nombre de threads

Gurobi essaiera automatiquement d'utiliser tous les threads sur une machine lors de l'optimisation. Comme les ordinateurs sont partagés, limitez le nombre utilisé par votre application. Il y a aussi des considération de quantité de mémoire disponible à prendre en compte, chaque thread exigeant plus de mémoire.

GRBsetintparam(GRBgetenv(model), GRB_INT_PAR_THREADS , 1)
model.set(GRB_IntParam_Threads, 1)
model.setParam(GRB.Param.Threads,1)
m = Model(solver = GurobiSolver(Threads=1))