0% ont trouvé ce document utile (0 vote)
130 vues15 pages

Cours RO Python Cplex

Le document présente une introduction à la programmation orientée objet (POO) et à la recherche opérationnelle en Python, en mettant l'accent sur les bibliothèques Docplex et OR-Tools. Il décrit comment créer des modèles d'optimisation, définir des variables de décision, établir des contraintes et des objectifs, ainsi que résoudre des problèmes d'optimisation. Des exemples pratiques sont fournis pour illustrer l'utilisation de ces bibliothèques dans la modélisation et la résolution de problèmes d'optimisation.

Transféré par

bilalkuzgun01
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
130 vues15 pages

Cours RO Python Cplex

Le document présente une introduction à la programmation orientée objet (POO) et à la recherche opérationnelle en Python, en mettant l'accent sur les bibliothèques Docplex et OR-Tools. Il décrit comment créer des modèles d'optimisation, définir des variables de décision, établir des contraintes et des objectifs, ainsi que résoudre des problèmes d'optimisation. Des exemples pratiques sont fournis pour illustrer l'utilisation de ces bibliothèques dans la modélisation et la résolution de problèmes d'optimisation.

Transféré par

bilalkuzgun01
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

POO & Recherche opérationnelle sous python

Pr: MAJDOUB Soufyane

Université Sidi Mohamed Ben Abdellah de Fès


[email protected]

Laboratoire d’Informatique, Signaux, Automatique et Cognitivisme


November 28, 2024

MAJDOUB Soufyane (USMBA) POO & Recherche opérationnelle sous python November 28, 2024 1 / 15
Plan

1 La bibliothèque Docplex

2 Modèle d’optimisation
Variables de décision
Contraintes et objectif du modèle
Résolution du modèle

3 La bibliothèque OR-Tools

4 Modèle d’optimisation
Variables de décision
Contraintes et objectif du modèle
Exemple: Résolution du modèle

MAJDOUB Soufyane (USMBA) POO & Recherche opérationnelle sous python November 28, 2024 2 / 15
La bibliothèque Docplex

Docplex
• Docplex est une bibliothèque de programmation linéaire en Python
développée par IBM pour résoudre des problèmes d’optimisation.
• Cette bibliothèque permet de modéliser et de résoudre des problèmes
d’optimisation linéaire, en nombres entiers et quadratiques.

MAJDOUB Soufyane (USMBA) POO & Recherche opérationnelle sous python November 28, 2024 3 / 15
La bibliothèque Docplex

Docplex
• Docplex est une bibliothèque de programmation linéaire en Python
développée par IBM pour résoudre des problèmes d’optimisation.
• Cette bibliothèque permet de modéliser et de résoudre des problèmes
d’optimisation linéaire, en nombres entiers et quadratiques.

Example (Installer Docplex)


pip install docplex

MAJDOUB Soufyane (USMBA) POO & Recherche opérationnelle sous python November 28, 2024 3 / 15
La bibliothèque Docplex

Docplex
• Docplex est une bibliothèque de programmation linéaire en Python
développée par IBM pour résoudre des problèmes d’optimisation.
• Cette bibliothèque permet de modéliser et de résoudre des problèmes
d’optimisation linéaire, en nombres entiers et quadratiques.

Example (Installer Docplex)


pip install docplex

Une fois installé, vous pouvez importer la bibliothèque dans votre script Python et
commencer à modéliser et à résoudre des problèmes d’optimisation.

MAJDOUB Soufyane (USMBA) POO & Recherche opérationnelle sous python November 28, 2024 3 / 15
Modèle d’optimisation

Création du modèle
m = Model(name=’Exemple’)

MAJDOUB Soufyane (USMBA) POO & Recherche opérationnelle sous python November 28, 2024 4 / 15
Modèle d’optimisation

Création du modèle
m = Model(name=’Exemple’)

Création des variables


Variable continue
x1 = m.continuous_var(name=’x1’)
Variable continue positive
x2 = m.continuous_var(name="x2", lb=0)
Variable continue négative
x3 = m.continuous_var(name="x3", ub=0)
Variable continue bornée
x4 = m.continuous_var(name="x4", lb=-3, ub=10)

MAJDOUB Soufyane (USMBA) POO & Recherche opérationnelle sous python November 28, 2024 4 / 15
Création des variables
Variable binaire
x5 = m.binary_var(name=’x5’)
Variable entière comprise entre -3 et 10
x6 = m.integer_var(name=’x6’, lb=-3, ub=10)
Liste des variables continues de taille n comprise entre 0 et 10
x7 = m.continuous_var_list(n, lb=0.0, ub=10.0, name=’x7’)
Liste des variables binaires de taille n
x8 = m.binary_var_list(n, name=’x8’)
Liste des variables entières de taille n comprise entre -3 et 10
x9 = m.integer_var_list(n, lb=-3.0, ub=10.0, name=’x9’)

