Skip to content

About

Winners of West Data Festival AI Optimisation Challenge (ESIEA x LUMINESS) đŸ„‡

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Winners of West Data Festival AI Challenge (ESIEA x LUMINESS) đŸ„‡

Ce git contient les solutions développées par Amine ROSTANE, Gaël GARNIER, et Augustin LOGEAIS dans le cadre du West Data Festival AI Challenge organisé par ESIEA x LUMINESS.

Notre approche hybride combinant MILP, recuit simulĂ©, et heuristiques gloutonnes nous a permis d’obtenir un score 48 % supĂ©rieur aux scores de rĂ©fĂ©rence du benchmark officiel.


📁 Fichiers du dĂ©pĂŽt

Fichier Description
greedy_simulated_annealing_4_48.py Recuit simulé + heuristique gloutonne, fonctionne pour les instances 4_*.json à 48_*.json.
greedy_simulated_annealing_75_100.py Recuit simulé avancé pour les grosses instances 75_*.json à 100_*.json.
hybrid_milp_greedy_simulated_annealing_4_48.py Combine MILP local + recuit simulé + heuristique pour les instances 4_*.json à 48_*.json.
hybrid_milp_greedy_simulated_annealing_75_100.py Approche hybride MILP + métaheuristique pour les instances 75_*.json à 100_*.json.
milp_exact.py RĂ©solution exacte du problĂšme par MILP pur (⚠ trĂšs lent au-delĂ  de 4_*.json).
simplified_milp.py Version plus légÚre du solveur MILP, utilisable sur petites instances.
script.py Contient la définition de la classe Instance, les contraintes et les fonctions de simulation.

⚙ Installation

Ce projet utilise Python 3.9+ et les dépendances suivantes :

pip install pulp networkx numpy

📌 DĂ©pendance principale : pulp est utilisĂ©e pour la modĂ©lisation MILP.


đŸ’» ExĂ©cution

Les scripts sont configurés pour exécuter les instances correspondant à leur nom.

Par exemple :

python hybrid_milp_greedy_simulated_annealing_4_48.py

Exécutera automatiquement tous les fichiers 4_*.json à 48_*.json présents dans le répertoire courant.

Pour changer les instances exécutées, il suffit de modifier le pattern glob.glob(...) dans la fonction main() en fin de fichier.


🚀 Performances et remarques

  • Certains algorithmes ne fonctionnent que sur une plage d’instances donnĂ©e (ex: hybrid_milp_* fonctionne mal au-delĂ  de 48_*.json).

  • Les mĂ©thodes MILP sont trĂšs performantes mais lentes sur les moyennes et grosses instances.

  • Nous avons utilisĂ© des machines virtuelles Google Cloud C2 standard avec le solveur IBM CPLEX pour accĂ©lĂ©rer les rĂ©solutions.


🧠 Utiliser IBM CPLEX au lieu de PULP (optionnel)

Nos codes utilisent pulp.PULP_CBC_CMD() par défaut, mais vous pouvez activer CPLEX comme suit :

  1. Installer IBM CPLEX (gratuit pour usage académique) :

  2. Modifier la ligne suivante dans les fonctions MILP de nos fichiers :

solver = pulp.PULP_CBC_CMD(timeLimit=self.milp_time_limit, msg=0)

Remplacez-la par :

solver = pulp.CPLEX_CMD(timeLimit=self.milp_time_limit, msg=0)

📎 Cette ligne se trouve dans la mĂ©thode optimize_time_window_milp(...).


đŸ“« Contact

Pour toute question ou suggestion, vous pouvez nous contacter :


🏁 Licence

MIT License - Copyright (c) 2025 Amine ROSTANE

About

Winners of West Data Festival AI Optimisation Challenge (ESIEA x LUMINESS) đŸ„‡

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages