{"id":1,"date":"2020-08-10T23:31:57","date_gmt":"2020-08-10T21:31:57","guid":{"rendered":"http:\/\/maths-code.fr\/cours\/?p=1"},"modified":"2023-01-18T23:20:46","modified_gmt":"2023-01-18T22:20:46","slug":"le_voyageur","status":"publish","type":"post","link":"https:\/\/maths-code.fr\/cours\/2020\/08\/10\/le_voyageur\/","title":{"rendered":"Le voyageur de commerce"},"content":{"rendered":"\n<p>Le probl\u00e8me du voyageur de commerce \u2013 <em>Traveling Salesman Problem<\/em> TSP -, \u00e9tudi\u00e9 depuis le 19e si\u00e8cle, est l\u2019un des plus connus dans le domaine de la recherche op\u00e9rationnelle. William Rowan Hamilton a pos\u00e9 pour la premi\u00e8re fois ce probl\u00e8me sous forme de jeu d\u00e8s 1859.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u00ab Un voyageur de commerce doit visiter une et une seule fois un nombre fini de villes et revenir \u00e0 son point d\u2019origine. Trouvez l\u2019ordre de visite des villes qui minimise la distance totale parcourue par le voyageur \u00bb.<\/p>\n<\/blockquote>\n\n\n<p>Ce probl\u00e8me d\u2019optimisation combinatoire appartient \u00e0 la classe des probl\u00e8mes NP-Complets.<\/p>\n<p>Les domaines d\u2019application sont nombreux : probl\u00e8mes de logistique, de transport aussi bien de marchandises que de personnes, et plus largement toutes sortes de probl\u00e8mes d\u2019ordonnancement. Certains probl\u00e8mes rencontr\u00e9s dans l\u2019industrie se mod\u00e9lisent sous la forme d\u2019un probl\u00e8me de voyageur de commerce, comme l\u2019optimisation de trajectoires de machines outils : comment percer plusieurs points sur une carte \u00e9lectronique le plus vite possible ?<\/p>\n<p>Pour un ensemble de $<code>n<\/code>$ points, il existe au total $<code>n!<\/code>$ chemins possibles. Le point de d\u00e9part ne changeant pas la longueur du chemin, on peut choisir celui-ci de fa\u00e7on arbitraire, on a ainsi $<code>(n-1)!<\/code>$ chemins diff\u00e9rents. Enfin, chaque chemin pouvant \u00eatre parcouru dans deux sens et les deux possibilit\u00e9s ayant la m\u00eame longueur, on peut diviser ce nombre par deux. Par exemple, si on nomme les points, $<code>a, b, c, d<code>$, les chemins $<\/code>abcd, bcda, cdab, dabc, adcb, dcba, cbad, badc<\/code>$ ont tous la m\u00eame longueur, seul le point de d\u00e9part et le sens de parcours change. On a donc $<code>\\frac{1}{2}(n-1)<\/code>$ chemins candidats \u00e0 consid\u00e9rer. \\ Par exemple, pour $<code>71<\/code>$ villes, le nombre de chemins candidats est sup\u00e9rieur \u00e0 $<code>5 \u00d7\u202f10^{80}<\/code>$ qui est environ le nombre d&rsquo;atomes dans l&rsquo;univers connu. (<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Probl\u00e8me_du_voyageur_de_commerce\"><em>Probl\u00e8me du voyageur de commerce\u00a0<\/em><\/a><em>&#8211;<\/em><a href=\"https:\/\/fr.wikipedia.org\/wiki\/Probl\u00e8me_du_voyageur_de_commerce\"><em><a href=\"https:\/\/fr.wikipedia.org\/wiki\/Probl\u00e8me_du_voyageur_de_commerce\"> wikipedia <\/a><\/em><\/a>).<\/p>\n<h4>Heuristique gloutonne<\/h4>\n<p>L&rsquo;objectif de ce TP (voir le <a href=\"https:\/\/maths-code.fr\/cours\/algorithmes-gloutons\/\">cours algorithme glouton<\/a> pour l&rsquo;\u00e9nonc\u00e9 adapt\u00e9) est de r\u00e9aliser un algorithme glouton pour r\u00e9soudre le TSP.<\/p>\n<p>Pour cela vous avez \u00e0 votre disposition :<\/p>\n<ul>\n<li>\n<p>un jeu de donn\u00e9es <a href=\"http:\/\/maths-code.fr\/NSI\/1ere\/algorithmes-gloutons\/voyageur\/exemple.txt\">exemple.txt<\/a> contenant les coordonn\u00e9es de diff\u00e9rentes villes \u00e0 raison d&rsquo;une par ligne sous la forme <code>nom_de_la_ville latitude longitude<\/code>, vous pouvez bien sur l&rsquo;\u00e9tendre ou en g\u00e9n\u00e9rer un nouveau avec vos propres villes. Par exemple;<code>Annecy  6,082499981 45,8782196 Auxerre 3,537309885  47,76720047 Bastia  9,434300423 42,66175842<\/code><\/p>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>Un fichier <a href=\"http:\/\/maths-code.fr\/NSI\/1ere\/algorithmes-gloutons\/voyageur\/TSP_biblio.py\">TSP_biblio.py<\/a> contenant un ensemble de fonctions permettant la lecture des donn\u00e9es et la visualisation d&rsquo;un tour r\u00e9alis\u00e9 par le voyageur (ici pour le moment dans l&rsquo;ordre d&rsquo;apparition).<\/p>\n<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Le probl\u00e8me du voyageur de commerce \u2013 Traveling Salesman Problem TSP -, \u00e9tudi\u00e9 depuis le 19e si\u00e8cle, est l\u2019un des plus connus dans le domaine de la recherche op\u00e9rationnelle. William Rowan Hamilton a pos\u00e9 pour la premi\u00e8re fois ce probl\u00e8me sous forme de jeu d\u00e8s 1859. \u00ab Un voyageur de commerce doit visiter une et une seule fois un nombre fini de villes et revenir \u00e0 son point d\u2019origine. Trouvez l\u2019ordre de visite des villes qui minimise la distance totale parcourue par le voyageur \u00bb. Ce probl\u00e8me d\u2019optimisation combinatoire appartient \u00e0 la classe des probl\u00e8mes NP-Complets. Les domaines d\u2019application sont nombreux : probl\u00e8mes de logistique, de transport aussi bien de marchandises que de personnes, et plus largement toutes sortes de probl\u00e8mes d\u2019ordonnancement. Certains probl\u00e8mes rencontr\u00e9s dans l\u2019industrie se mod\u00e9lisent sous la forme d\u2019un probl\u00e8me de voyageur de commerce, comme l\u2019optimisation de trajectoires de machines outils : comment percer plusieurs points sur une carte \u00e9lectronique le plus vite possible ? Pour un ensemble de $n$ points, il existe au total $n!$ chemins possibles. Le point de d\u00e9part ne changeant pas la longueur du chemin, on peut choisir celui-ci de fa\u00e7on arbitraire, on a ainsi $(n-1)!$ chemins diff\u00e9rents. Enfin, chaque chemin pouvant \u00eatre parcouru dans deux sens et les deux possibilit\u00e9s ayant la m\u00eame longueur, on peut diviser ce nombre par deux. Par exemple, si on nomme les points, $a, b, c, d$, les chemins $abcd, bcda, cdab, dabc, adcb, dcba, cbad, badc$ ont tous la m\u00eame longueur, seul le point de d\u00e9part et le sens de parcours change. On a donc $\\frac{1}{2}(n-1)$ chemins candidats \u00e0 consid\u00e9rer. \\ Par exemple, pour $71$ villes, le nombre de chemins candidats est sup\u00e9rieur \u00e0 $5 \u00d7\u202f10^{80}$ qui est environ le nombre d&rsquo;atomes dans l&rsquo;univers connu. (Probl\u00e8me du voyageur de commerce\u00a0&#8211; wikipedia ). Heuristique gloutonne L&rsquo;objectif de ce TP (voir le cours algorithme glouton pour l&rsquo;\u00e9nonc\u00e9 adapt\u00e9) est de r\u00e9aliser un algorithme glouton pour r\u00e9soudre le TSP. Pour cela vous avez \u00e0 votre disposition : un jeu de donn\u00e9es exemple.txt contenant les coordonn\u00e9es de diff\u00e9rentes villes \u00e0 raison d&rsquo;une par ligne sous la forme nom_de_la_ville latitude longitude, vous pouvez bien sur l&rsquo;\u00e9tendre ou en g\u00e9n\u00e9rer un nouveau avec vos propres villes. Par exemple;Annecy 6,082499981 45,8782196 Auxerre 3,537309885 47,76720047 Bastia 9,434300423 42,66175842 Un fichier TSP_biblio.py contenant un ensemble de fonctions permettant la lecture des donn\u00e9es et la visualisation d&rsquo;un tour r\u00e9alis\u00e9 par le voyageur (ici pour le moment dans l&rsquo;ordre d&rsquo;apparition).<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-1","post","type-post","status-publish","format-standard","hentry","category-non-classe"],"acf":[],"_links":{"self":[{"href":"https:\/\/maths-code.fr\/cours\/wp-json\/wp\/v2\/posts\/1","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maths-code.fr\/cours\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maths-code.fr\/cours\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maths-code.fr\/cours\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maths-code.fr\/cours\/wp-json\/wp\/v2\/comments?post=1"}],"version-history":[{"count":17,"href":"https:\/\/maths-code.fr\/cours\/wp-json\/wp\/v2\/posts\/1\/revisions"}],"predecessor-version":[{"id":2687,"href":"https:\/\/maths-code.fr\/cours\/wp-json\/wp\/v2\/posts\/1\/revisions\/2687"}],"wp:attachment":[{"href":"https:\/\/maths-code.fr\/cours\/wp-json\/wp\/v2\/media?parent=1"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maths-code.fr\/cours\/wp-json\/wp\/v2\/categories?post=1"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maths-code.fr\/cours\/wp-json\/wp\/v2\/tags?post=1"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}