L’ottimizzazione con Gnumeric


Si può fare - meglio - anche con Gnumeric

Si può fare - meglio - anche con Gnumeric

Avevo anticipato sfuggevolmente che ne avrei riparlato. Ed effettivamente ne vale assolutamente la pena. Nell’articolo sull’ottimizzazione con Openoffice avevo citato le lacune del risolutore che ne precludevano l’uso per scopi professionali. Ebbene Gnumeric, contro le mie aspettative, si dimostra uno strumento molto avanzato per problemi di ottimizzazione lineari o quadratici. A dir la verità comprende tutta una serie di strumenti per l’analisi statistica o per numerica di cui non ero a conoscenza; esiste persino uno strumento per l’analisi di Fourier!

L'impostazione del problema

L'impostazione

L’impostazione del problema rispecchia, come già detto nel caso di Openoffice, ciò che noi ci aspetteremmo da un’impostazione di ottimizzazione e non da come il programma se lo aspetta; i riferimenti a Gnumeric verranno dati in un secondo momento. In questo caso ho optato per un uso dello spazio forse un po’ più razionale ed ho aggiunto la numerazione delle condizioni in grigio sulla sinistra di esse e l’informazione sulla loro veridicità sulla destra. Per la precisione le condizioni occupano le righe 2-8, pertanto le celle C2:8 dovranno avere un contenuto minore di quello delle celle E2:8.

A questo punto si può aprire il Risolutore dal menu Strumenti. L’interfaccia del risolutore è più semplice e razionale rispetto all’equivalente di Openoffice, nonostante le possibilità di quello di Gnumeric siano maggiori.

Scheda parametri

Scheda parametri

Nella prima scheda, Parametri, dobbiamo specificare quale casella contiene il valore della funzione obiettivo (che dev’essere automaticamente aggiornata quando vengono cambiati i valori delle variabili); inoltre dobbiamo indicare quali celle contenono le variabili.

La scheda Modello consente di specificare se si tratta di un problema di massimo o di minimo; non esiste qui la scelta in realtà un po’ discutibile, dell’avvicinamento ad un valore dato che invece esisteva in Openoffice. Si può inoltre scegliere il tipo di algoritmo tra il Simplex normale e il Redivised Simplex. Si può anche scegliere, invece di un problema lineare, un problema quadratico, ma non appena ci si clicca sopra compare una simpatica finestella “pubblicitaria”:

In cerca di un buon argomento per la tua tesi? Che ne pensi di scrivere un risolutore quadratico per Gnumeric?

Devo ammettere che l’idea mi alletta un po’…

Scheda vincoli

Scheda vincoli

Passiamo oltre: la scheda vincoli permette di decidere le condizioni da rispettare. E qui, nulla di più comodo: se infatti si è scelto un modello come il mio in cui tutte le condizioni sono perfettamente allineate una sotto l’altra e tutti i segni sono orientati dalla stessa parte (tutti ≤, oppure tutti ≥), si può tranquillamente impostare, come ho fatto io:

C2:C8 ≤ E2:E8

Il programma capirà che si tratta di sette vincoli differenti. Si può inoltre decidere di avere un vincolo che imponga ad una cella di avere un valore intero oppure che imponga ad una cella di avere un contenuto booleano uguale a TRUE.

Scheda rapporti

Scheda rapporti

La scheda Opzioni permette di specificare alcuni parametri del programma, come le iterazioni massime o il tempo massimo impiegato.

La scheda Rapporti, invece, è la più interessante: permette di scegliere quali rapporti si vuole che il programma generi una volta trovata la soluzione ottimale. I rapporti disponibili sono i seguenti:

  • Valori: riassume i valori delle variabili indipendenti nonché dei vincoli specificando inoltre quali condizioni sono effettivamente vincolanti (vedi prima figura sotto);
  • Sensibilità: rapporto completo sulla sensibilità, sia delle variabili indipendenti, sia dei vincoli; vengono utilizzati i costi ridotti e i prezzi ombra, nonché gli incrementi e i decrementi consentiti (vedi seconda figura sotto);
  • Limiti: quanto può salire o scendere il valore di una variabile facendo rimanere valide le condizioni specificate;
  • Prestazioni: dati sul numero di iterazioni, sull’uso della CPU del tempo utilizzato e informazioni sul sistema;
  • Programma: riformula l’intero problema.

Rapporto valori

Rapporto valori

Rapporto sensibilità

Rapporto sensibilità

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: