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/support/pages/academic-initiative-accounts

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.

Voici un exemple de procédure pour faire l'installation pour la version 22.1.1 avec python 3.10. Vous devez ajuster les instructions selon la version de cplex que vous désirez utiliser et celle-ci doit correspondre au module que vous avez chargé. Vous devrez aussi ajuster en fonction de la version de python.

Nous vous recommandons fortement d'utiliser un environnement virtuel pour votre projet plutôt que d'utiliser l'option --user.

module load cplex-studio/22.1.1
mkdir -p /tmp/$$
cp -r /home/ibm/cplex-studio/22.1.1/cplex/python/3.10/ /tmp/$$
cd /tmp/$$/3.10/x86-64_linux
python setup.py install --user
cd
rm -rf /tmp/$$

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)