Um problema de roteamento com algumas dezenas de cidades tem mais soluções possíveis do que átomos no universo observável, e nenhum computador vai testá-las uma a uma. É para isso que existem as metaheurísticas. Elas são algoritmos que abrem mão da solução perfeita para conseguir soluções muito boas em tempo viável, buscando inspiração em lugares improváveis como a evolução das espécies, o forrageamento das formigas ou o voo coordenado de um bando de pássaros. Este curso irá oferecer a você uma visão abrangente da computação evolutiva e das metaheurísticas, dos fundamentos de otimização às metaheurísticas de trajetória e populacionais, chegando à otimização multiobjetivo e à fronteira de Pareto. Tudo é implementado por você, em Python, a partir da formulação matemática e sem bibliotecas prontas, porque entender um algoritmo é conseguir escrevê-lo. E como esses métodos são estocásticos, você também vai aprender a compará-los com estatística.