traduction en francais

This commit is contained in:
Louis 2023-06-21 09:35:48 +02:00
parent ac75e0f5d8
commit 6f96b3091e

View File

@ -6,7 +6,7 @@
"id": "83c2b1e7-b401-4a15-adf0-d43cebf9ad81",
"metadata": {},
"source": [
"# **Algorithm project** # \n"
"# **Project Algorithmique avancée** # \n"
]
},
{
@ -15,7 +15,7 @@
"id": "0b4f92e5-ac40-4491-983d-890c4f0f6694",
"metadata": {},
"source": [
"## <u>Project context </u>\n"
"## <u>Contexte du projet </u>\n"
]
},
{
@ -24,7 +24,7 @@
"id": "5f483b31-1246-4f00-ae39-718ef92ce9eb",
"metadata": {},
"source": [
"ADEME has launched a call to promote new mobility solutions. CesiCDP, with its team of 4 people, is responding to this call by focusing on the management of delivery rounds. The aim is to minimize the total duration of the round, taking into account traffic and other constraints. Attractive financing is at stake to develop CesiCDP's business. Adding further constraints to the problem will make the study more realistic and more difficult to solve, but it will demonstrate the team's expertise."
"L'ADEME a lancé un appel pour promouvoir de nouvelles solutions de mobilité. CesiCDP, avec son équipe de 4 personnes, répond à cet appel en se concentrant sur la gestion des tournées de livraison. L'objectif est de minimiser la durée totale de la tournée en tenant compte des contraintes de trafic et autres. Un financement attractif est en jeu pour développer l'activité de CesiCDP. L'ajout de contraintes supplémentaires au problème rendra l'étude plus réaliste et plus difficile à résoudre, mais démontrera l'expertise de l'équipe."
]
},
{
@ -33,7 +33,7 @@
"id": "fc23daaf-9f25-4c5a-bf6c-300a7ed8d623",
"metadata": {},
"source": [
"Our aim is to develop an algorithm that will enable us to pass through all the delivery points in an optimized time."
"Notre objectif est de développer un algorithme qui nous permettra de passer par tous les points de livraison dans un temps optimisé."
]
},
{
@ -42,7 +42,7 @@
"id": "d633beb7-8f26-46d4-9cd9-1d0093e5b5c3",
"metadata": {},
"source": [
"## <u>Selected constraint</u>\n"
"## <u>Contraintes choisies </u>\n"
]
},
{
@ -51,8 +51,9 @@
"id": "35fc1c3c-d7a9-4423-a948-aa00ab51dbf4",
"metadata": {},
"source": [
"The constraint we chose was the following:\n",
"- To have several trucks available simultaneously to make deliveries."
"La contrainte que nous avons choisie est la suivante :\n",
"\n",
"- Avoir plusieurs camions disponibles simultanément pour effectuer les livraisons."
]
},
{
@ -61,7 +62,7 @@
"id": "ba356166-604a-4627-ac0f-93b76eb7a22d",
"metadata": {},
"source": [
"## <u>Formulation of the problem </u>"
"## <u>Formulation du problème </u>"
]
},
{
@ -70,11 +71,11 @@
"id": "c4d6888b-14e6-4745-880f-0a063ebf7476",
"metadata": {},
"source": [
"Consider a graph $G=(V,E)$, where $V$ is the set of cities (or delivery points) and $E$ is the set of roads between cities. There are $k$ trucks available to make deliveries.\n",
"Considérons un graphe G=(V,E), où V est l'ensemble des villes (ou points de livraison) et E est l'ensemble des routes entre les villes. Il y a k camions disponibles pour effectuer les livraisons.\n",
"\n",
"The problem is to find a route for each truck, so that all deliveries are made in the shortest possible time, both to and from the depot.\n",
"Le problème consiste à trouver un itinéraire pour chaque camion, de sorte que toutes les livraisons soient effectuées dans le temps le plus court possible, à la fois vers et depuis l'entrepôt.\n",
"\n",
"The problem we have with the above constraints is the VRP (Vehicle Routing Problem)."
"Le problème que nous avons avec les contraintes mentionnées ci-dessus est le VRP (Problème de Routage des Véhicules)."
]
},
{
@ -83,7 +84,7 @@
"id": "6d392f68",
"metadata": {},
"source": [
"## <u> Problem constraints </u>"
"## <u> Contraintes du problème </u>"
]
},
{
@ -92,13 +93,13 @@
"id": "f95dba22",
"metadata": {},
"source": [
"List of problem constraints:\n",
"Liste des contraintes du problème :\n",
"\n",
"- All customers must be served\n",
"- A customer can only be served by one vehicle.\n",
"- When leaving a customer, a vehicle can only go to one other customer.\n",
"- Tous les clients doivent être servis\n",
"- Un client ne peut être servi que par un seul véhicule.\n",
"- En quittant un client, un véhicule ne peut se rendre que chez un seul autre client.\n",
"\n",
"We will therefore assign each customer to a route served by a single vehicle."
"Nous allons donc affecter chaque client à une route desservie par un seul véhicule."
]
},
{
@ -107,7 +108,7 @@
"id": "c1ca5507",
"metadata": {},
"source": [
"## <u>Demonstrating the complexity of the vehicle routing problem (VRP) </u>"
"## <u>Démonstration de la complexité du problème de routage des véhicules (VRP) </u>"
]
},
{
@ -118,7 +119,7 @@
"source": [
"#### **Introduction**\n",
"\n",
"The Vehicle Routing Problem (VRP) is an extension of the Traveling Salesman Problem (TSP), and is known to be an NP-hard problem. We will demonstrate the complexity of VRP based on the Hamiltonian chain problem, which is known to be NP-complete."
"Le problème du routage des véhicules (VRP) est une extension du problème du voyageur de commerce (TSP), et est connu pour être un problème NP-hard. Nous démontrerons la complexité du VRP en nous basant sur le problème de la chaîne hamiltonienne, qui est connu pour être NP-complet."
]
},
{
@ -127,13 +128,13 @@
"id": "6a63522a",
"metadata": {},
"source": [
"#### **Preliminary definitions**\n",
"#### **Définitions préliminaires**\n",
"\n",
"- Hamiltonian chain problem**: the problem consists in determining whether a given undirected graph has a Hamiltonian chain, i.e. a path that visits each vertex exactly once.\n",
"- Problème de la chaîne hamiltonienne** : le problème consiste à déterminer si un graphe non orienté donné possède une chaîne hamiltonienne, c'est-à-dire un chemin qui visite chaque sommet exactement une fois.\n",
"\n",
"- Traveling Salesman Problem (TSP)**: the problem consists in finding the shortest possible circuit that visits each city in a given set of cities and returns to the original city.\n",
"- Problème du voyageur de commerce (TSP)** : le problème consiste à trouver le circuit le plus court possible qui visite chaque ville d'un ensemble donné de villes et revient à la ville d'origine.\n",
"\n",
"- Vehicle Routing Problem (VRP)**: the problem consists in delivering a series of customers with several vehicles while minimizing the total cost, such as delivery time or distance traveled."
"- Vehicle Routing Problem (VRP)** : le problème consiste à livrer une série de clients avec plusieurs véhicules tout en minimisant le coût total, tel que le temps de livraison ou la distance parcourue."
]
},
{
@ -142,9 +143,9 @@
"id": "589a1874",
"metadata": {},
"source": [
"#### **Proof of the complexity of the TSP**.\n",
"#### **Preuve de la complexité du TSP**.\n",
"\n",
"The TSP is an extension of the Hamiltonian chain problem. In fact, a special case of the TSP is the Hamiltonian chain problem, in which all edges have the same weight (or cost). In this case, finding the shortest circuit in the TSP is equivalent to finding a Hamiltonian chain in the graph. Since the Hamiltonian chain problem is NP-complete, the TSP must be at least as difficult, so the TSP is NP-complete."
"Le TSP est une extension du problème de la chaîne hamiltonienne. En fait, un cas particulier du TSP est le problème de la chaîne hamiltonienne, dans lequel toutes les arêtes ont le même poids (ou coût). Dans ce cas, trouver le circuit le plus court dans le TSP est équivalent à trouver une chaîne hamiltonienne dans le graphe. Comme le problème de la chaîne hamiltonienne est NP-complet, le TSP doit être au moins aussi difficile, et le TSP est donc NP-complet."
]
},
{
@ -153,11 +154,11 @@
"id": "92658e81",
"metadata": {},
"source": [
"#### **Proof of the complexity of the VRP**.\n",
"#### **Preuve de la complexité du VRP**.\n",
"\n",
"The VRP is an extension of the TSP. In fact, a special case of the VRP is the TSP where there is only one vehicle available to make deliveries. In this case, finding the solution to the VRP is the same as finding the solution to the TSP.\n",
"Le VRP est une extension du TSP. En fait, un cas particulier du VRP est le TSP où il n'y a qu'un seul véhicule disponible pour effectuer les livraisons. Dans ce cas, trouver la solution du VRP revient à trouver la solution du TSP.\n",
"\n",
"Since the TSP is NP-complete, the VRP must be at least as difficult, so the VRP is NP-difficult. Furthermore, VRP introduces additional constraints, such as multiple vehicles and potentially vehicle capacities and time windows, making it even more complex."
"Puisque le TSP est NP-complet, le VRP doit être au moins aussi difficile, donc le VRP est NP-difficile. En outre, le VRP introduit des contraintes supplémentaires, telles que des véhicules multiples et potentiellement des capacités de véhicules et des fenêtres temporelles, ce qui le rend encore plus complexe."
]
},
{
@ -168,7 +169,7 @@
"source": [
"#### **Conclusion**\n",
"\n",
"In conclusion, we have shown that VRP is an NP-hard problem by reducing it to the NP-complete TSP problem, which in turn can be reduced to the NP-complete Hamiltonian chain problem. This demonstration highlights the difficulty of solving the VRP, particularly for large instances. In practice, (meta)heuristic and approximate methods are often used to solve the VRP, as we shall see later."
"En conclusion, nous avons montré que le VRP est un problème NP-hard en le réduisant au problème NP-complet TSP, qui à son tour peut être réduit au problème NP-complet de la chaîne hamiltonienne. Cette démonstration met en évidence la difficulté de résoudre le VRP, en particulier pour les instances de grande taille. En pratique, des méthodes (méta)heuristiques et approximatives sont souvent utilisées pour résoudre le VRP, comme nous le verrons plus loin."
]
},
{
@ -177,7 +178,7 @@
"id": "16b3b8a7-4658-4509-a511-7a395654e6f1",
"metadata": {},
"source": [
"## <u> Mathematical modeling </u>"
"## <u>Modélisation mathématique </u>"
]
},
{
@ -186,7 +187,7 @@
"id": "b54bfa8c",
"metadata": {},
"source": [
"#### **Set and parameters**"
"#### **Ensemble et paramètres**"
]
},
{
@ -195,12 +196,12 @@
"id": "637eb295",
"metadata": {},
"source": [
"$V=\\{0,1,2,...,n_v\\}$ : the set of cities, where 0 is the base (or depot), $1,2,...,n_v$ are the delivery cities. $n_v+1$ will be the depot for the return. <br>\n",
"$K=\\{1,2,...,k\\}$ : all trucks. <br>\n",
"$E$ represents the arcs between two customers $i,j \\in V$ <br>\n",
"$G=(V,E)$ : the graph with V as vertices (cities) and E as edges <br>\n",
"$d_{ij}$ : distance (or travel time) from city i to city $j$ (travel cost) <br>\n",
"$M$ : a great constant."
"$V=\\{0,1,2,...,n_v\\}$ : l'ensemble des villes, où 0 est la base (ou le dépôt), $1,2,...,n_v$ sont les villes de livraison. $n_v+1$ sera le dépôt pour le retour. <br>\n",
"$K=\\{1,2,...,k\\}$ : tous les camions. <br>\n",
"$E$ représente les arcs entre deux clients $i,j \\in V$ <br>\n",
"$G=(V,E)$ : le graphe avec V comme sommets (villes) et E comme arêtes <br>\n",
"$d_{ij}$ : distance (ou temps de déplacement) entre la ville i et la ville $j$ (coût du déplacement) <br>\n",
"$M$ : une grande constante."
]
},
{
@ -209,7 +210,7 @@
"id": "1219e4f2",
"metadata": {},
"source": [
"#### **Decision variables**"
"#### **Variables de décision**"
]
},
{
@ -227,7 +228,7 @@
"id": "e635cf14",
"metadata": {},
"source": [
"#### **Objective function**"
"#### **Fonction objective**"
]
},
{
@ -245,17 +246,17 @@
"id": "a1465000",
"metadata": {},
"source": [
"#### **VRP constraints**\n",
"#### **Contraintes VRP**\n",
"\n",
"- Each city is visited once and only once:\n",
"- Chaque ville est visitée une fois et une seule :\n",
"$$\\sum_{k \\in K} \\sum_{j \\in V} x_{ijk} = 1, \\forall i \\in V, i \\ne 0$$\n",
"\n",
"- If a truck visits a city, it must leave it:\n",
"- Si un camion visite une ville, il doit la quitter :\n",
"$$\\sum_{i \\in V} x_{ijk} = \\sum_{j \\in V} x_{ijk}, \\forall k \\in K, \\forall i \\in V, \\forall j \\in V $$\n",
"<br> \n",
"\n",
"- Sub-tour elimination constraint (to ensure that each truck completes a full tour) :\n",
"$$\\sum_{i \\in S, j \\notin S} x_{ijk} \\geq 1, \\forall k \\in K, \\forall \\; subset \\; S \\; de \\; V, 0 \\in S, S \\ne V $$"
"- Contrainte d'élimination des tournées partielles (pour garantir que chaque camion effectue une tournée complète) :\n",
"$$\\sum_{i \\in S, j \\notin S} x_{ijk} \\geq 1, \\forall k \\in K, \\forall \\; sous-ensemble \\; S \\; de \\; V, 0 \\in S, S \\ne V $$"
]
},
{
@ -264,27 +265,27 @@
"id": "0833096d",
"metadata": {},
"source": [
"#### **VRPTW constraints**\n",
"#### **Contraintes VRPTW**\n",
"\n",
"- Each city is visited once and only once:\n",
"- Chaque ville est visitée une et une seule fois :\n",
"$$\\sum_{k \\in K} \\sum_{j \\in V}x_{ijk} = 1, \\forall i \\in V, i \\ne 0 $$\n",
"\n",
"- If a truck visits a city, it must leave it:\n",
"- Si un camion visite une ville, il doit la quitter :\n",
"∑𝑖∈𝑉𝑥𝑖𝑗𝑘=∑𝑗∈𝑉𝑥𝑖𝑗𝑘, ∀𝑘∈𝐾, ∀𝑖∈𝑉, ∀𝑗∈𝑉\n",
"\n",
"- Sub-tour elimination constraint (to ensure that each truck completes a full tour):\n",
"- Contrainte d'élimination des sous-tours (pour s'assurer que chaque camion effectue un tour complet) :\n",
"∑𝑖∈𝑆,𝑗𝑆𝑥𝑖𝑗𝑘≥1, ∀𝑘∈𝐾, ∀𝑠𝑢𝑏𝑠𝑒𝑡𝑆𝑑𝑒𝑉, 0∈𝑆, 𝑆≠𝑉\n",
"\n",
"- Each truck arrives within the time window of each city:\n",
"- Chaque camion arrive dans la fenêtre temporelle de chaque ville :\n",
"a_ik + t_ij ≤ a_jk + M(1 - x_ijk), ∀k∈K, ∀(i, j)∈A, ∀a_ik ∈ [e_i, l_i]\n",
"\n",
"- Each truck leaves the city after the service time:\n",
"- Chaque camion quitte la ville après le temps de service :\n",
"a_ik + s_i = d_ik, ∀k∈K, ∀i∈V, ∀a_ik ∈ [e_i, l_i]\n",
"\n",
"Note:\n",
"Here, a_ik is the arrival time of vehicle k at node i, t_ij is the travel time from node i to node j, M is a large positive number, x_ijk is a binary variable that is 1 if vehicle k travels from node i to node j and 0 otherwise, e_i is the earliest time that a service can start at node i, l_i is the latest time that a service can start at node i, and s_i is the service time at node i.\n",
"Remarque :\n",
"Ici, a_ik est l'heure d'arrivée du véhicule k au nœud i, t_ij est le temps de trajet du nœud i au nœud j, M est un grand nombre positif, x_ijk est une variable binaire qui vaut 1 si le véhicule k se déplace du nœud i au nœud j et 0 sinon, e_i est l'heure à laquelle un service peut commencer au plus tôt au nœud i, l_i est l'heure à laquelle un service peut commencer au plus tard au nœud i, et s_i est le temps de service au nœud i.\n",
"\n",
"These constraints take into account not just the need to visit each city once, but also the requirement to arrive and depart within specified time windows, which makes the problem more complex than the standard VRP."
"Ces contraintes tiennent compte non seulement de la nécessité de visiter chaque ville une fois, mais aussi de l'obligation d'arriver et de partir dans des fenêtres de temps spécifiques, ce qui rend le problème plus complexe que le VRP standard."
]
},
{
@ -302,13 +303,13 @@
"id": "5160fa32",
"metadata": {},
"source": [
"As part of our project, we plan to adopt three different heuristic algorithms to solve our inter-city route optimization problem. Our aim is to compare them in order to determine which one will provide us with the route closest to the optimum. The three algorithms we will be implementing are as follows:\n",
"Dans le cadre de notre projet, nous avons envisagé d'adopter trois algorithmes heuristiques distincts pour résoudre notre problème d'optimisation de trajet entre les villes. Notre objectif est de les comparer afin de déterminer celui qui nous fournira l'itinéraire le plus proche de l'optimal. Les trois algorithmes que nous allons mettre en œuvre sont les suivants :\n",
"\n",
"- Ant colony algorithm\n",
"- Simulated annealing algorithm\n",
"- The particle swarm algorithm\n",
"- L'algorithme des colonies de fourmis\n",
"- L'algorithme du recuit simulé\n",
"- L'algorithme des essaims particulaires\n",
"\n",
"We will then examine their implementation and operation to evaluate their performance."
"Nous examinerons ensuite leur mise en œuvre et leur fonctionnement pour évaluer leur performance."
]
},
{
@ -317,7 +318,7 @@
"id": "45133ac2",
"metadata": {},
"source": [
"### Ant colony algorithm"
"### Algorithme par colonies de fourmis"
]
},
{
@ -326,7 +327,7 @@
"id": "3e2ce1cf",
"metadata": {},
"source": [
"The ant colony algorithm is an approach inspired by the behavior of ants in the search for optimal paths. Using heuristics and pheromones, this algorithm enables optimization problems to be solved efficiently."
"L'algorithme par colonies de fourmis est une approche inspirée du comportement des fourmis dans la recherche de chemins optimaux. En utilisant des heuristiques et des phéromones, cet algorithme permet de résoudre des problèmes d'optimisation de manière efficace."
]
},
{
@ -489,7 +490,7 @@
"id": "82c80021",
"metadata": {},
"source": [
"### Simulated annealing algorithm"
"### Algorithm du recuit simulé"
]
},
{
@ -498,7 +499,7 @@
"id": "c93a893d",
"metadata": {},
"source": [
"The simulated annealing algorithm is an optimization technique inspired by the annealing process used in metallurgy. It allows probabilistic exploration of the solution space, occasionally accepting moves that may initially seem less favorable. This approach makes it possible to find global solutions and avoid getting stuck in local optima."
"L'algorithme du recuit simulé est une technique d'optimisation inspirée du processus de recuit utilisé dans la métallurgie. Il permet d'explorer de manière probabiliste l'espace des solutions en acceptant occasionnellement des mouvements qui peuvent initialement sembler moins favorables. Cette approche permet de trouver des solutions globales et d'éviter de rester bloqué dans des optima locaux."
]
},
{
@ -654,7 +655,7 @@
"id": "4690adfe",
"metadata": {},
"source": [
"### Particle swarm algorithm"
"### Algorithme par essaim de particules"
]
},
{
@ -663,7 +664,7 @@
"id": "a9539159",
"metadata": {},
"source": [
"The particle swarm algorithm is an optimization method based on the collective behavior of animal swarms, such as birds or fish. It uses particles that move through the search space and communicate with each other to find optimal solutions. This algorithm is effective in exploring the solution space and finding local and global optima."
"L'algorithme des essaims particulaires est une méthode d'optimisation basée sur le comportement collectif des essaims d'animaux, tels que les oiseaux ou les poissons. Il utilise des particules qui se déplacent dans l'espace de recherche et communiquent entre elles pour trouver des solutions optimales. Cet algorithme est efficace pour explorer l'espace des solutions et trouver des optima locaux et globaux."
]
},
{
@ -996,6 +997,15 @@
"plt.show()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "d437ed79",
"metadata": {},
"source": [
"## <u>Experimental design</u>"
]
},
{
"attachments": {},
"cell_type": "markdown",