It:Utilizzare la Funzione Solver

From NeoWiki

Jump to: navigation, search

Attenzione Le figure di questa pagina fanno ancora riferimento alla versione francese della pagina scritta da Jgd. Le funzioni del testo sono invece già state tradotte nel corrispondente in italiano. Ci scusiamo per l'inconveniente. Sarà nostra cura risolvere al più presto l'incongruenza.

La funzione Solver è una funzione che permette di calcolare le condizioni che realizzano la massimizzazione degli obiettivi e la minimizzazione dei costi rispettando alcuni vincoli. L'esempio che segue illustra l'utilizzo della funzione Solver inserita a partire da NeoOffice 2.1 in Calc.
N.B. L'interfaccia della funzione Solver è esclusivamente in inglese e non è stata tradotta, ad oggi, in nessun'altra lingua. Per tua comodità verso al fine di questa pagina è stato riportato il lessico dei termini presenti nella finestra della funzione tradotto, ed una breve spiegazione del significato.

Contents

Presentazione del problema

Supponiamo che in una fabbrica si costruiscano tre tipi di macchine, A1, A2, A3. Chiamiamo Pi il prezzo delle materie prime ed Hi il numero di ore di lavoro necessarie alla fabbricazione della macchina di tipi Ai. Il guadagno per la macchina di tipo Ai è uguale a Bi.
Le variabili da considerare sono il numero xi di macchine di tipo Ai fabbricate. Noi cercheremo di calcolare i valori dei numeri xi che rendono massimo il guadagno totale realizzato.
Questi dati devono rispettare dei vincoli, per esempio:

il numero xi deve essere un numero intero. Si vogliono costruire almeno 30 macchine di quel tipo.
il costo totale delle materie prime dovrà essere inferiore o uguale a 10 000 €
il numero totale di ore lavorate dovrà essere inferiore o uguale a 5 200.
Macchine A1 A2 A3
Numero di macchine x1 x2 x3
Prezzo delle materie prime per macchina p1 p2 p3
Numero di ore di lavoro per macchina h1 h2 h3
Guadagno per macchina b1 b2 b3
Guadagno massimo b1x1+b2x2+b3x3
Vincoli x1 >= 30, x2 >= 30, x3 >= 30 p1x1+p2x2+p3x3 <= 10 000 h1x1+h2x2+h3x3 <= 5 200

Soluzione del problema

  • Apri un documento Calc
  • Nel foglio di calcolo inserisci i dati come mostrato nella tabella:

Il valore 1890 contenuto nella cella B8 è dato dalla somma delle ore di lavoro necessarie alla fabbricazione di 30 macchine di ogni tipo, calcolato con la funzione MATR.SOMMA.PRODOTTO(B2:D2;B4:D4).
Il valore 6300 contenuto nella cella B9 è il costo delle materie prime necessarie per produrre 30 macchine di ogni tipo, calcolato con la funzione MATR.SOMMA.PRODOTTO(B2:D2;B3:D3).
Vogliamo rendere massimo il guadagno totale: MATR.SOMMA.PRODOTTO($B$2:$D$2;B5:D5)

  • Scegliere il menù Strumenti > Solver…. Si aprirà la finestra Optimization Solver.
  • Definire il modello:

N.B Tutti i riferimenti verranno automaticamente tradotti in riferimenti assoluti per il risolutore. Questo spiega la presenza del prefisso "$" nei riferimenti delle celle.

    • Clicca sulla piccola freccia verde a destra del campo Set target cell, poi clicca sulla cella contenente la funzione da ottimizzare, nel nostro caso la cella B7 che contiene la formula che calcola il guadagno totale. Clicca di nuovo sulla freccia verde a destra del campo di inserimento dei dati, il valore $Tabella1.$B$7 viene scritto automaticamente nel campo Set target cell.
    • Clicca su Maximize. È l'obiettivo fissato.
    • Clicca sulla piccola freccia verde che si trova a destra del campo By changing cells per scegliere le celle che contengono le variabili delle quali vogliamo determinare i valori che permettono di rendere massimo il guadagno. Selezioniamo le tre celle B2, C2, D2 facendo scorrere il cursore. Clicca di nuovo sulla piccola freccia verde a destra del campo di immissione dei dati. La matrice $Tabella1.$B$2:$D$2 viene scritta automaticamente nel campo By changing cells.
  • Definire i vicoli:

Fissiamo i seguenti vincoli:

MATR.SOMMA.PRODOTTO(B2:D2;B4:D4) ≤ 5 200
MATR.SOMMA.PRODOTTO(B2:D2;B3:D3) ≤ 10 000
B2 ≥ 30
C2 ≥ 30
D2 ≥ 30
    • clicca sul bottone Add. Si apre la finestra Constraint.
    • Clicca sulla piccola freccia verde a destra del campo Cell reference e clicca sulla cella B8, poi clicca di nuovo sulla freccia.
    • Nel campo Constraint digita il valore scelto, cioè 5200.
    • Clicca su OK.
    • Clicca nuovamente sul bottone Add ed aggiungi le quattro altre condizioni nello stesso modo appena visto. Cambia il segno "<=" in ">=" per le condizioni relative a xi.
  • Scegli le opzioni:
    • Clicca sul bottone Options
    • Nella finestra Options che si apre, lascia selezionate le opzioni di défault Assume linear model e scegli l'opzione Allow only integer values.
    • Clicca su OK.
  • Clicca sul bottone Solve.
  • Apparirà il messaggio Solution found, soluzione trovata. Clicca su OK.

I valori delle celle da B2 a D2 sono state modificate in modo da trovare il guadagno massimo possibile rispettando i vincoli imposti.
In questo esempio si ottiene x1= 82, x2 = 31 et x3 = 30.

  • Puoi salvare questo modello cliccando sul bottone Save. Cliccando invece sul bottone Load è possibile richiamare il modello per affinarlo ulteriormente e, per esempio, modificare i valori immessi per i costi di produzione.

Lessico

Finestra principale
Inglese Italiano Descrizione
Define model Definizione del modello
Set target cell Definisci la cella obiettivo Indirizzo della cella contenente il valore da ottimizzare
Goal Obiettivo Definisce l'ottimizzazione: massimizza o minimizza
By changing cells Modificando le celle Posizione delle celle il cui contenuto verrà modificato
Subject to the constraints Vincoli da rispettare Definisce le condizioni che devono essere rispettate
Add Aggiungi Aggiunge un nuovo vincolo
Change Modifica Modifica la definizione del vincolo selezionato
Delete Elimina Cancella il vincolo selezionato
Solve Risolvi Lancia il processo
Reset Inizializza Elimina tutti i valori immessi
Options Opzioni Apre la finestra di dialogo Options
Save Registra Registra (salva) i valori correnti nei metadati del documento
Load Apri Importa i valori registrati nei metadati del documento
Close Chiudi


Finestra Contraintes e Options
Inglese Italiano Descrizione
Cell Reference Indirizzo della cella Permette di immettere l'indirizzo della cella che dovrà contenere le condizioni/I vincoli imposti
Constraint Vincoli Permette di immettere le condizioni imposte che possono essere un valore numerico o il riferimento ad una cella
Assume linear model Modello lineare Se questa opzione è smarcata la funzione Solver utilizza un algoritmo di programmazione lineare, altrimenti utilizza un algoritmo non-lineare
Allow only positive values Permetti solo valori positivi Le variabili possono assumere solo valori posotivi
Allow only integer values Permetti solo valori interi Le variabili possanoa assumere solo valori interi

Altre risorse

[Descrizione della funzione Solver] [en]


Questo articolo in altre lingue: Français English
Personal tools