
Explore operations research as a method to model and optimize decisions under resource constraints. Learn to define objective functions, decision variables, and hard and soft constraints with a two-product example.
Compare local and global search, deterministic and stochastic methods, and how metaheuristics use populations to avoid local minima and approach global minima in complex problems.
Examine continuous and combinatorial search problems, global and local minima exemplified by Himmelblau, and population-based metaheuristics such as gradient descent, simulated annealing, tabu search, genetic algorithms, and particle swarm optimization.
We introduce random initial solutions, neighborhood and population-based search with fitness tracking, and briefly outline simulated annealing, genetic algorithms, and tabu search with aspiration criteria.
Implement simulated annealing on the Himmelblau continuous problem in Python, using numpy and matplotlib to minimize the objective function and visualize progress.
Explore simulated annealing in Python for the Himmelblau objective, starting from a point and moving through neighborhood solutions, while tuning initial temperature, M, N, alpha, and K for small steps.
Run the simulated annealing process multiple times to explore different outcomes for a continuous problem, recording X, Y, and Z values, and plot temperature versus Z.
Plot the simulated annealing results for the Himmelblau function, linking temperature schedules (initial to final) with objective values, and compare how different M and N settings affect convergence.
Configure simulated annealing parameters, generate a random initial solution, reindex the distance matrix, convert to an array, and compute the cost as distance times flow to obtain the objective value.
Genetic algorithm drives population-based search using evolution-inspired mechanisms, natural selection, reproduction, survival of the fittest, and encodes solutions in binary chromosomes, mapping genotype to phenotype through crossover and mutation.
Explore how a genetic algorithm runs from a written pseudocode to a flowchart, detailing generations, population size, crossover and mutation probabilities, tournament selection, elitism, and choosing the best final chromosome.
Decode a chromosome into X and Y, compute the himmelblau objective value, and return decoded X, decoded Y, and the objective value via a single function.
explore two-point crossover in genetic algorithms for continuous problems, showing how to select two crossover points, guarantee different indices, and apply 100% crossover to generate children while preserving genetic information.
Learn two-point crossover in Python for problems by dividing each parent into three segments to create two children, using left-to-right indices and smaller to parent one, larger to parent two.
Explore the mutation operator for a continuous binary GA, applying bit-flip mutation to generate diversity, with a 0.3 probability and experiments with high and low rates using child updates.
Extract the best converged and best overall objective values from generations, and plot the best-of-generation values across generations with matplotlib, including red dashed reference lines and axes labels.
Explore tabu search fundamentals: tabu list memory, aspiration criteria, intensification versus diversification, and short term, intermediate term, long term memory with frequency based memory.
Explore evolutionary strategies for continuous problems, focusing on mutation-driven search, mu and lambda variations, and parent–offspring competition in a population-based framework.
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