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,501
- 4
- 16
-
1Julia is also a rising star these days with the "promise" of the convenience of Python and speed of C++. – berkorbay Jul 27 '22 at 08:12
-
i did learn c++ language but given the popularity of python, i choose to learn python. – overboxed Jul 27 '22 at 09:15
-
1Nice. But not freely available if not affiliated with eligible institution. You should consider adding this to https://or.stackexchange.com/questions/869/what-are-good-reference-books-for-introduction-to-operations-research . – Mark L. Stone Jul 27 '22 at 12:06
-
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. – overboxed Jul 28 '22 at 01: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/
- 636
- 1
- 7