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.
2 Answers
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.
-
1$\begingroup$ Julia is also a rising star these days with the "promise" of the convenience of Python and speed of C++. $\endgroup$ Jul 27, 2022 at 8:12
-
$\begingroup$ i did learn c++ language but given the popularity of python, i choose to learn python. $\endgroup$ Jul 27, 2022 at 9:15
-
1$\begingroup$ Nice. But not freely available if not affiliated with eligible institution. You should consider adding this to or.stackexchange.com/questions/869/… . $\endgroup$ Jul 27, 2022 at 12:06
-
$\begingroup$ is there a book in which they discuss about the theory first and then implemented with the code? I really looking for this resources material. $\endgroup$ Jul 28, 2022 at 1:09
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/