Aller au contenu

CPLEX

Comment obtenir Cplex

Le logiciel cplex est disponible pour les étudiants en plus des professeurs, chercheurs et employés universitaires. Pour le télécharger, suivez le lien suivant:

https://www.ibm.com/academic/home

Sur les ordinateurs Linux du CIRRELT/GERAD, le logiciel est déjà disponible en chargeant le module cplex-studio.

module load cplex-studio

Installation

Pour certains langages, comme python et julia, en plus de faire l'installation normale de cplex, vous devez ajouter les modules propres au language.

Pour utiliser cplex avec python, vous devez utiliser la version 22.1.2 ou plus récente. Pour cette version, il est possible d'installer les modules jusqu'à python 3.12.

Voici une procédure d'installation.

Création et activation d'un environnement virtuel

python3 -m venv .venv
. .venv/bin/activate

Mise à jour de pip et installation des modules cplex

pip3 install --upgrade pip
pip3 install cplex docplex

L'installation des modules avec pip installe la version gratuite. Comme cette version a des limites sur la taille des problèmes, on applique la modification pour utiliser la version complète. Cette procédure est décrite sur le site d'ibm: https://www.ibm.com/support/pages/does-cplex-optimization-studio-2211-support-python-311

python3 /home/ibm/cplex-studio/make_full.py /home/ibm/cplex-studio/22.1.2

Voici un exemple de procédure d'installation. Nous vous recommandons d'utiliser un environnement virtuel pour votre projet.

import Pkg
Pkg.add("JuMP")
ENV["CPLEX_STUDIO_BINARIES"] = "/home/ibm/cplex-studio/22.1.1/cplex/bin/x86-64_linux/"
Pkg.add("CPLEX")
Pkg.build("CPLEX")

Tutoriel CPLEX

Voici un tutoriel en deux parties en format PDF permettant de comprendre les bases de l'implantation d'un modèle mathématique avec CPLEX en C++.

Comme point de départ, vous pouvez consulter ce document de référence couvrant les notions importantes (classes, méthodes) à savoir au sujet de CPLEX.

Vous pouvez aussi vous référer aux exemples commentés extraits de la distribution de CPLEX et couvrant l'ensemble des notions vues dans la partie Référence.

Paramètres Cplex

Depuis la version 11 de CPLEX, le solveur cherche à utiliser tous les processeurs de la machine pour résoudre les modèles qui sont présents dans la machine, que ce soit des CPU, coeurs ou hyperthreading.

Il est donc primordial de spécifier à CPLEX de résoudre les modèles avec un nombre de processeurs limités, afin de ne pas interférer avec les autres programmes qui tournent déjà sur une machine.

Dans les exemples qui suivent, nous utilisons 1 seul processeur.

cplex.setParam(IloCplex::Param::Threads, 1);
CPXsetintparam(env, CPXPARAM_Threads, 1);
execute PARAMS {
  cplex.threads = 1;
}
set threads 1
  % Initialize the CPLEX object
  cplex = Cplex('lpex1');
  % set maximum number of threads
  cplex.Param.threads.Cur = 1;
option cplex_options 'threads=1';
cpx.parameters.threads.set(1)
 set_optimizer_attribute(model, "CPXPARAM_Threads", 1)