Introduzione all’ottimizzazione matematica

Introduzione all'ottimizzazione in Python

Jasmin Ludolf

Content Developer

In arrivo...

 

Imparerai a...
  • Risolvere problemi reali di ottimizzazione
  • Creare un toolkit per affrontare casi diversi

 

Cosa serve sapere prima...

 

Cosa non serve sapere...
  • Calcolo
  • Algoritmi
Introduzione all'ottimizzazione in Python

Cos’è l’ottimizzazione matematica?

 

  • Trovare gli input ideali per un problema specifico

 

  • Esempi:
    • Massimizzare i raccolti

Colture che crescono in un campo.

  • Condizioni del suolo, meteo
  • Quantità e qualità ottimali del raccolto
Introduzione all'ottimizzazione in Python

Cos’è l’ottimizzazione matematica?

 

 

Furgoni su un percorso di consegna.

 

 

  • Percorsi di distribuzione ottimali
  • Distanza e traffico
  • Migliorare i tempi di consegna e ridurre i costi
Introduzione all'ottimizzazione in Python

La funzione obiettivo

  • Descrive il rapporto tra variabili in input e risultato

 

Produzione di mobili:

  • Massimizza il profitto, P
  • Quantità, q

 

$P = 40q - 0.5q^2$

  • Quale valore di q massimizza P?
Introduzione all'ottimizzazione in Python

Ottimizzare con 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()
Introduzione all'ottimizzazione in Python

Ottimizzazione nella manifattura

 

  • Valore massimo = valore ottimo

 

  • Possibili motivi della forma:
    • Personale o attrezzature insufficienti

 

Il profitto varia con la quantità.

Introduzione all'ottimizzazione in Python

Ricerca esaustiva

  • Metodo "forza bruta"
  • Calcolare il profitto per varie quantità
  • Scegliere quella con profitto maggiore

 

Un uomo con un binocolo seduto su un pallone con il simbolo del dollaro che cerca profitto.

Introduzione all'ottimizzazione in Python

Ricerca esaustiva in 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.
Introduzione all'ottimizzazione in Python

Pro e contro della ricerca esaustiva

 

  • Vantaggi
    • (+) Implementazione semplice
    • (+) Nessun software costoso
    • (+) Ipotesi minime
  • Svantaggi
    • (-) Non scala per casi complessi
Introduzione all'ottimizzazione in Python

Laten we oefenen!

Introduzione all'ottimizzazione in Python

Preparing Video For Download...