diff --git a/Projet_algo.ipynb b/Projet_algo.ipynb
index ec4dffc..bd84c61 100644
--- a/Projet_algo.ipynb
+++ b/Projet_algo.ipynb
@@ -148,8 +148,7 @@
"id": "a6d398fa",
"metadata": {},
"source": [
- "$x_{ijk}$ : variable binaire qui vaut 1 si le camion $k$ se déplace de la ville $i$ à la ville $j$, et 0 sinon.
\n",
- "$t_{ik}$ : le moment où le camion $k$ arrive à la ville $i$."
+ "$x_{ijk}$ : variable binaire qui vaut 1 si le camion $k$ se déplace de la ville $i$ à la ville $j$, et 0 sinon."
]
},
{
@@ -167,7 +166,7 @@
"id": "56652859",
"metadata": {},
"source": [
- "Minimiser $Z=max_{k∈K}t_{0k}$"
+ "$$\\min \\sum_{k∈K} \\sum_{i∈V} \\sum_{j∈V} d_{ij} x_{ijk} $$"
]
},
{
@@ -176,29 +175,17 @@
"id": "a1465000",
"metadata": {},
"source": [
- "### Contraintes et modèle mathématique du VRP:\n",
+ "### Contraintes du VRP:\n",
"\n",
- "L'objectif est de minimiser la distance totale parcourue :\n",
+ "- Chaque ville est visitée une fois 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",
- "$$\\min \\sum_{k∈K} \\sum_{i∈V} \\sum_{j∈V} d_{ij} x_{ijk} $$\n",
+ "- Si un camion visite une ville, il doit en sortir :\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",
+ "
\n",
"\n",
- "Chaque ville est visitée une fois et une seule fois : $$\\sum_{k∈K} \\sum_{j∈V} x_{ijk} = 1, ∀i \\in V∖ \\{0\\}$$\n",
- "\n",
- "Si un camion se déplace de la ville ii à la ville $j$, alors le moment d'arrivée à la ville $j$ doit être plus grand que le moment d'arrivée à la ville $i$ plus le temps de trajet : $$t_{ik}+d_{ij} \\leq t_{jk}+M(1−x_{ijk}),∀i,j \\in V,i \\ne j,∀k \\in K$$\n",
- "\n",
- "Les contraintes de flux pour garantir que si un camion entre dans une ville, il doit également en sortir :\n",
- "$$i \\in V,i \\ne j∑xijk=i∈V,i \\ne j∑xjik=yjk,∀j∈V,∀k∈K$$\n",
- "\n",
- "Les $t_{ik}$ doivent être continues :\n",
- "\n",
- "$t_{ik}\\le 0 $\n",
- "\n",
- "\n",
- "\n",
- "\n",
- "### Dans le cas ou l'on veut rajouter les contraintes de fenêtres de livraison (Time Windows)\n",
- "Les fenêtres de temps de livraison doivent être respectées : $$a_i \\leq t_{ik} \\leq b_i, ∀i \\in V∖ \\{0 \\},∀k \\in K$$\n",
- "\n"
+ "- Contrainte d'élimination des sous-tournées (afin de 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 $$"
]
},
{
@@ -207,7 +194,30 @@
"id": "7670fdf4-884c-4352-83fa-eed0c8b50074",
"metadata": {},
"source": [
- "# Initialisation de la matrice"
+ "# Algorithme de résolution"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "45133ac2",
+ "metadata": {},
+ "source": [
+ "## Import des bibliothèques nécessaires"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "794657d7",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sklearn.cluster import KMeans\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "import random, time, math\n",
+ "from tests.clustering import split_tour_across_clusters"
]
},
{