• Save
Appunti di Elaborazione automatica dei dati: il simplesso
Upcoming SlideShare
Loading in...5
×
 

Appunti di Elaborazione automatica dei dati: il simplesso

on

  • 1,513 views

Appunti universitari per l'esame di Elaborazione automatica dei dati: il simplesso

Appunti universitari per l'esame di Elaborazione automatica dei dati: il simplesso

Statistics

Views

Total Views
1,513
Views on SlideShare
1,374
Embed Views
139

Actions

Likes
0
Downloads
1
Comments
1

2 Embeds 139

http://profland.altervista.org 138
http://www.profland.altervista.org 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • avviso ai naviganti
    per scaricare i file degli appunti universitari:
    1. cercare profstudio su un motore di ricerca
    2. oppure, andare su http://profland.altervista.org e cliccare sulla sezione ’appunti universitari’
    3. se volete comunicare con me conviene andare su: http://profland.altervista.org/mail.htm

    :)
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Appunti di Elaborazione automatica dei dati: il simplesso Appunti di Elaborazione automatica dei dati: il simplesso Presentation Transcript

  • Il MACHEMAZZ:L’ALGORITMO DEL SIMPLESSO www.profland.135.it 1
  • Si ricorda che:luso degli appunti qui presenti è consentito per solo uso personale e di studio;la consultazione è gratuita ed ogni forma atta a ricavarne lucro è vietata!gli appunti sono fatti da studenti che non possono assumersi nessuna responsabilità in merito;il materiale qui presente non è sostitutivo ma complementare ai libri di testo: - devi (e ti consiglio) di consultare e comprare i libri di testo;il materiale qui presente è distribuito con licenza Creative CommonsTi ricordo che se vuoi contribuire mandando degli appunti o quantaltro possa essere utile ad altripuoi farlo inviando il materiale tramite: http://profland.altervista.org/mail.htmProfman Il file è stato scaricato/visualizzato in forma gratuita da Profland: http://profland.altervista.org sezione Profstudio http://profland.altervista.org/profstudio/profstudio.htm oppure da qualche mirror, come: www.profland.cjb.net www.profland.135.it o dalla pagina dedicata su slideshare.net: www.slideshare.net/profman www.profland.135.it 2
  • Problemi di ottimizzazioneNel campo economico e finanziario molti problemipossono essere descritti mediante modelli matematici diricerca di un minimo o di un massimo di una funzione diuna o più variabili, soggetta o meno a restrizioni.Questi problemi, definiti di ottimizzazione, nella loroformulazione matematica, richiedono l’individuazione di:  variabili decisionali: descrivono quantitativamente ledecisioni da prendere, quantizzando il problema;        funzione obiettivo lineare: rappresental’oggetto da massimizzare o minimizzare ed èfunzione delle variabili, graficamente (in un sistemaa 2 dimensioni) è raffigurata da una retta      vincoli lineari: descrivono le limitazioni da imporre alle variabili; possono essere disequazioni o equazioni di tipo lineare. 3
  • Tutto ciò rappresenta un modello di programmazione lineare,nell’ambito del quale: si può ricondurre un problema di minimo ad uno di massimo eviceversa considerando la funzione opposta: min f(x) = - max f(x); possono ricondursi i vincoli di uguaglianza a vincoli didisuguaglianza, i vincoli di minore a vincoli di maggiore e, viceversa,moltiplicando entrambi i membri della disequazione per la quantità(-1).Si avranno sempre vincoli di non-negatività sulle grandezze input perimpedire che l’output assuma valori negativi e quindi inaccettabili peril significato economico.I vincoli di disequazioni rappresentano graficamente una parte dipiano. L’insieme di vincoli, quindi, costituisce la regione delle soluzioniammissibili. L’insieme di queste ultime costituisce un poliedrocomplesso e la soluzione di massimo (o minimo) che si ricerca è in unvertice di questa stessa figura bidimensionale.www.profland.135.it 4
  • Se i vincoli, per quanto numerosi, sono limitati a 2 o 3 variabili, il problemapuò essere generalmente risolto con il metodo grafico Tecnica geometrica 1. si rappresentano graficamente i vincoli di disuguaglianza dopo aver risolto ciascuna equazione, rispetto alla prima variabile in termini della seconda variabile;2.si traccia su un altro grafico il campo delle soluzioni ammissibili;3. si calcola l’inclinazione della funzione obiettivo, facendo assumere ad una riga questa stessa inclinazione e spostandola poi fino al punto di contatto con la funzione obiettivo;4 dal punto di contatto appena trovato si traccia una linea, ad esempio, tratteggiata;5. si leggono poi i valori critici delle variabili in corrispondenza del punto di contatto, e si stima la funzione obiettivo in corrispondenza di questi valori. www.profland.135.it 5
  • Tecniche algebriche (simplesso)Nel trasformare i vincoli di “minore o uguale” si aggiunge una quantità positiva (S 1) alprimo membro della disequazione e si ottiene un’equazione equivalente x1 + x2 ≤ 10aggiungendo una variabile positiva diventa x1 + x2 + S1 = 10 (con S1 ≥ 0)La variabile S1 è detta variabile slack (ovvero fittizie, inattive) ed è già implicitamentedefinita nel vincolo espresso con la disequazione.Nel trasformare i vincoli di “maggiore o uguale” in equazioni, si sottrae una quantità S 2 alprimo membro della disequazione, ottenendo x1 + x2 ≥ 10sottraendo la variabile S2 diventa x1 + x2 - S2 = 10anche la variabile S2 è detta variabile slack ed è già implicitamente definita nel vincoloespresso con la disequazione.Si rileva che con l’introduzione delle variabili slack aumenta la dimensione dello spaziodelle soluzioni ammissibili: in altre parole aumenta il numero delle incognite, rimaneinvariato il numero delle equazioni, e quindi si può ipotizzare un numero di equazioni (m)inferiore al numero di incognite (n). Ne consegue che se il rango della matrice è inferiore alnumero delle incognite il sistema ammetterà infinite soluzioni. www.profland.135.it 6
  • Prima di illustrare l’idea alla base del metodo del simplesso bisogna illustrare le seguenti proprietà:L’idea del simplesso è la seguente:si parte da un vertice (per costruzione l’origine) a cui corrisponde un valore dellafunzione obiettivo, si cerca poi di passare ad un’altra soluzione ammissibile di base,relativa ad un vertice adiacente, tale che il valore corrispondente della funzioneobiettivo sia maggiore del precedente; quando non si passa più da un vertice ad unaltro, vuol dire che si è trovato il massimo valore a cui corrisponde la funzioneobiettivo. www.profland.135.it 7
  •  A priori il problema deve avere soluzioni immettendo il vincolo dipositività di termini noti.La procedura è la seguente:1.     determinare una soluzione iniziale ammissibile di base;2.    se la soluzione è ottima, stop; altrimenti proseguire in sequenza;3.    determinare, tra le variabili non basiche, la variabile xr che deveentrare a far parte delle variabili basiche;4.    determinare tra le variabili basiche la variabile x k che si devescambiare con xr e che quindi deve diventare non basica;5. calcolare le coordinate del vertice adiacente – individuatoprecedentemente – che rappresenta la nuova soluzione correnteammissibile di base e proseguire dal passo 2. www.profland.135.it 8
  • Algoritmo del simplessoMetodo del simplesso standard: [illim,fo,x]=simplesso(A,b,c,maxit) risolve il problema di programmazione lineare max cxcon i vincoli:• Ax<=b• x(i)>=0 per ogni i• b(i)>=0 per ogni i www.profland.135.it 9
  • [illim,fo,x]=simplesso(A,b,c,maxit) INPUT:A = matrice dei coefficienti dei vincolib = vettore colonna dei termini noti delle (dis)equazioni di vincoloc = vettore riga dei coefficienti della funzione obiettivomaxit = numero di passi prima di individuare una possibile iterazione www.profland.135.it 10
  • [illim,fo,x]=simplesso(A,b,c,maxit) OUTPUT:La funzione restituisce in x il valore dellasoluzione ottima e in fo il valore dellafunzione obiettivo se il problema ammetteottimo finito (illim=0). illim 1 SE il problema non ammette ottimo 2 SE i dati forniti non sono corretti (in tal caso x e fo sono vuoti)illim = 3 SE è probabile una ciclicità www.profland.135.it 11
  • INIZIOControllo della correttezza dei dati Isempty SI ON (find(b<0)) NOma == mb SI NOna == nc SI Costruzione della prima tavola Inizializzazione Errore Individuazione dellindice della variabile entrante Errore IterazioniErrorewww.profland.135.it 12 FINE
  • Controllo della correttezza dei dati ma = numero di righe della matrice A>> [ma,na]=size(A); na = numero di colonne della matrice A mb = numero di righe del vettore b>> [mb,nb]=size(b); nb = numero di colonne del vettore b mc= numero di righe del vettore c>> [mc,nc]=size(c); nc= numero di colonne del vettore c Data una matrice X di m righe ed n colonne, [m,n]=size(X) restituisce: m = numero di righe di X 13 n = numero di colonne di X
  • Controllo della correttezza dei dati>> if nb~=1 Un vettore colonna è tale se possiede solo>> b=b; una colonna. Se nb (che esprime il numero di colonne di b) non è pari ad uno, è chiaro che>> mb=nb; b non è un vettore colonna.>> nb=1; Probabilmente, lutente lo ha passato come vettore riga; si opera quindi la trasposizione e>> end si ridefinisce mb e nb. Un vettore riga è tale se possiede solo una>> if mc~=1 riga. Se mc (che esprime il numero di righe di>> c=c; c) non è pari ad uno, è chiaro che c non è un vettore riga.>> nc=mc; Probabilmente, lutente lo ha passato come>> mc=1; vettore colonna; si opera quindi la>> end trasposizione e si ridefinisce mc e nc. 14
  • if isempty(find(b<0))Lapplicazione del metodo del simplesso per la risoluzione diproblemi economici di ottimizzazione implica che i termini notidelle (dis)equazioni di vincolo non siano negativi (altrimentiverrebbe meno il significato economico di tali vincoli) Pertanto: viene attivata la ricerca (mediante FIND) degli elementi di b eventualemente negativi e, se questi sono presenti: è visualizzato un messaggio di errore, nel quale si dichiara che i termini noti ("componenti di b") non possono assumere valori negativi www.profland.135.it 15
  • Occorre verificare la compatibilità tra A e b,if ma==mb ovvero se il numero di righe delle due strutture (matriciale luna, vettoriale laltra) sia identico Analogamente, si rende necessaria la verifica della compatibilità tra A e c, ovvero se ilif na==nc numero di colonne delle due strutture (matriciale luna, vettoriale laltra) sia identico Qualora tale compatibilità manchi, • è predisposta la segnalazione di uno specifico MESSAGGIO DI ERRORE, • si pone illim=2, • si pongono gli output fo e x vettori vuoti www.profland.135.it 16
  • Costruzione della prima tavola A=[A, eye(ma)]; c=[-c,zeros(1,ma)]; Ab=[b,A]; T=[fo,c;Ab]; [mt,nt]=size(T); fo=0; Inizializzazione iB=na+1:na+ma; it=0; illim=0;Individuazione dellindice della variabile entrante[cmin,r]=min(T(1,2:nt)); cmin= valore più piccolo tra quellirt=r+1; selezionati; www.profland.135.it r = suo indice allinterno del vettore esaminato 17 da min
  • Iterazioni while cmin<0 & ~illim & it<maxit lim=find(T(2:mt,rt)>0) 0 1 isempty(lim)Individuazione dellindice Errore della variabile uscente Sostituzione della illim=1 variabile nella base Definizione delle variabili di output Individuazione dellindice della variabile entrante Incremento di rt e it, da utilizzare come parametri per il passo successivo 18
  • in matlab…% Individuazione dellindice della variabile uscente [rmin,k]=min(T(lim+1,1)./T(lim+1,rt)); k=lim(k); kt=k+1; T=gj1(T,rt,kt); % Sostituzione della variabile nella base iB(k)=r; % Definizione delle variabili di output fo=T(1,1); x=zeros(1,na+ma); x(iB)=T(2:mt,1); % Individuazione dellindice della variabile entrante [cmin,r]=min(T(1,2:nt)); % Incremento di rt e it, da utilizzare come parametri per il passo successivo rt=r+1; it=it+1; 19
  • Il file è stato scaricato/visualizzato in forma gratuita da Profland: http://profland.altervista.org sezione Profstudio http://profland.altervista.org/profstudio/profstudio.htm oppure da qualche mirror, come: www.profland.cjb.net www.profland.135.it o dalla pagina dedicata su slideshare.net: www.slideshare.net/profmanwww.profland.135.it 20