a3-algorithmique-avancee/.ipynb_checkpoints/Projet_algo-checkpoint.ipynb
2023-06-05 14:22:44 +02:00

199 lines
53 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "83c2b1e7-b401-4a15-adf0-d43cebf9ad81",
"metadata": {},
"source": [
"# Projet algorithme # \n"
]
},
{
"cell_type": "markdown",
"id": "0b4f92e5-ac40-4491-983d-890c4f0f6694",
"metadata": {},
"source": [
"## Contexte du projet: \n"
]
},
{
"cell_type": "markdown",
"id": "5f483b31-1246-4f00-ae39-718ef92ce9eb",
"metadata": {},
"source": [
"L'ADEME a lancé un appel à manifestation d'intérêt pour développer des solutions de mobilité adaptées à différents territoires. CesiCDP, en collaboration avec des partenaires, s'est spécialisé dans la Mobilité Multimodale Intelligente. Dans le cadre de cet appel, l'équipe de CesiCDP travaille sur la gestion de tournées de livraison pour minimiser les trajets et optimiser l'efficacité. L'objectif est d'obtenir de nouveaux marchés et des financements pour poursuivre le développement de l'entreprise. Des contraintes supplémentaires seront ajoutées pour rendre le problème plus réaliste et intéressant pour l'ADEME."
]
},
{
"cell_type": "markdown",
"id": "fc23daaf-9f25-4c5a-bf6c-300a7ed8d623",
"metadata": {},
"source": [
"Notre but est de réaliser un algorithme permettant de passer par tous les points de livraisons avec un temps optimisé."
]
},
{
"cell_type": "markdown",
"id": "ba356166-604a-4627-ac0f-93b76eb7a22d",
"metadata": {},
"source": [
"## Interprétation du problème"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "c4d6888b-14e6-4745-880f-0a063ebf7476",
"metadata": {},
"source": [
"Notre situation peut être représentée par un graphe, où chaque ville est un sommet du graphe. L'objectif est de visiter chaque ville et revenir au point de départ en empruntant le chemin le plus rapide. Chaque liaison entre les villes a un poids qui correspond au temps de trajet entre une ville A et une ville B.\r\n",
"\r\n",
"Dans ce cas, notre problème peut être assimilé à une variante dynamique du problème du voyageur de commerce, avec un graphe incomplet. Nous cherchons le chemin le plus court en passant par toutes les villes, en tenant compte des variations de poids des liaisons au fil du temps. Il est possible de passer plusieurs fois par la même ville si cela permet d'obtenir le chemin le plus rapide.\n",
"\n",
"\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "3346ae96-1c36-4e9d-9480-3ab4657c7d68",
"metadata": {},
"source": [
"## Objectifs\n"
]
},
{
"cell_type": "markdown",
"id": "50a3e56e-3bdc-4f2c-a811-8433ffeb2a34",
"metadata": {},
"source": [
"L'objectif de notre algorithme est de calculer et de fournir le meilleur itinéraire possible et le plus optimisé en terme de temps.\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "dbd49849-988e-4915-8e28-e00085f4b97e",
"metadata": {},
"source": [
"Minimiser les temps de trajets, en optimisant les itinéraires."
]
},
{
"cell_type": "markdown",
"id": "d633beb7-8f26-46d4-9cd9-1d0093e5b5c3",
"metadata": {},
"source": [
"## Contrainte :\n"
]
},
{
"cell_type": "markdown",
"id": "35fc1c3c-d7a9-4423-a948-aa00ab51dbf4",
"metadata": {},
"source": [
"Contrainte de temps entre les sommets. \n",
"- Il faut passer par tout les sommets au moins une fois.\n",
"- On peut passer par plusieurs sommet si le temps de trajet est plus court\n",
"- Les temps de parcours d'une arête peut varié au cours du temps en fonction de l'heure.\n",
"- Faire un cycle (revenir au point de départ)\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "337db031-2e38-4b6d-9d57-74e277d7f033",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[0 1 0 0 0 1 0 0 1 0]\n",
" [1 0 0 0 0 1 0 1 1 0]\n",
" [0 0 0 0 0 0 1 1 0 1]\n",
" [0 0 0 0 0 0 1 1 0 0]\n",
" [0 0 0 0 0 1 0 1 0 0]\n",
" [1 1 0 0 1 0 1 1 0 1]\n",
" [0 0 1 1 0 1 0 0 1 0]\n",
" [0 1 1 1 1 1 0 0 1 0]\n",
" [1 1 0 0 0 0 1 1 0 0]\n",
" [0 0 1 0 0 1 0 0 0 0]]\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAHzCAYAAACe1o1DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACLj0lEQVR4nOzdd1RU19oG8GcKvShF7AR1sCEqoDL2IGBDsXeNPcZoCokxxhSNidHYTWJiTDR2jVFRsYsFe2/ECqJiV0Dpbcr3h5f5JHSY4Ux5fmtlJc6c2eflXpWHffZ+t0itVqtBRERERFRKYqELICIiIiLDxkBJRERERGXCQElEREREZcJASURERERlwkBJRERERGXCQElEREREZcJASURERERlwkBJRERERGXCQElEREREZcJASURERERlwkBJRERERGXCQElEREREZcJASURERERlwkBJRERERGXCQElEREREZcJASURERERlwkBJRERERGXCQElEREREZcJASURERERlwkBJRERERGXCQElEREREZcJASURERERlwkBJRERERGXCQElEREREZcJASURERERlwkBJRERERGXCQElEREREZcJASURERERlwkBJRERERGXCQElEREREZcJASURERERlwkBJRERERGXCQElEREREZcJASURERERlwkBJRERERGXCQElEREREZcJASURERERlIhW6ACIiIkORmqnAvfhUZClUMJeK4eZkAxsLfisl4p8CIiKiQkQ9S8a6M7E4fOs5YhPSoH7jPREAV0dr+NVzwRBfV7hXthOqTCJBidRqtbroy4iIiEzLg4Q0TA2NxLHoOEjEIihVBX+7zHm/rcwZP/TyRE1H63KslEh4DJRERET/sfFcLKbtuAaFSl1okPwviVgEqViEb4M9MLC5qw4rJNIvDJRERERv+OVwFObtv13mcSZ1rIuJfu5aqIhI/3GXNxER0f9sPBerlTAJAPP238bf52K1MhaRvuMMJREREV6vmQxYGIFMhSrPe6qsdCSd2YrMx7eQ9eQ2VBkpcOr6MWwbBxQ6poVUjPCQ9lxTSUaPM5REREQApoZGQlHAeklVWhIST2xAdvwDmLnUKvaYCpUaU0MjtVUikd5i2yAiIjJ5Uc+ScSw6rsD3JbaOqDFxDSS2Dsh8EoWnq0KKNa5Spcax6DhEP0+GzIUthch4cYaS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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import random\n",
"import networkx as nx\n",
"import matplotlib.pyplot as plt\n",
"\n",
"def generate_incomplete_graph(num_nodes):\n",
" # Créer un graphe vide\n",
" G = nx.Graph()\n",
"\n",
" # Ajouter les sommets au graphe\n",
" G.add_nodes_from(range(1, num_nodes + 1))\n",
"\n",
" # Ajouter au moins deux arêtes par sommet\n",
" for node in G.nodes():\n",
" connected_nodes = sorted(set(G.nodes()) - {node}) # Exclure le sommet lui-même et trier les nœuds\n",
" random_nodes = random.sample(connected_nodes, 2)\n",
" G.add_edges_from([(node, random_nodes[0]), (node, random_nodes[1])])\n",
"\n",
" # Ajouter des arêtes supplémentaires de manière aléatoire\n",
" while not nx.is_connected(G):\n",
" node1, node2 = random.sample(G.nodes(), 2)\n",
" if not G.has_edge(node1, node2):\n",
" G.add_edge(node1, node2)\n",
"\n",
" return G\n",
"\n",
"# Générer un graphe incomplet avec 10 sommets\n",
"graph = generate_incomplete_graph(10)\n",
"A = nx.adjacency_matrix(graph)\n",
"\n",
"print(A.todense())\n",
"\n",
"# Dessiner le graphe\n",
"nx.draw(graph, with_labels=True)\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}