Vous êtes sur la page 1sur 1

import pandas as pd

import pulp
import mysql.connector as sql
db_connection = sql.connect(host='localhost',port=3307, database='alprog',
user='root', password='rayansaad')
db_cursor = db_connection.cursor()
Demande=pd.read_sql("Select * from Demande",db_connection).set_index("Mois")
Usines=pd.read_sql("select * from
Variables_Usines",db_connection).set_index(['Mois','Usine'])
production = pulp.LpVariable.dicts("production",
((mois,usine ) for mois, usine in
Usines.index),
lowBound=0,
cat='Integer')
activité_usine=pulp.LpVariable.dicts("activité_usine",
((mois, usine) for mois, usine in
Usines.index),
cat='Binary')
#on intancie le probem
prob=pulp.LpProblem("Production à moindre couts", pulp.LpMinimize)
#fonction obj
prob += pulp.lpSum(
[production[mois, usine] * Usines.loc[(mois, usine), 'Couts_Variables'] for
mois, usine in Usines.index]
+ [activité_usine[mois, usine] * Usines.loc[(mois, usine), 'Couts_Fixes'] for
mois, usine in Usines.index]
)
#les contraintes
#égaler la demande
for mois in Demande.index:
prob += production[(mois, 'A')] + production[(mois, 'B')] == Demande.loc[mois,
'Demande']
#valeur de la production entre les capacités Min et Max (et cela permet une
coordination entre la production et l'activité de 'lusine
for mois, usine in Usines.index:
min_production = Usines.loc[(mois, usine), 'Capacite_Min']
max_production = Usines.loc[(mois, usine), 'Capacite_Max']
prob += production[(mois, usine)] >= min_production * activité_usine[mois,
usine]
prob += production[(mois, usine)] <= max_production * activité_usine[mois,
usine]
#contrainte sur l'usine B
prob += activité_usine[5, 'B'] == 0
prob += production[5, 'B'] == 0
#La résolution
prob.solve()
output = []
for mois, usine in production:
var_output = {
'Mois': mois,
'Usine': usine,
'Production': production[(mois, usine)].varValue,
'activité usine': activité_usine[mois, usine].varValue
}
output.append(var_output)
output_df = pd.DataFrame.from_records(output).sort_values(['Mois', 'Usine'])
output_df.set_index(['Mois', 'Usine'], inplace=True)
print(output_df)

Vous aimerez peut-être aussi