Course Information
Course Overview
Learn Simulated Annealing, Genetic Algorithm, Tabu Search, and Evolutionary Strategies, and Learn to Handle Constraints
This course will guide you on what optimization is and what metaheuristics are. You will learn why we use metaheuristics in optimization problems as sometimes, when you have a complex problem you'd like to optimize, deterministic methods will not do; you will not be able to reach the best and optimal solution to your problem, therefore, metaheuristics should be used.
This course covers information on metaheuristics and four widely used techniques which are:
Simulated Annealing
Genetic Algorithm
Tabu Search
Evolutionary Strategies
By the end of this course, you will learn what Simulated Annealing, Genetic Algorithm, Tabu Search, and Evolutionary Strategies are, why they are used, how they work, and best of all, how to code them in Python! With no packages and no libraries, learn to code them from scratch!! You will also learn how to handle constraints using the penalty method.
Here's the awesome part --> you do NOT need to know Python programming!
This course will teach you how to optimize continuous and combinatorial problems using Python
Where every single line of code is explained thoroughly
The code is written in a simple manner that you will understand how things work and how to code the algorithms even with zero knowledge in Python
Basically, you can think of this as not only a course that teaches you 4 well known metaheuristics, but also Python programming!
Real Testaments -->
1) "I can say that this is the best course I've had on Udemy ! Dana is a very good instructor. She not only explains the problems and the coding, but also reassures you and remove the fears you might have when learning complex concepts. For someone with a business background, this topic was close to a nightmare ! I highly recommend this course for anyone interested in learning about Metaheuristics. Again, big THANK YOU Dana ! :)" -- Logistics Knowledge Bank, 5 star rating
2) "I am half way through the course. What I learnt so far is far beyond what I expected. What I really liked is the applicability of the examples to real world problems. The most exciting feature in the course is the hands on, what you learn will be implemented in python and you can follow every single step. If you did not understand, the instructor is there to help. I even felt like it is a one to one course. Thanks a lot to the instructor." -- Ali, 5 star rating
3) "The best introduction to Metaheuristics bar none. Best value course on Udemy. I love that we cover a bit of theory and code the actual algorithm itself. The course doesn't just give you some package to use but presents you with code very easy to follow. The code is not optimized or written for maximum performance but for maximum readability. This means you can play around with it once you really understand it and speed it up. Thank you Dana for this amazing course. It has given me the confidence to code my own slightly more advanced algorithms from Sean Luke's book: Essential Metaheuristics. I feel the two are great companions." -- Dylan, 5 star rating
4) "It is a great introduction to Metaheuristics. The course deserves five stars for the overall information on this topic. The instructor is talented and knowledgeable about the optimization problems. I recommend the course for someone looking to solve an optimization problem." -- Abdulaziz, 5 star rating
5) "I still not finished the course, but until now, I am really satisfied with I've seen. THEORETICAL EXPLANATIONS: Dana is very didactic, before presenting the code she always briefly present the theory in a simple way, much easier to understand than books and journal papers explanations. Of course, it is necessary to complement this with other materials, but if you already have a theoretical base, it is just great! Dana, I loved your explanation about crossover and mutation! FOR BEGINNERS IN PYTHON: I am a beginner in Python and even in programming, so Dana's code helped me a lot to understand the meaning of each step and variable since she wrote a very readable code. GOOD TIME-MANAGEMENT: Dana presents the code already done but she explains what she has done in each step. Thus, in 5 minutes we can learn a lot, without being bored. I prefer this way of doing because I've done courses with teachers that do the code during the classes and we waste a lot of time fixing errors and bugs. She is objective and efficient on teaching, I like that. There are things not totally clear to me on courses, so I ask questions to Dana. She takes some days to give us an answer, but she replies anyway. I would appreciate an example of constraint handling for combinatorial problems." -- Rachel, 4.5 star rating
6) "Nice course that really does explain Metaheuristics in a very practical way. Highly recommended!" -- David, 5 star rating
Course Content
- 6 section(s)
- 82 lecture(s)
- Section 1 Introduction
- Section 2 Simulated Annealing
- Section 3 Genetic Algorithm
- Section 4 Tabu Search
- Section 5 Evolutionary Strategies
- Section 6 Constraint Handling
What You’ll Learn
- Learn the foundations of optimization, Understand metaheuristics such as Simulated Annealing, Genetic Algorithm, Tabu Search, and Evolutionary Strategies, Be able to code metaheuristics in Python, Handle constraints though penalties
Skills covered in this course
Reviews
-
SSeth Harris
Disclaimer: I'm writing this as I'm partway through the practical portion of Section 3. So far, I feel that this course has a problem with identifying its target audience. The demonstration code is a poorly organized mess that I find painful to look at (Why does it optimize using numpy while at the same time treating binary strings as arrays? Why does it not just separate the chromosomes out by design, rather than making us split the array? Why does it not make any attempt at reusable code from the start?), while at the same time a lot of time is wasted explaining some basic stuff about programming in general, often multiple times. I'm learning what I need to, but it's not a smooth experience. I feel like things I already understand are over-explained, and things I don't yet understand (which I came here for) are sometimes weirdly under-explained. I don't need to hear 100 times how binary numbers work, but a little bit of memory jogging about genetic-algorithm-specific terminology would've saved me a little time here and there.
-
TThomas Bulka
Especially the second section about simulated annealing showed, what this course could have been and if the rework had continued I think it would have been a great course! However, what really killed the course (for me) where the programming parts later on. The basic introduction into the topics was quite clear and easy to understand, but then was quite foiled by the code. Most of the code seemed to be quite non-idiomatic Python and therefore the implementation was much more difficult to understand than necessary. In some cases pretty trivial logic which could have been implemented in 3-5 lines was spread over one screen page, making it very hard to draw the connection between the clear idea of a metaheuristic and the implementation actually presented. In my opinion the course could benefit very much from a careful rewrite of much of the implementation to make the ideas conveyed much more approachable.
-
GGiovanni Paolinelli
Pros: The theoretical lectures are clear and easy to follow with a lot of material. Cons: The implementations are often too verbose and the absence of functional programming and OOP makes the code harder to follow.
-
TTim
I keep coming back to this course; each time the ideas sink a little deeper and perhaps one day I'll be able to leverage the techniques to solve a real problem - you never know...