import {Component} from 'preact' import Split from "../components/split"; import Latex from "../components/latex"; import Panel from "../components/panel"; import Example from "../components/example"; import Todo from "../components/todo"; const r = String.raw; export default class OttimizzazioneLineare extends Component { render() { return (

Ottimizzazione lineare

Link alla playlist

TODO: Ripulire e caricare le slides da qualche parte

La funzione obiettivo è la funzione con valore noto sconosciuto:

{r`z = C_1 \cdot x_1 + C_2 \cdot x_2 + C_n \cdot x_n`}

Funzione della funzione obiettivo che indica la direzione del suo aumento più veloce.

{r`\nabla f = \frac{\delta f}{\delta x_1} e_1 + \frac{\delta f}{\delta x_2} e_2 + \frac{\delta f}{\delta x_n} e_n`}

{r`e_i`} è la direzione della coordinata i-esima.

Se {r`n = 3`}, allora:
  • {r`e_1 = (1, 0, 0)`}
  • {r`e_2 = (0, 1, 0)`}
  • {r`e_3 = (0, 0, 1)`}
Se la funzione obiettivo è z = 2w + 3x + 4y, il suo gradiente è {r`\nabla z = (2, 3, 4)`}.

Un sistema è in forma standard quando ha:

  • Solo equazioni
  • Tutte le variabili maggiori di zero

Possiamo trasformare una disequazione in equazione introducendo variabili slack:

{r`3x + 2y \leq 15 \implies 3x + 2y + s_1 = 15`}

In seguito, possiamo riscrivere la funzione obiettivo in termini delle variabili slack.

Si ottiene qualcosa come {r`z = -2 s_1 - 3 s_2 + 40`}.

Una volta riscritta la funzione obiettivo in termini di slack, se riscriviamo anche le altre funzioni in termini delle slack possiamo ricavare la soluzione dai termini noti.

TODO: è praticamente Gauss-Jordan

) } }