CPLEX: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
No edit summary
No edit summary
 
(24 intermediate revisions by 6 users not shown)
Line 1: Line 1:
<languages />
<languages />
[[Category:Software]]
<translate>
<translate>
[https://www.ibm.com/analytics/data-science/prescriptive-analytics/cplex-optimizer CPLEX] est un logiciel d'optimisation développé par IBM. Il est disponible aux usagers universitaires via le programme académique d'IBM.  
<!--T:1-->
[https://www.ibm.com/analytics/data-science/prescriptive-analytics/cplex-optimizer CPLEX] est un logiciel d'optimisation développé par IBM qui est disponible aux usagers universitaires via le programme [https://www.ibm.com/academic/home Academic Initiative].  


==Téléchargement==
==Téléchargement== <!--T:2-->
Pour pouvoir utiliser CPLEX sur une des grappes de Compute Canada, vous devez tout d'abord vous inscrire au programme académique IBM et télécharger votre version personnelle du logiciel.
Pour pouvoir utiliser CPLEX sur une grappe de Calcul Canada, [https://www.ibm.com/academic/home vous devez d'abord vous inscrire avec IBM] puis télécharger votre version personnelle du logiciel.  Si vous avez le choix entre plusieurs architectures, choisissez ''Linux x86-64''.


==Installation==
==Installation== <!--T:3-->
Le fichier est une archive exécutable qui fera l'installation en posant quelques questions. Pour exécuter l'archive, il faut faire <tt>bash ./cplex_studioXYZ.linux-x86.bin</tt>.
Le fichier est une archive exécutable qui fera l'installation en posant quelques questions. Pour exécuter l'archive, il faut faire <tt>bash ./cplex_studioXYZ.linux-x86.bin</tt>.


<!--T:4-->
Pour accéder au logiciel, vous pouvez créer des modules personnels. Les modules sont habituellement créés et mis dans une arborescence de répertories. Pour que vos modules soient trouvés, vous devez modifier le fichier de configuration $HOME/.bashrc pour pointer vers la racine de cette arborescence, en ajoutant la ligne suivante:
Pour accéder au logiciel, vous pouvez créer des modules personnels. Les modules sont habituellement créés et mis dans une arborescence de répertories. Pour que vos modules soient trouvés, vous devez modifier le fichier de configuration $HOME/.bashrc pour pointer vers la racine de cette arborescence, en ajoutant la ligne suivante:


<!--T:5-->
{{Commande|export MODULEPATH{{=}}$HOME/modulefiles:$MODULEPATH}}
{{Commande|export MODULEPATH{{=}}$HOME/modulefiles:$MODULEPATH}}


<!--T:6-->
Ensuite, il faut créer une structure de répertoires pour y mettre votre nouveau module cplex:
Ensuite, il faut créer une structure de répertoires pour y mettre votre nouveau module cplex:


<!--T:7-->
{{Commande|mkdir -p $HOME/modulefiles/mycplex}}
{{Commande|mkdir -p $HOME/modulefiles/mycplex}}


<!--T:8-->
Dans ce répertoire, vous allez créer un fichier (par exemple <tt>$HOME/modulefiles/mycplex/12.8.0</tt>) ayant le numéro de la version que vous avez téléchargé précédemment (le XYX) et qui contient ceci:
Dans ce répertoire, vous allez créer un fichier (par exemple <tt>$HOME/modulefiles/mycplex/12.8.0</tt>) ayant le numéro de la version que vous avez téléchargé précédemment (le XYX) et qui contient ceci:
</translate>
{{Fichier
{{Fichier
   |name=cplex_module.sh
   |name=cplex_module.sh
   |lang="sh"
   |lang="sh"
   |contents=
   |contents=
************************************************************************************************


#%Module1.0#####################################################################
<!--T:9-->
#%Module1.0####
##
##
## cplex
## cplex
Line 31: Line 39:
         global cplexversion
         global cplexversion


         puts stderr "\tIBM ILOG cplex "
         <!--T:10-->
puts stderr "\tIBM ILOG cplex "
         puts stderr "\tThis module provides configuration for cplex, concert, cpoptimizer and opl"
         puts stderr "\tThis module provides configuration for cplex, concert, cpoptimizer and opl"
}
}


<!--T:11-->
module-whatis  "IBM ILOG cplex (cplex, concert, cpoptimizer, opl). This version doesn't ask for a licence file."
module-whatis  "IBM ILOG cplex (cplex, concert, cpoptimizer, opl). This version doesn't ask for a licence file."


<!--T:12-->
# for Tcl script use only
# for Tcl script use only
set    cplexversion        XYZ
set    cplexversion        XYZ
Line 46: Line 57:




<!--T:13-->
set cplexbin x86-64_linux
set cplexbin x86-64_linux
set cplexlib $cplexbin/static_pic
set cplexlib $cplexbin/static_pic
Line 56: Line 68:




<!--T:14-->
prepend-path    PATH        $cplexroot/bin/$cplexbin
prepend-path    PATH        $cplexroot/bin/$cplexbin
prepend-path    PATH        $oplroot/bin/$oplbin
prepend-path    PATH        $oplroot/bin/$oplbin
prepend-path    PATH        $cpoptimizerroot/bin/$cpoptimizerbin
prepend-path    PATH        $cpoptimizerroot/bin/$cpoptimizerbin


<!--T:15-->
prepend-path    CPATH        $cplexroot/include
prepend-path    CPATH        $cplexroot/include
prepend-path    CPATH        $concertroot/include
prepend-path    CPATH        $concertroot/include
Line 65: Line 79:
prepend-path    CPATH        $cpoptimizerroot/include
prepend-path    CPATH        $cpoptimizerroot/include


<!--T:16-->
prepend-path -d " "  CPATH_EXPANDED        -I$cplexroot/include
prepend-path -d " "  CPATH_EXPANDED        -I$cplexroot/include
prepend-path -d " "  CPATH_EXPANDED        -I$concertroot/include
prepend-path -d " "  CPATH_EXPANDED        -I$concertroot/include
prepend-path -d " "  CPATH_EXPANDED        -I$oplroot/include
prepend-path -d " "  CPATH_EXPANDED        -I$oplroot/include
prepend-path -d " "  CPATH_EXPANDED        -I$cpoptimizerroot/include
prepend-path -d " "  CPATH_EXPANDED        -I$cpoptimizerroot/include


<!--T:17-->
prepend-path    LIBRARY_PATH $cplexroot/lib/$cplexlib
prepend-path    LIBRARY_PATH $cplexroot/lib/$cplexlib
prepend-path    LIBRARY_PATH $concertroot/lib/$concertlib
prepend-path    LIBRARY_PATH $concertroot/lib/$concertlib
Line 76: Line 92:
prepend-path    LIBRARY_PATH $cpoptimizerroot/lib/$cpoptimizerlib
prepend-path    LIBRARY_PATH $cpoptimizerroot/lib/$cpoptimizerlib


<!--T:18-->
prepend-path -d " "  LIBRARY_PATH_EXPANDED -L$cplexroot/lib/$cplexlib
prepend-path -d " "  LIBRARY_PATH_EXPANDED -L$cplexroot/lib/$cplexlib
prepend-path -d " "  LIBRARY_PATH_EXPANDED -L$concertroot/lib/$concertlib
prepend-path -d " "  LIBRARY_PATH_EXPANDED -L$concertroot/lib/$concertlib
prepend-path -d " "  LIBRARY_PATH_EXPANDED -L$oplroot/lib/$opllib
prepend-path -d " "  LIBRARY_PATH_EXPANDED -L$oplroot/lib/$opllib
prepend-path -d " "  LIBRARY_PATH_EXPANDED -L$oplroot/bin/x86-64_linux/
prepend-path -d " "  LIBRARY_PATH_EXPANDED -L$oplroot/bin/x86-64_linux/
prepend-path -d " "  LIBRARY_PATH_EXPANDED  -L$cpoptimizerroot/lib/$cpoptimizerlib
prepend-path -d " "  LIBRARY_PATH_EXPANDED  -L$cpoptimizerroot/lib/$cpoptimizerlib


<!--T:19-->
prepend-path    LD_LIBRARY_PATH      $cplexroot/bin/$cplexbin
prepend-path    LD_LIBRARY_PATH      $cplexroot/bin/$cplexbin
prepend-path    LD_LIBRARY_PATH      $oplroot/bin/$oplbin
prepend-path    LD_LIBRARY_PATH      $oplroot/bin/$oplbin


<!--T:20-->
prepend-path    CLASSPATH $cplexroot/lib/cplex.jar
prepend-path    CLASSPATH $cplexroot/lib/cplex.jar
prepend-path    MATLABPATH $cplexroot/matlab
prepend-path    MATLABPATH $cplexroot/matlab
 
prepend-path    STUDIO_ROOT $studio_root
***********************************************************
<!--T:21-->
}}
}}
<translate>
<!--T:28-->
Ajustez les lignes qui correspondent aux variables <tt>cplexversion</tt> et <tt>studio_root</tt> afin qu'elles aient les bonnes valeurs : la version téléchargée et du chemin d'accès pour ce logiciel (c'est-à-dire le chemin que vous avez spécifié lors de l'extraction de l'archive).
Ajustez les lignes qui correspondent aux variables <tt>cplexversion</tt> et <tt>studio_root</tt> afin qu'elles aient les bonnes valeurs : la version téléchargée et du chemin d'accès pour ce logiciel (c'est-à-dire le chemin que vous avez spécifié lors de l'extraction de l'archive).


==Java==
==Java== <!--T:22-->
Si vous utilisez java, vous aurez quelques étapes supplémentaires. Tout d'abord, dans votre fichier .bashrc, vous pouvez ajouter la ligne,
Si vous utilisez java, vous aurez quelques étapes supplémentaires. Tout d'abord, dans votre fichier .bashrc, vous pouvez ajouter la ligne,
{{Commande|export CLASSPATH{{=}}.}}
{{Commande|export CLASSPATH{{=}}.}}
qui permettra de trouver votre code lors de l'exécution.
qui permettra de trouver votre code lors de l'exécution.


Ensuite, vous devrez modifier la librairie dynamique de cplex. Cherchez cette librairie dans l'arborescence du répertoire d'installation, faites en une copie et exécutez la commande:
<!--T:23-->
Ensuite, vous devrez modifier la librairie dynamique de CPLEX. Cherchez cette librairie dans l'arborescence du répertoire d'installation, faites-en une copie et exécutez la commande:
{{Commande|setrpaths.sh --path libcplex1280.so}}
{{Commande|setrpaths.sh --path libcplex1280.so}}


<!--T:24-->
Il est possible que lors de votre compilation, vous ayez un message d'erreur à cause d'un manque de mémoire. Si c'est le cas, vous devrez demander un noeud de calcul interactif pour pouvoir faire la compilation.
Il est possible que lors de votre compilation, vous ayez un message d'erreur à cause d'un manque de mémoire. Si c'est le cas, vous devrez demander un noeud de calcul interactif pour pouvoir faire la compilation.
Par exemple:
Par exemple:
{{Commande|salloc --time{{=}}1:0:0 --ntasks{{=}}1 --mem-per-cpu{{=}}8G}}
{{Commande|salloc --time{{=}}1:0:0 --ntasks{{=}}1 --mem-per-cpu{{=}}8G}}
==Python== <!--T:25-->
Après avoir fait l'installation de [https://www.ibm.com/analytics/data-science/prescriptive-analytics/cplex-optimizer CPLEX] comme indiqué dans la section précédente, il faut tout d'abord charger CPLEX:
{{Commande|module load mycplex/<version>}}
<!--T:26-->
Pour installer les paquets de CPLEX tel que <tt>docplex</tt>, nous vous suggérons de le faire à partir d'un [[Python/fr#Cr.C3.A9er_et_utiliser_un_environnement_virtuel | environnement virtuel]].
<!--T:27-->
Une fois l'environnement virtuel activé, vous devrez aller dans le répertoire <tt>$STUDIO_ROOT/python</tt> et ensuite vous pouvez faire l'installation de la librairie avec la commande:
{{Commande|prompt=(ENV) [nom@serveur ~]|python setup.py install
}}
L'installation des paquets CPLEX doivent se faire sur le noeud de tête, puisqu'elles ne sont pas disponibles sur notre [[Available_Python_wheels/fr | pile logicielle]].
</translate>
</translate>

Latest revision as of 16:02, 24 March 2023

Other languages:

CPLEX est un logiciel d'optimisation développé par IBM qui est disponible aux usagers universitaires via le programme Academic Initiative.

Téléchargement

Pour pouvoir utiliser CPLEX sur une grappe de Calcul Canada, vous devez d'abord vous inscrire avec IBM puis télécharger votre version personnelle du logiciel. Si vous avez le choix entre plusieurs architectures, choisissez Linux x86-64.

Installation

Le fichier est une archive exécutable qui fera l'installation en posant quelques questions. Pour exécuter l'archive, il faut faire bash ./cplex_studioXYZ.linux-x86.bin.

Pour accéder au logiciel, vous pouvez créer des modules personnels. Les modules sont habituellement créés et mis dans une arborescence de répertories. Pour que vos modules soient trouvés, vous devez modifier le fichier de configuration $HOME/.bashrc pour pointer vers la racine de cette arborescence, en ajoutant la ligne suivante:

Question.png
[nom@serveur ~]$ export MODULEPATH=$HOME/modulefiles:$MODULEPATH

Ensuite, il faut créer une structure de répertoires pour y mettre votre nouveau module cplex:

Question.png
[nom@serveur ~]$ mkdir -p $HOME/modulefiles/mycplex

Dans ce répertoire, vous allez créer un fichier (par exemple $HOME/modulefiles/mycplex/12.8.0) ayant le numéro de la version que vous avez téléchargé précédemment (le XYX) et qui contient ceci:

Fichier : cplex_module.sh

#%Module1.0####
##
## cplex
##
proc ModulesHelp { } {
        global cplexversion

puts stderr "\tIBM ILOG cplex "
        puts stderr "\tThis module provides configuration for cplex, concert, cpoptimizer and opl"
}

module-whatis   "IBM ILOG cplex (cplex, concert, cpoptimizer, opl). This version doesn't ask for a licence file."

# for Tcl script use only
set     cplexversion        XYZ
set     studio_root          <root path of cplex>
set     cplexroot             $studio_root/cplex
set     concertroot           $studio_root/concert
set     oplroot               $studio_root/opl
set     cpoptimizerroot       $studio_root/cpoptimizer


set cplexbin x86-64_linux
set cplexlib $cplexbin/static_pic
set concertbin x86-64_linux
set concertlib $concertbin/static_pic
set oplbin x86-64_linux
set opllib $oplbin/static_pic
set cpoptimizerbin x86-64_linux
set cpoptimizerlib $cpoptimizerbin/static_pic


prepend-path    PATH         $cplexroot/bin/$cplexbin
prepend-path    PATH         $oplroot/bin/$oplbin
prepend-path    PATH         $cpoptimizerroot/bin/$cpoptimizerbin

prepend-path    CPATH        $cplexroot/include
prepend-path    CPATH        $concertroot/include
prepend-path    CPATH        $oplroot/include
prepend-path    CPATH        $cpoptimizerroot/include

prepend-path -d " "   CPATH_EXPANDED        -I$cplexroot/include
prepend-path -d " "  CPATH_EXPANDED        -I$concertroot/include
prepend-path -d " "   CPATH_EXPANDED        -I$oplroot/include
prepend-path -d " "   CPATH_EXPANDED        -I$cpoptimizerroot/include

prepend-path    LIBRARY_PATH $cplexroot/lib/$cplexlib
prepend-path    LIBRARY_PATH $concertroot/lib/$concertlib
prepend-path    LIBRARY_PATH $oplroot/lib/$opllib
prepend-path    LIBRARY_PATH $oplroot/bin/x86-64_linux/
prepend-path    LIBRARY_PATH $cpoptimizerroot/lib/$cpoptimizerlib

prepend-path -d " "   LIBRARY_PATH_EXPANDED -L$cplexroot/lib/$cplexlib
prepend-path -d " "  LIBRARY_PATH_EXPANDED -L$concertroot/lib/$concertlib
prepend-path -d " "   LIBRARY_PATH_EXPANDED -L$oplroot/lib/$opllib
prepend-path -d " "   LIBRARY_PATH_EXPANDED -L$oplroot/bin/x86-64_linux/
prepend-path -d " "   LIBRARY_PATH_EXPANDED  -L$cpoptimizerroot/lib/$cpoptimizerlib

prepend-path    LD_LIBRARY_PATH      $cplexroot/bin/$cplexbin
prepend-path    LD_LIBRARY_PATH      $oplroot/bin/$oplbin

prepend-path     CLASSPATH $cplexroot/lib/cplex.jar
prepend-path     MATLABPATH $cplexroot/matlab
prepend-path     STUDIO_ROOT $studio_root


Ajustez les lignes qui correspondent aux variables cplexversion et studio_root afin qu'elles aient les bonnes valeurs : la version téléchargée et du chemin d'accès pour ce logiciel (c'est-à-dire le chemin que vous avez spécifié lors de l'extraction de l'archive).

Java

Si vous utilisez java, vous aurez quelques étapes supplémentaires. Tout d'abord, dans votre fichier .bashrc, vous pouvez ajouter la ligne,

Question.png
[nom@serveur ~]$ export CLASSPATH=.

qui permettra de trouver votre code lors de l'exécution.

Ensuite, vous devrez modifier la librairie dynamique de CPLEX. Cherchez cette librairie dans l'arborescence du répertoire d'installation, faites-en une copie et exécutez la commande:

Question.png
[nom@serveur ~]$ setrpaths.sh --path libcplex1280.so

Il est possible que lors de votre compilation, vous ayez un message d'erreur à cause d'un manque de mémoire. Si c'est le cas, vous devrez demander un noeud de calcul interactif pour pouvoir faire la compilation. Par exemple:

Question.png
[nom@serveur ~]$ salloc --time=1:0:0 --ntasks=1 --mem-per-cpu=8G

Python

Après avoir fait l'installation de CPLEX comme indiqué dans la section précédente, il faut tout d'abord charger CPLEX:

Question.png
[nom@serveur ~]$ module load mycplex/<version>

Pour installer les paquets de CPLEX tel que docplex, nous vous suggérons de le faire à partir d'un environnement virtuel.

Une fois l'environnement virtuel activé, vous devrez aller dans le répertoire $STUDIO_ROOT/python et ensuite vous pouvez faire l'installation de la librairie avec la commande:

Question.png
(ENV) [nom@serveur ~] python setup.py install

L'installation des paquets CPLEX doivent se faire sur le noeud de tête, puisqu'elles ne sont pas disponibles sur notre pile logicielle.