Coding Challenge #35.5: TSP with Genetic Algorithm and Crossover

Subscribers:
1,750,000
Published on ● Video Link: https://www.youtube.com/watch?v=hnxn6DtLYcY



Duration: 23:09
75,587 views
1,537


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




Other Videos By The Coding Train


2017-05-12Live Stream #92: Minesweeper
2017-05-11Coding Challenge #70: Nearest Neighbors Recommendation Engine - Part 3
2017-05-10Coding Challenge #70: Nearest Neighbors Recommendation Engine - Part 2
2017-05-09Coding Challenge #70: Nearest Neighbors Recommendation Engine - Part 1
2017-05-083.1: Introduction to Session 3 - What is Machine Learning?
2017-05-062.2: Exercise Ideas: Session 2 - Intelligence and Learning
2017-05-05Live Stream #91: Session 3 of โ€œIntelligence and Learningโ€
2017-05-051.2: Exercise Ideas: Session 1 - Intelligence and Learning
2017-05-042.1: Introduction to Session 2 - Intelligence and Learning
2017-05-039.8: Genetic Algorithm: Improved Pool Selection - The Nature of Code
2017-05-02Coding Challenge #35.5: TSP with Genetic Algorithm and Crossover
2017-05-01Coding Challenge #35.4: Traveling Salesperson with Genetic Algorithm
2017-04-29Coding Train Live 90: Session 2 of โ€œIntelligence and Learningโ€ Continued
2017-04-28Coding Challenge #69: Evolutionary Steering Behaviors - Part 5 (Bonus)
2017-04-27Coding Challenge #69: Evolutionary Steering Behaviors - Part 4
2017-04-24Coding Challenge #69: Evolutionary Steering Behaviors - Part 3
2017-04-20Coding Challenge #69: Evolutionary Steering Behaviors - Part 2
2017-04-18Coding Challenge #69: Evolutionary Steering Behaviors - Part 1
2017-04-15Live Stream #89: Session 2 of โ€œIntelligence and Learningโ€
2017-03-30Coding Challenge #68: Breadth-First Search Part 2
2017-03-30Coding Challenge #68: Breadth-First Search Part 1



Tags:
JavaScript (Programming Language)
live
programming
creative coding
coding challenge
tutorial
coding
challenges
coding train
nature of code
intelligence creative coding
evolution code
genetic algorithm
traveling salesman genetic algorithm
evolution computer
evolution programming
computing evolution
pool selection
traveling salesperson genetic
traveling
genetic
salesperson
algorithm
genetic algorithms
travelling salesman problem
challenge
traveling salesperson