La programmazione lineare è un metodo per trovare il valore migliore di una funzione obiettivo lineare, come il profitto massimo o il costo minimo, soggetto a vincoli lineari. In un problema con due variabili, la soluzione grafica individua la regione ammissibile e ne controlla i vertici. Nei problemi più grandi, il metodo del simplesso usa algebricamente la stessa idea dei vertici.
Usa la programmazione lineare solo quando la funzione obiettivo e i vincoli sono lineari. Se la relazione si piega, è curva o dipende da prodotti come , il modello non è un problema di programmazione lineare.
Definizione di programmazione lineare
soggetto a vincoli come
più disequazioni lineari simili, insieme a condizioni come quando i valori negativi non hanno senso.
L’insieme di tutti i punti che soddisfano ogni vincolo si chiama regione ammissibile. La programmazione lineare chiede: tra questi punti ammissibili, quale fornisce il miglior valore della funzione obiettivo?
Come funziona il metodo grafico
Se ci sono solo due variabili decisionali, puoi disegnare ogni vincolo nel piano . La sovrapposizione di tutte le regioni consentite è la regione ammissibile.
Ogni punto di quella regione è una soluzione valida. La funzione obiettivo assegna un valore a ciascuno di essi.
Per i problemi di programmazione lineare, un fatto fondamentale è questo: se esiste una soluzione ottima, allora almeno una soluzione ottima si trova in un vertice della regione ammissibile. Per questo il metodo grafico si concentra sui vertici invece di controllare ogni punto della regione ombreggiata.
Esempio svolto: risolvere graficamente un problema di programmazione lineare
Supponiamo che un’azienda produca due prodotti, e .
- Profitto per unità di :
- Profitto per unità di :
- Limite di tempo macchina: ogni unità di usa ora, ogni unità di usa ore, e sono disponibili al massimo ore
- Limite di assemblaggio: ogni unità di usa ora, ogni unità di usa ora, e sono disponibili al massimo ore
Sia il numero di unità di e il numero di unità di .
Massimizzare
soggetto a
Trova i vertici
Dagli assi e dalle rette dei vincoli, i vertici ammissibili sono
Il punto si ottiene risolvendo le equazioni di frontiera
Sottraendo si ottiene , e quindi .
Valuta l’obiettivo in ogni vertice
Calcola il profitto in ogni vertice:
- In ,
- In ,
- In ,
- In ,
Quindi il profitto massimo è
in
Questo è il metodo grafico in una frase: rappresenta la regione ammissibile, trova i vertici e valuta lì la funzione obiettivo.
Intuizione del metodo del simplesso
Il metodo grafico è pratico solo quando ci sono due variabili, e talvolta tre se sei disposto a immaginare una regione tridimensionale. I problemi reali di ottimizzazione hanno spesso molte variabili, quindi disegnare la regione ammissibile non è più realistico.
Il metodo del simplesso mantiene la stessa logica dei vertici, ma la applica algebricamente. In termini generali, passa da un vertice ammissibile a un altro che migliora l’obiettivo, e si ferma quando nessuno spostamento adiacente produce un valore migliore.
Quindi un buon modello mentale è:
- Metodo grafico: vedere i vertici
- Metodo del simplesso: muoversi tra i vertici senza disegnarli
Questa descrizione dà l’intuizione, non l’algoritmo completo. La procedura effettiva del simplesso usa una tabella o una forma algebrica equivalente per decidere quale variabile entra ed esce a ogni passo.
Perché i vertici contano
Le funzioni obiettivo lineari generano rette di livello come
per diversi valori di . Se fai scorrere quella retta nella direzione di profitto crescente, l’ultimo punto in cui tocca ancora la regione ammissibile è dove si verifica il massimo.
In molti grafici, quest’ultimo contatto avviene in un singolo vertice. Se la retta dell’obiettivo è parallela a un lato di frontiera, più punti su quel lato possono essere tutti ottimali. Anche in quel caso, esiste comunque almeno un vertice ottimale.
Errori comuni
Confondere ammissibile con ottimale
Un punto può soddisfare tutti i vincoli e comunque non massimizzare o minimizzare l’obiettivo. Ammissibile significa solo consentito.
Dimenticare le condizioni di non negatività
Se e rappresentano quantità che produci o spedisci, i valori negativi di solito non hanno senso. Omettere oppure può cambiare il problema.
Supporre che ogni risposta debba essere un numero intero
La programmazione lineare standard ammette valori frazionari. Se le variabili devono essere intere, come il numero di camion o di lavoratori, serve un modello di programmazione intera o un’ulteriore condizione di integrità.
Supporre che ogni problema abbia una soluzione migliore
Alcuni problemi di programmazione lineare sono inammissibili, cioè nessun punto soddisfa tutti i vincoli. Altri sono illimitati, cioè l’obiettivo può migliorare senza limite. Si ottiene un ottimo finito solo quando i vincoli delimitano davvero abbastanza il problema.
Usare il metodo grafico quando ci sono troppe variabili
Quando le variabili sono molte, il grafico non è più lo strumento giusto. È qui che il simplesso o altri metodi di ottimizzazione diventano necessari.
Quando si usa la programmazione lineare
La programmazione lineare si usa quando decisioni diverse competono per risorse limitate e sia l’obiettivo sia i vincoli possono essere modellati linearmente. Esempi tipici includono pianificazione della produzione, trasporti, assegnazione del personale, miscelazione, schedulazione e allocazione del budget.
Il modello è valido solo quanto lo sono le sue ipotesi. Se la relazione reale non è abbastanza vicina a essere lineare, oppure se le variabili devono essere intere, un normale problema di programmazione lineare può essere solo un punto di partenza.
Prova un problema simile
Prendi un piccolo problema testuale con due prodotti, due limiti di risorse e una funzione di profitto. Scrivi le variabili, rappresenta i vincoli e verifica da solo i vertici. Quando questa idea diventa chiara, il metodo del simplesso è molto più facile da capire perché estende la stessa logica a dimensioni maggiori.
Hai bisogno di aiuto con un problema?
Carica la tua domanda e ottieni una soluzione verificata, passo dopo passo, in pochi secondi.
Apri GPAI Solver →