Introduction à l'optimisation mathématique

Introduction à l’optimisation en Python

Jasmin Ludolf

Content Developer

À venir…

 

Vous allez apprendre…
  • Résoudre des problèmes d'optimisation concrets
  • Constituer une boîte à outils pour divers problèmes

 

Prérequis…

 

Pas nécessaire…
  • Calcul
  • Algorithmes
Introduction à l’optimisation en Python

Qu'est-ce que l'optimisation mathématique ?

 

  • Trouver les entrées idéales pour un problème donné

 

  • Exemples :
    • Maximiser les rendements agricoles

Cultures poussant dans un champ.

  • Sols, météo
  • Quantité et qualité optimales des récoltes
Introduction à l’optimisation en Python

Qu'est-ce que l'optimisation mathématique ?

 

 

Fourgonnettes sur une tournée de livraison.

 

 

  • Itinéraires de distribution optimaux
  • Distances et trafic
  • Améliorer les délais et réduire les coûts
Introduction à l’optimisation en Python

La fonction objectif

  • Décrit le lien entre variables d'entrée et résultat

 

Fabrication de meubles :

  • Maximiser le profit, P
  • Quantité, q

 

$P = 40q - 0.5q^2$

  • Quelle valeur de q maximise P ?
Introduction à l’optimisation en Python

Optimiser avec Python

import numpy as np
import matplotlib.pyplot as plt

qs = np.arange(80)


def profit(q): return 40 * q - 0.5 * q**2
plt.plot(qs, profit(qs)) plt.xlabel('Quantity') plt.ylabel('Profit') plt.show()
Introduction à l’optimisation en Python

Optimisation en production

 

  • Valeur maximale = valeur optimale

 

  • Causes possibles de la forme :
    • Manque de personnel ou d'équipement

 

Profit en fonction de la quantité.

Introduction à l’optimisation en Python

Recherche exhaustive

  • Méthode « brute force »
  • Calculer le profit pour un éventail de quantités
  • Choisir celle qui donne le profit le plus élevé

 

Un homme avec des jumelles assis sur un ballon avec un signe dollar, à la recherche de profit.

Introduction à l’optimisation en Python

Recherche exhaustive en Python

import numpy as np

qs = np.arange(80)

def profit(q): 
  return 40 * q - 0.5 * q**2


profits = profit(qs) max_profit = profits.max()
max_ind = np.argmax(profits) q_opt = qs[max_ind]
print(f"The optimum is {q_opt} pieces of furniture, which makes ${max_profit} profit.")
The optimum is 40 pieces of furniture, which makes $800 profit.
Introduction à l’optimisation en Python

Recherche exhaustive : avantages et inconvénients

 

  • Avantages
    • (+) Mise en œuvre simple
    • (+) Pas besoin de logiciels coûteux
    • (+) Hypothèses minimales
  • Inconvénients
    • (-) Ne passe pas à l'échelle pour les cas complexes
Introduction à l’optimisation en Python

Passons à la pratique !

Introduction à l’optimisation en Python

Preparing Video For Download...