The great development of heuristic techniques associated with the development of computers has made it possible to solve large-scale problems. Solving real-world optimization problems, unthinkable two decades ago, is now possible. At the end of the course, it is expected that the student will be able to formulate and solve optimization problems using a wide range of modern heuristics, and to fine-tune them in order to make the best possible use of computational resources in solving of complex problems.
1. Recognize the importance of optimization, heuristic techniques and natural computing for solving computational (algorithmic) problems of great complexity;
2. Identify the main heuristic techniques for the implementation of optimization in complex computational systems;
3. Formulate, implement and fine-tune optimization algorithms using heuristic and natural computation techniques.
1. Satisfaction problem (SAT).
2. Traveling Salesman Problem (TSP).
3. Nonlinear problem (NLP).
4. Enumeration and Local Search.
5. Constructive Algorithms (Greedy).
6. How to escape from great places: Simulating Annealing and Taboo Search.
7. Algorithms for problems with many restrictions.
Zbigniew Michalewicz, David B. Fogel, How to Solve it: Modern Heuristics, Springer.
Stuart Russell, Peter Norvig, Artificial Intelligence: A Modern Approach, 3rd Edition. Prentice Hall, ISBN 978-0136042594.
Evaluation is made on individual basis and it involves the coexistence of two modes: continuous assessment (60%) and
final evaluation (40%). Further information is detailed in the Learning Agreement of the course unit.
The students are supposed to be proficient in English language at reading level.