Coding Challenge #35.5: TSP with Genetic Algorithm and Crossover
In Part 1 of this multi-part coding challenge, I introduce the classic computer science problem of the Traveling Salesperson (TSP) and discuss the pitfalls with a brute force solution. In Part 2, I discuss Lexicographic Ordering and demonstrate one algorithm to iterate over all the permutations of an array. In Part 3, I apply this algorithm to a brute-force solution of the TSP problem. Every single route permutation is checked one by one. In Part 4, I attempt to create a solution to the TSP problem with a genetic algorithm, and then I add a “crossover” algorithm in Part 5. Code: https://thecodingtrain.com/challenges/35-traveling-salesperson p5.js Web Editor Sketches: 🕹️ Part 1: Traveling Salesperson (TSP): https://editor.p5js.org/codingtrain/sketches/FCNAHaCqf 🕹️ Part 2: Lexicographic Order: https://editor.p5js.org/codingtrain/sketches/iYxi30gbl 🕹️ Part 3: TSP with Lexicographic Order: https://editor.p5js.org/codingtrain/sketches/bWPIkEv9s 🕹️ Part 4: TSP with Genetic Algorithm: https://editor.p5js.org/codingtrain/sketches/EGjTrkkf9 🕹️ Part 5: TSP with Genetic Algorithm and Crossover: https://editor.p5js.org/codingtrain/sketches/EGjTrkkf9 Other Parts of this Challenge: 📺 Part 1: Traveling Salesperson (TSP): https://youtu.be/BAejnwN4Ccw 📺 Part 2: Lexicographic Order: https://youtu.be/goUlyp4rwiU 📺 Part 3: TSP with Lexicographic Order: https://youtu.be/9Xy-LMAfglE 📺 Part 4: TSP with Genetic Algorithm: https://youtu.be/M3KTWnTrU_c 🎥 Previous video: https://youtu.be/Cl_Gjj80gPE?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH 🎥 Next video: https://youtu.be/rX5p-QRP6R4?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH 🎥 All videos: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH References: 🌐 Traveling Salesman on Wikipedia: https://en.wikipedia.org/wiki/Travelling_salesman_problem 🗨️ Permutation Algorithm Using Lexicographic Ordering: https://www.quora.com/How-would-you-explain-an-algorithm-that-generates-permutations-using-lexicographic-ordering 📝 Array on MDN: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array 📝 Array.includes() on MDN: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/includes 📝 Array.reverse() on MDN: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse 📝 ES6 Sets on MDN: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Set 💾 The Nature of Code Part 2: https://github.com/shiffman/NOC-S17-2-Intelligence-Learning 📕 The Nature of Code: http://natureofcode.com/ Videos: 🎥 Improved Pool Selection: https://www.youtube.com/watch?v=ETphJASzYes&list=PLRqwX-V7Uu6YJ3XfHhT2Mm4Y5I99nrIKX&index=23 🎥 Genetic Algorithm Playlist: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6bJM3VgzjNV5YxVxUwzALHV 🔴 Live Stream Archive #57: https://youtu.be/r_SpBy9fQuo Related Coding Challenges: 🚂 #29 Smart Rockets in p5.js: https://youtu.be/bGz7mv2vD6g 🚂 #51 A* Pathfinding Algorithm: https://youtu.be/aKYlikFAV4k 🚂 #69 Evolutionary Steering Behaviors: https://youtu.be/flxOkx0yLrY 🚂 #70 Nearest Neighbors Recommendation Engine: https://youtu.be/N8Fabn1om2k Timestamps: 00:00 Recap from Part 4 00:35 What is crossover? 02:33 Improvement: showing the algorithm running 04:24 Improvement: adding a mutation rate 06:08 Where to apply crossover in the code? 07:10 How to apply crossover? 11:08 Code! Implementing the crossOver() function 15:30 Testing the crossOver() function 16:13 Playing with the variables 17:45 About the ES6 includes() function and Set 18:03 Inefficiency of the dist() function 18:44 Suggestion to improve mutation 21:10 Please share your own variations and improvements! Editing by Mathieu Blanchette Animations by Jason Heglund Music from Epidemic Sound 🚂 Website: http://thecodingtrain.com/ 👾 Share Your Creation! https://thecodingtrain.com/guides/passenger-showcase-guide 🚩 Suggest Topics: https://github.com/CodingTrain/Suggestion-Box 💡 GitHub: https://github.com/CodingTrain 💬 Discord: https://discord.gg/hPuGy2g 💖 Membership: http://youtube.com/thecodingtrain/join 🛒 Store: https://standard.tv/codingtrain 🖋️ Twitter: https://twitter.com/thecodingtrain 📸 Instagram: https://www.instagram.com/the.coding.train/ 🎥 Coding Challenges: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH 🎥 Intro to Programming: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA 🔗 p5.js: https://p5js.org 🔗 p5.js Web Editor: https://editor.p5js.org/ 🔗 Processing: https://processing.org 📄 Code of Conduct: https://github.com/CodingTrain/Code-of-Conduct This description was auto-generated. If you see a problem, please open an issue: https://github.com/CodingTrain/thecodingtrain.com/issues/new #travelingsalesperson #permutation #lexicographicordering #natureofcode #geneticalgorithm #evolution #bruteforce #factorial #arrays #p5js
Download
0 formatsNo download links available.