Comment planifier des vols en Python

Attribuez suffisamment d'avions tout en minimisant les coûts à l'aide de CVXPY

Motivation

Imaginez que vous êtes propriétaire d'une compagnie aérienne. Votre compagnie aérienne doit affecter ses avions basés à New York pour couvrir tous les vols réguliers à venir.

Il y a 10 vols et 8 séquences de vols. Chaque séquence de vols se compose de plusieurs vols.

Par exemple, une séquence de vols peut comprendre des vols de New York à Buffalo, de Buffalo à Chicago et de Chicago à New York.

Image par auteur

Chaque séquence de vol a un certain coût. Nous devons sélectionner un sous-ensemble de séquences de vol afin qu'il y ait au moins un avion pour chaque vol.

Il existe de nombreuses façons de sélectionner une combinaison de séquences de vol afin qu'il y ait un avion disponible pour chaque vol. Une combinaison possible est comme ceci :

Image par auteur

Une autre combinaison possible est comme ceci :

Image par auteur

Et beaucoup plus.

Quelle combinaison de séquences votre compagnie aérienne doit-elle choisir pour que la contrainte soit satisfaite et le coût minimisé ?

De nombreuses grandes compagnies aériennes sont confrontées à ce problème. American Airlines a estimé que son système basé sur la programmation mathématique permet d'économiser environ 20 millions de dollars par an.

Dans cet article, vous apprendrez à utiliser la programmation en nombres entiers et Python pour résoudre ce problème.

Qu'est-ce que la programmation en nombres entiers ?

La programmation en nombres entiers implique des problèmes avec des objectifs et des contraintes. Certaines ou toutes les variables sont limitées à des nombres entiers.

CVXPY est un outil Python qui fournit des interfaces à de nombreux solveurs de programmation en nombres entiers. Pour installer CXVPY, tapez :

pip install cvxpy

Obtenir des données

Commencez par télécharger les données depuis Google Drive :

Obtenez l'horaire, le coût et les heures de chaque séquence de vol.

Transformez tous les nombres positifs en 1 :

Paramètres d'entrée

Définissez les paramètres d'entrée :

Image par auteur

Variables de décision

Définir les variables de décision en utilisant cp.Variable:

Image par auteur

Contrainte

Il doit y avoir au moins un avion par vol. Par exemple, pour s'assurer qu'il y a au moins un avion pour le vol de New York → Buffalo, la séquence de vol 1, 4 ou 7 doit être choisie.

Pour s'assurer qu'il y a au moins un avion pour le vol New York → Cincinnati, la séquence de vol 2 ou 5 doit être choisie.

Ainsi pour le vol New York → Buffalo, on a la contrainte :

Image par auteur

En généralisant cette contrainte pour les 10 vols, nous avons :

Image par auteur

Objectif

Nous voulons choisir les séquences de vol qui minimisent le coût total.

Image par auteur

Résoudre le problème

Maintenant que nous avons des contraintes et un objectif, résolvons le problème !

13.0

[1. 1. 1. 0. 0. 0. 0. 0.]

Cela signifie que l'avion doit voler :

  • de New York → Buffalo → Chicago → New York
  • de New York → Cincinnati → Pittsburgh → New York
  • de New York → Chicago → Cincinnati → New York
  • Image par auteur

Ajoutons cette contrainte à notre problème et voyons ce qui se passe.

Contrainte sur le nombre total d'heures

Nous devons d'abord obtenir le tableau représentant le nombre d'heures pour chaque séquence de vol :

Image par auteur

Combinez la première contrainte avec la nouvelle contrainte :

Image par auteur

Résoudre le problème:

20

C'est parce que différentes séquences de vols sont choisies.

Image par auteur

Mais pourquoi les deuxième et troisième séquences de vols ne sont-elles pas choisies ? Si nous examinons de près le tableau représentant les heures, nous pouvons voir que le nombre total d'heures des 3 premiers vols dépasse 1700.

Image par auteur
Image par auteur

Cependant, le nombre total d'heures des première, cinquième et sixième séquences de vols est inférieur à 1700, ce qui satisfait la contrainte.

Image par auteur

Et voici la représentation visuelle des nouvelles séquences de vol choisies.

Image par auteur

Conclusion

Toutes nos félicitations! Vous venez d'apprendre à choisir des séquences de vols tout en minimisant le coût. J'espère que cet article vous motivera à résoudre des problèmes similaires en utilisant la programmation en nombres entiers et Python.

N'hésitez pas à forker et à jouer avec le code de cet article dans ce repo Github :

J'aime écrire sur les concepts de base de la science des données et jouer avec différents algorithmes et outils de science des données. Vous pouvez communiquer avec moi sur LinkedIn et Twitter .

Star ce repo si vous voulez vérifier les codes de tous les articles que j'ai écrits. Suivez-moi sur Medium pour rester informé de mes derniers articles sur la science des données comme ceux-ci :

Référence

Chen, D.-S., Batson, RG et Dang, Y. (2010). Programmation en nombres entiers appliquée : modélisation et solution . J. Wiley & Fils.

Suggested posts

Comment exécuter gratuitement les plugins ChatGPT avec Langchain

Comment exécuter gratuitement les plugins ChatGPT avec Langchain

Vous devez avoir entendu parler de tous les nouveaux plugins ChatGPT puissants comme le navigateur, l'interpréteur de code, etc. Mais il y a un problème, l'accès aux plugins est limité à une liste d'attente et donc beaucoup n'y ont pas accès.

Comment j'ai passé de Math à CS

Comment j'ai passé de Math à CS

Le processus d'admission de l'automne 2023 touche à sa fin et des reports/rejets se produisent. Félicitations si vous avez été accepté dans le programme de vos rêves à l'UW.

Related posts

La révolution du lieu de travail : les meilleurs experts discutent du travail hybride et à distance

La révolution du lieu de travail : les meilleurs experts discutent du travail hybride et à distance

Dans le paysage commercial en évolution rapide d'aujourd'hui, le concept de travail hybride et à distance a pris un élan sans précédent. Alors que les entreprises continuent de s'adapter à l'évolution des besoins et des attentes de leurs employés, des experts de divers domaines se sont réunis pour discuter des avantages, des défis et de l'avenir de cette façon de travailler transformatrice.

Pourquoi certains freelances simulent leur vie

Pourquoi certains freelances simulent leur vie

J'étais récemment sur Linkedin, le plus grand réseau social professionnel au monde, et j'ai trouvé des messages de designers indépendants que je suis et qui ont attiré mon attention. Ils ont tous posté des photos d'avions, sur la plage avec leurs ordinateurs portables, de piscines et de bureaux avec une vue imprenable.

Repenser les médias : les cinq vérités de McChesney et l'avenir des communications

Dans le monde hyper-connecté d'aujourd'hui, les systèmes médiatiques jouent un rôle central dans la formation de l'opinion publique et, par conséquent, dans la prise de décision démocratique. Dans son analyse approfondie de l'économie politique de la communication, le chercheur Robert McChesney remet en question la sagesse conventionnelle et présente ce qu'il appelle les « cinq vérités » sur les médias.

Plus de mots de passe - comment les clés d'accès remplaceront votre mot de passe

Plus de mots de passe - comment les clés d'accès remplaceront votre mot de passe

Pour éviter toute ambiguïté, les termes suivants seront utilisés ; Authentificateur ; Le téléphone mobile utilisé pour effectuer la connexion au site Web ; Le site Web ou l'application que l'utilisateur utilise pour effectuer la demande de connexion au service ; Le fournisseur fournissant le service donné, par exemple