La programmazione lineare

Cos'è la programmazione lineare? La programmazione lineare (PL) risolve problemi di ottimizzazione nei modelli in cui la funzione obiettivo e i vincoli sono espressioni lineari e le variabili di decisione sono reali.

E' uno dei metodi di ottimizzazione alla base della ricerca operativa.

Si distingue dalla programmazione non lineare ( NPL ) e dalla programmazione intera ( PI ).

Qual è la differenza tra programmazione lineare, non lineare e intera? La programmazione non lineare ( NPL ) ha una funzione obiettivo e/o almeno un vincolo non lineare. La programmazione intera ( PI ), invece, usa variabili decisionali di tipo intero.
differenza tra PL, NPL, PI

Il modello di ottimizzazione lineare

Un modello di ottimizzazione lineare consiste in tre elementi

  • Funzione obiettivo

    min f(x) = c1x1 + ... + cnxn

    Dove c = coefficienti di costo della funzione obiettivo e x = variabili decisionali
  • Variabili decisionali

    x1,...,xn

    Nella programmazione lineare le variabili decisionali possono essere reali o intere arrotondate.
  • Vincoli del problema

    vi = α1x1 + ... + αnxn ≥ bi con i=1,...,m

    Dove α = coefficienti tecnologici e b = termini noti dei vincoli ( o risorse )

Non necessariamente devono esserci tutti e tre.

Pertanto, un modello è composto da n variabili decisionali (x), n coefficienti di costo (c), m vincoli (v), m coefficienti tecnologici (α) e m termini noti (b).

Nota. Per semplicità ipotizzo che il modello di ottimizzazione abbia un solo obiettivo da raggiungere. In realtà, un modello PL potrebbe avere anche due o più obiettivi ( modelli multiobiettivo ). La spiegazione però si complicherebbe inutilmente.

Posso formalizzare il modello in forma matematica tramite un sistema lineare.

il modello di ottimizzazione in forma estesa

A sua volta posso rappresentare il sistema lineare in una forma matriciale e vettoriale più compatta

il modello di ottimizzazione in forma compatta

In questo caso le lettere minuscole indicano dei vettori e le lettere maiuscole delle matrici.

  • c = vettore dei coefficienti [ c1,...,cn ]
  • x = vettore delle variabili decisionali [ x1,...,xn ]
  • b = vettore delle risorse / termini noti [ b1,...,bn ]
  • A = matrice dei coefficienti tecnologici

Quindi

il significato dei vettori e delle matrici del modello di ottimizzazione lineare in forma compatta

Per completezza aggiungo anche un vincolo di non negatività delle variabili decisionali ( x ≥ 0 ).

modello lineare con vincolo di non negatività

L'arrotondamento delle variabili di decisione

In un modello PL le variabili di decisione (x) sono generalmente di tipo reale.

Tuttavia, posso comunque arrotondare le variabili di decisione a valori interi se necessario.

Se la scala è molto grande, non si perde alcuna informazione e il valore intero è più significativo di quello reale.

Esempio. Se devo decidere la produzione mensile di matite, non ha senso fissarlo a un valore reale ( es. 120,4 matite ). In questi casi è meglio arrotondarlo a un valore intero ( es. 120 matite ).

Viceversa, se il range di variazione delle variabili decisionali è molto piccolo, è meglio evitare l'arrotondamento perché la perdita di informazioni potrebbe diventare eccessiva.

Esempio. Se devo decidere il margine di rischio di un investimento ( es. 3.44% ), arrotondare questo valore ( 3% ) implica una notevole perdita di informazione perché, una volta moltiplicato per il capitale investito, può causare enormi differenze. In questi casi è meglio evitare l'arrotondamento.

In conclusione, si può usare un modello di programmazione lineare anche con variabili intere arrotondate.

Il funzionamento è sempre lo stesso.

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

La ricerca operativa

  1. Cos'è la ricerca operativa
  2. Come costruire un modello del problema
  3. Il modello di ottimizzazione
  4. Come trovare le soluzioni ottimali
  5. Come usare il risolutore di Excel o Calc
  6. La programmazione lineare (PL)
  7. La programmazione intera (PI)