O'Reilly logo
live online training icon Live Online training

Practical Evolutionary Computing

enter image description here

Nature-Inspired Algorithms for Optimization Problems

Julian Zucker

Some problems have more potential solutions than you have time to try. With evolutionary computing, you can develop an algorithm that produces a reasonably good solution for you. Evolutionary computing allows you to address problems where the quality of the solution depends on multiple metrics. Once you learn to use the basic principles of random variance and survival of the fittest, you can gradually evolve a population of solutions to solve a wide range of problems.

Join expert Julian Zucker to learn how to tackle a range of real-world problems using the same general problem-solving framework. You’ll discover how to identify optimization problems and solve them with evolutionary computing. This hands-on course will enable you to implement your own generic evolutionary computing system. You’ll leave with a clear understanding of optimization problems and how to solve them.

What you'll learn-and how you can apply it

By the end of this live, hands-on, online course, you’ll understand:

  • The definition of an optimization problem and how to identify these problems in the real world
  • The design of evolutionary computing systems and how to improve their performance

And you’ll be able to:

  • Solve optimization problems using evolutionary computing
  • Utilize evolutionary computing to approximate solutions to hard problems

This training course is for you because...

  • You’re a software engineer who wants to solve problems that don’t have known algorithms or where the known algorithms are too slow.
  • You’re often faced with problems that have more potential solutions than you have time to try, and you want an algorithm to produce a reasonably good solution for you.

Prerequisites

  • Basic familiarity with Python
  • Comfort with high-school level algebra

Recommended follow-up:

About your instructor

  • Julian Zucker is a software engineer at Pivotal, where he works on an open source protocol for monitoring cloud computing workloads. Previously, he was a business intelligence engineer at PayPal creating large-scale data processing systems for analytics. He’s a core developer on Evvo, an open source distributed evolutionary computing framework. He’s published work on simulations of the evolution of intergroup social interactions and enabled the exploration of ideas that were never before able to be simulated by parallelizing the simulations.

Schedule

The timeframes are only estimates and may vary according to how the class is progressing

Optimization problems (10 minutes)

  • Lecture: What is an optimization problem?; Euclidean optimization; non-Euclidean optimization; optimization methods in multiple dimensions
  • Group discussion: Why some functions are harder to optimize than others; Is it possible to find the optimum of every function?; Are there other algorithms to solve these problems?
  • Q&A

Introduction to evolutionary computing (25 minutes)

  • Lecture: How natural selection works; defining evolutionary computing; requirements; different representations for the N-queens problem
  • Group discussion: What are the pros and cons of evolutionary computing over previous optimization approaches?; What are the effects of population size on optimization speed?; Is it better to have “smarter” mutators?
  • Hands-on exercises: Implement the main loop using fitness functions; find a solution to the 8-queens problem
  • Q&A

Break (5 minutes)

Solving the N-queens problem (20 minutes)

  • Lecture: Three representations for the N-queens problem; how to benchmark; performance comparisons
  • Hands-on exercise: Benchmark your solution using library functions
  • Q&A

Multiobjective optimization (30 minutes)

  • Lecture: When is an optimization problem multiobjective?; defining objectives; how to delete solutions; false negative rate and positive rate
  • Group discussion: Examples of multiobjective problems in the real world; Is it ever reasonable to combine different objectives?; cases for converting a single objective into multiple objectives
  • Hands-on exercise: Fill-in the missing elements of the multiobjective optimizer skeleton code
  • Q&A

Break (5 minutes)

Biobjective traveling salesperson problem (50 minutes)

  • Lecture: the biobjective traveling salesperson problem; introduction of the second objective; solution representation; how to create initial population; random, greedy, and hybrid approaches; mutation and crossover operators
  • Hands-on exercises: Implement a mutation operator and a crossover operator; apply operators to the main loop to evolve TSP solutions
  • Q&A

Extensions (15 minutes)

  • Lecture: parallelism; constraints on solutions; logging and tracing to identify good mutation operators; metaevolutionary systems
  • Q&A

Final Q&A and feedback survey (20 minutes)