I want to learn about metaheuristics and start building one to solve combinatorial optimization which is pretty hard to solve. I am looking for book recommendation or any learning experience to learn this topic. Python preferred for the programming language but i'm open to anything and not limited to.
The most famous book on metaheuristics is probably the Handbook of Metaheuristics:
Michel Gendreau and Jean-Yves Potvin. 2010. Handbook of Metaheuristics (2nd. ed.). Springer Publishing Company, Incorporated.
which is freely available here. It includes a large range of metaheuristics such as Simulated Annealing, Tabu-Search, Variable Neighborhood Search or Genetic Algorithms.
Code wise I would suggest you to start with a problem where you find enough resources such as the TSP and a metaheuristic that you think is easy to implement (personally I started with Simulated Annealing). If you do not have experience with any other programming language, Python is a good choice, because it is fast to learn. However, starting with another language such as C++ might also be a good choice, because it will teach you the basics of programming and is more performant.
Two good (free) books are:
- Essentials of Metaheuristics: https://cs.gmu.edu/~sean/book/metaheuristics/
- Clever Algorithms: https://github.com/clever-algorithms/CleverAlgorithms
If you want to try Julia, this is a good start point: https://jmejia8.github.io/Metaheuristics.jl/stable/