MAJDOUB Soufyane (USMBA) POO & Recherche opérationnelle sous python November 28, 2024 5 / 15
Variables de décision(suite)

Création des variables


Matrice des variables continues de m lignes et n colonnes dont les valeurs
comprissent entre a et b
x10 =m.continuous_var_matrix(n_rows,n_cols,lb=a,ub=b,name=’x10’)
Matrice des variables binaires de n rows lignes et n cols colonnes
x11 = m.binary_var_matrix(n_rows,n_cols,name=’x11’)
Matrice des variables entières de n rows lignes et n cols colonnes dont les valeurs
comprissent entre a et b
x12 = m.integer_var_matrix(n_rows,n_cols,lb=a,ub=b,name=’x12’)

MAJDOUB Soufyane (USMBA) POO & Recherche opérationnelle sous python November 28, 2024 6 / 15
Contraintes et objectif du modèle

Création des Contraintes


En Docplex, il est possible de créer des contraintes linéaires ou non-linéaires à
l’aide des opérateurs arithmétiques classiques (+, -, *, /) et des méthodes de la
classe Model.
m.add_constraint(2*x + 3*y <= 5*z + 2)

MAJDOUB Soufyane (USMBA) POO & Recherche opérationnelle sous python November 28, 2024 7 / 15
Contraintes et objectif du modèle

Création des Contraintes


En Docplex, il est possible de créer des contraintes linéaires ou non-linéaires à
l’aide des opérateurs arithmétiques classiques (+, -, *, /) et des méthodes de la
classe Model.
m.add_constraint(2*x + 3*y <= 5*z + 2)

Création de la fonction objectif


Une fois que vous avez défini toutes les variables et les contraintes du problème,
vous pouvez ajouter une fonction objective à optimiser à l’aide de la méthode
maximize() ou minimize() de la classe Model
m.maximize(*x + 2*y) //dans le cas de maximisation
m.minimize(*x + 2*y) //dans le cas de minimisation

MAJDOUB Soufyane (USMBA) POO & Recherche opérationnelle sous python November 28, 2024 7 / 15
Contraintes et objectif du modèle

Création des Contraintes


En Docplex, il est possible de créer des contraintes linéaires ou non-linéaires à
l’aide des opérateurs arithmétiques classiques (+, -, *, /) et des méthodes de la
classe Model.
m.add_constraint(2*x + 3*y <= 5*z + 2)

Création de la fonction objectif


Une fois que vous avez défini toutes les variables et les contraintes du problème,
vous pouvez ajouter une fonction objective à optimiser à l’aide de la méthode
maximize() ou minimize() de la classe Model
m.maximize(*x + 2*y) //dans le cas de maximisation
m.minimize(*x + 2*y) //dans le cas de minimisation

Résolution du modèle
La résolution du problème est faite en appelant la méthode solve() de l’objet Model
m.solve()

MAJDOUB Soufyane (USMBA) POO & Recherche opérationnelle sous python November 28, 2024 7 / 15
Résolution du modèle

Résolution du modèle
La résolution du problème est faite en appelant la méthode solve() de l’objet Model
m.solve()

MAJDOUB Soufyane (USMBA) POO & Recherche opérationnelle sous python November 28, 2024 8 / 15
Résolution du modèle

Résolution du modèle
La résolution du problème est faite en appelant la méthode solve() de l’objet Model
m.solve()

Exemple:Résolution d’un problème simple

Résoudre le programme
linéaire suivant:


 max 5x + 3y

subject to :





x + y ≤ 5
(P) :


 2x + y ≤ 8
x ≥0





y ≥0

MAJDOUB Soufyane (USMBA) POO & Recherche opérationnelle sous python November 28, 2024 8 / 15
Résolution du modèle

Résolution du modèle
La résolution du problème est faite en appelant la méthode solve() de l’objet Model
m.solve()

Exemple:Résolution d’un problème simple

Résoudre le programme from docplex.mp.model import Model


linéaire suivant: model = Model(’mon_modele’)
 x = model.continuous_var(name=’x’,lb=0)

 max 5x + 3y y = model.continuous_var(name=’y’,lb=0)

subject to : model.maximize(3*x + 4*y)




model.add_constraint(x + y <= 5)

x + y ≤ 5
(P) : model.add_constraint(2*x + y <= 8)

 2x + y ≤ 8
 sol = model.solve()
x ≥0




 print(’x =’, sol[x])
y ≥0

print(’y =’, sol[y])
print(’objectif :’, sol.objective_value)

MAJDOUB Soufyane (USMBA) POO & Recherche opérationnelle sous python November 28, 2024 8 / 15

Vous aimerez peut-être aussi