Skip to content

Latest commit

 

History

History
95 lines (59 loc) · 7.09 KB

README_standard.md

File metadata and controls

95 lines (59 loc) · 7.09 KB

Multi Objective Optimisation

This repository is dedicated to tutorials to learn and practice optimising for multiple parameters using Pareto Fronts.

This tutorial will be presented on March 13th 2021 in PyCon USA (abstract)

It has been delivered in PyData Global 2020 (abstract).

Tutorial

Welcome and thanks for attending this tutorial on multi-objective optimisation!

This tutorial was created for the NumFocus Academia who host it here.

You can also access all the material in this repository, including video recordings.

Abstract

Optimising for multiple objectives is a non-trivial task, especially when they are in conflict. For example how can one best overcome the classic trade-off between quality and cost of production, when the monetary value of quality is not defined? In this hands-on Python tutorial you will learn about Pareto Fronts and use them to optimise for multiple objectives simultaneously.

This hands-on tutorial is geared towards anyone interested in improving their optimisation skills (e.g, analysts, scientists, engineers, economists), in which you will learn and implement

The only requirements are basic usage of numpy and matplotlib. The maths required is highschool level.

Here you will find Jupyter notebooks with which you will apply lessons and tools learned to the simple Knapsack problem. You will program for filling a bag with packages with the objective of minimising the bag weight while maximising its content value.

Description

Multi-Objective Optimisation, also known as Pareto Optimisation, is a method to optimise for multiple parameters simultaneously. When applicable, this method provides better results than the common practice of combining multiple parameters into a single parameter heuristic. The reason for this is quite simple. The single heuristic approach is like horse binders limiting the view of the solution space, whereas Pareto Optimisation enables a bird’s eye view

Real world applications span from supply chain management, manufacturing, aircraft design to land use planning. For example when developing therapeutics, Pareto optimisation may help a biologist maximise protein properties like effectiveness and manufacturability while simultaneously minimising toxicity.

This hands-on tutorial is geared towards anyone interested in improving their optimisation skills (e.g, analysts, scientists, engineers, economists), in which you will learn and implement:

  • The limitations of the common practice of combining multiple parameters into one heuristic.
  • Pareto Fronts: the notion in which there may be a set of trade-off solutions which are considered equally optimal.
  • Application of the Pareto Front method to Evolutionary Algorithms to find optimal solutions in an intractable search space.
  • Applicability in the real world

We will use Python and work in a Jupyter notebook environment.

Outline

If you know about Pareto Fronts and Genetic Algorithms, feel free to jump right into the notebooks.

Otherwise you might benefit from the context given the videos. The total time of the intro videos is 30 minutes.
The hands-on videos are roughly 60 minutes, in which I guide you through the notebooks. Since the notebooks are completely annotated, you can feel free to skip the hands-on videos.

  • Welcome and Intro (5 minute video)
  • Introduction to Pareto Fronts (13 minutes in 2 videos: 1, 2)
  • Hands On: Pareto Fronts (25 minutes in 3 videos: 1, 2, 3) First: Open In Colab
  • Decision and Objective Space (3 minute video)
  • Introduction to Pareto Optimisation with Genetic Algorithms (12 minutes in 2 videos: 1, 2)
  • Hands On: Pareto Optimisation with Genetic Algorithms (35 minutes in 5 videos 1, 2, 3, 4, 5) First: Open In Colab
  • Summary and Discussion (5 minute video)

Main Take Aways From Hands The On Sessions

The notebooks will help you learn to solve for multiple objective optimisation problems and visualise results.

  • In 01_knapsack 2D_exhaustive.ipynb you will optimise for the knapsack problem in an exhaustive solution space. Here you will learn:
    • The limitations of the commonly practiced Single Objective Optimisation.
    • Pareto Fronts: identifying by eye Pareto optimal solutions within a distribution as well as pseudocode for selecting these Non-Dominated solutions.
    • Optimisation concepts Decision Spaces and Objective Spaces. These concepts are useful to determine the applicability of Pareto Optimisation.
  • In 02_knapsack_2D_stochastic.ipynb you optimise for the knapsack problem in an intractable search space. Here you will learn:
    • Stochasticity and Pareto front approximations
    • Genetic Algorithm basics with an emphasis on Pareto fronts as the selection function.
    • To track the learning progress of a Genetic Algorithm by means of the evolution of Pareto front approximations.
    • Improving population diversity by niching.

More Resources

For those interested in material before the tutorial, I kindly refer you to: