Formulazione di un problema di programmazione lineare
Transcript
Formulazione di un problema di programmazione lineare
Formulazione di un problema di programmazione lineare Attraverso la programmazione lineare possono essere risolti numerosi problemi di ottimizzazione, facendo ricorso all’implementazione di opportuni algoritmi al calcolatore. L’aggettivo “lineare” è indicativo della tipologia di relazioni matematiche che legano vincoli e variabili del problema. I vantaggi di questo tipo di programmazione sono riconducibili principalmente alla possibilità che essa fornisce di approssimare una serie di problemi non lineari, molto complessi, riuscendo a fornire comunque una soluzione. Le fasi della programmazione lineare sono 5, e così schematizzabili: IDENTIFICAZIONE DEL PROBLEMA (Individuazione degli obiettivi da raggiungere) OSSERVAZIONE DEL SISTEMA (Raccolta dati e stima dei parametri) COSTRUZIONE DEL MODELLO MATEMATICO (Individuazione di variabili decisionali, funzione obiettivo e funzioni di vincolo) VALIDAZIONE DEL MODELLO (Calcolo soluzioni e verifica grado di approssimazione) Approssimazione eccessiva INGEGNERIZZAZIONE (Uso di uno strumento per velocizzare il calcolo) Dopo aver schematizzato le fasi della programmazione lineare, è opportuno cercare di esplicitare al meglio le caratteristiche di un tipico problema di ottimizzazione. La forma standard di un problema di ottimizzazione è la seguente: ∗ Funzione obiettivo z( x ) : ℜ n → ℜ n ∗ min z ( x ) ∗ ⎧A ⋅ x = b Sistema di vincoli: ⎨ ⎩ x≥0 Le due condizioni di linearità della funzione z(x) sono riassumibili nelle seguenti proprietà: 1. Proprietà additiva: z( x + y) = z( x ) + z( y) 2. Proprietà di proporzionalità z(λx ) = λ ⋅ z( x ) ∀x, y ∈ ℜ n ∀x ∈ ℜ n , ∀λ ∈ ℜ In generale, quindi, come si può evincere dalla formulazione del problema di ottimizzazione, occorre minimizzare la funzione obiettivo z(x). La seconda condizione del problema mette in relazione la matrice A(m*n), detta matrice dei coefficienti di vincolo, e il vettore b dei termini noti, attraverso il vettore x di n elementi che costituisce il vettore delle variabili del problema. Infine la terza condizione riguarda il vincolo di positività delle variabili dimensionali x. ESEMPIO DI FORMULAZIONE DI UN PROBLEMA DI P.L. – Modello di produzione Un’industria chimica produce tre tipi di composti A, B, C, utilizzando per la produzione due stabilimenti. Nel primo un’ora di lavorazione costa 50€ e vengono prodotti 3kg di composto A, 2kg di composto B e 3kg di composto C. Nel secondo impianto, dove un’ora di produzione ha un costo pari a 75€, ogni ora si producono 4kg di composto chimico A, 4kg di composto chimico B e 5kg di composto C. Dei tre composti chimici è richiesta una produzione giornaliera pari ad almeno 90, 120 e 100 kg, rispettivamente. La produzione dei tre composti comporta la generazione di sostanze inquinati; in particolare per ogni kg di composto A si producono 20g di sostanza inquinante, mentre per ogni kg di composto B o C la quantità di sostanza inquinante prodotta è pari a 10g. Una legge regionale sul controllo della qualità dell’ambiente impone che non è possibile produrre giornalmente più di 5 kg di sostanza inquinante. Considerando che ogni impianto può essere utilizzato a ciclo continuo, formulare il modello di programmazione lineare relativo alla pianificazione ottimale della produzione giornaliera dei tre composti chimici, con l’obiettivo di minimizzare i costi complessivi di lavorazione. Metodologia di risoluzione del problema Innanzitutto occorre definire la funzione obiettivo z(x) che si intende minimizzare, ed allo stesso tempo individuare le variabili decisionali x. Analizzando il problema, risulta opportuno scegliere come variabili decisionali le ore di lavorazione di ogni impianto, visto che tutte le altre grandezze in gioco sono ad esse riferite. Per cui : ∗ x 1 = n° di ore lavorative del I impianto; ∗ x 2 = n° di ore lavorative del II impianto. Poiché l’obiettivo è la minimizzazione dei costo, occorre rendere minima una funzione z(x) definita come somma dei costi della produzione del primo e del secondo impianto: z ( x ) = 50 ⋅ x 1 + 75 ⋅ x 2 dove 50€ e 75€ sono rispettivamente i costi di un’ora di lavorazione nel primo e nel secondo impianto. A questo punto occorre esplicitare i vincoli del problema. Innanzitutto esistono dei vincoli sulle quantità da produrre: 3 ⋅ x1 + 4 ⋅ x 2 ≥ 90 Prodotto A 2 ⋅ x1 + 4 ⋅ x 2 ≥ 120 Prodotto B 3 ⋅ x1 + 5 ⋅ x 2 ≥ 100 Prodotto C Ci sono poi altri vincoli sull’utilizzo degli stabilimenti. Poiché ogni impianto può essere a ciclo continuo le condizioni di vincolo sono esprimibili nel seguente modo: x1 ≤ 24 x 2 ≤ 24 Gli ultimi vincoli sono quelli relativi alla produzione di sostanze inquinanti. Le quantità di sostanze complessivamente prodotte dai due impianti valgono: 3 ⋅ 20g + 2 ⋅ 10g + 3 ⋅ 10g = 110g ⇒ I 4 ⋅ 20g + 4 ⋅ 10g + 5 ⋅ 10g = 170g ⇒ II Per cui il vincolo è così esprimibile: 110 ⋅ x1 + 170 ⋅ x 2 ≤ 5000 Una volta individuati gli elementi base che caratterizzano il problema, è possibile riscriverne la forma standard nel seguente modo: ⎧z( x ) = 50 ⋅ x1 + 75 ⋅ x 2 ⎪ min z( x ) ⎪ ⎪ 3x 1 + 4x 2 ≥ 90 ⎪ ⎪ 2x 1 + 4x 2 ≥ 120 ⎪ ⎨ 3x1 + 5x 2 ≥ 100 ⎪110 x + 170x ≤ 5000 1 2 ⎪ x1 ≤ 24 ⎪ ⎪ x 2 ≤ 24 ⎪ ⎪⎩ x 1 ≥ 0; x 2 ≥ 0 Il problema presenta otto condizioni di vincoli; il vettore x è così fatto: ⎡x ⎤ x = ⎢ 1⎥ ⎣x 2 ⎦ La matrice A dei coefficienti di vincolo e il vettore b dei termini noti sono i seguenti: 4 ⎤ ⎡ 3 ⎢ 2 4 ⎥⎥ ⎢ ⎢ 3 5 ⎥ A=⎢ ⎥ ⎢110 170⎥ ⎢ 1 0 ⎥ ⎥ ⎢ 1 ⎦⎥ ⎣⎢ 0 ⎡ 30 ⎤ ⎢ 120 ⎥ ⎥ ⎢ ⎢ 100 ⎥ b=⎢ ⎥ ⎢5000⎥ ⎢ 24 ⎥ ⎥ ⎢ ⎣⎢ 24 ⎦⎥ Gli ultimi due vincoli non vengono riportati nella matrice in quanto essi sono vincoli di positività espressi già nella forma standard del problema. Una delle condizioni principali dei problemi di ottimizzazione è che le condizioni di vincolo della forma standard siano tutte riportate sotto forma di equazioni; nel problema in esame, invece, i vincoli sono stati formulati come disequazioni matematiche. Per ovviare a tutto ciò si ricorre ad artifici algebrici di trasformazione, distinguendo prima, però, quattro casi diversi in cui ci si può trovare: CASO 1 : funzione obiettivo da massimizzare Può accadere che un problema di ottimizzazione richieda la massimizzazione e non la minimizzazione della funzione obiettivo; in tal caso si sfrutta la seguente propriètà che consente di ricondurre il problema nella forma nota: { } { max z( x ) : x ∈ ℜ n = − min z' ( x ) : x ∈ ℜ n } ovvero z' ( x ) = −z( x ) Per cui anziché fare il massimo della funzione z(x), si calcola il minimo dalla funzione z’(x)=-z(x). CASO 2A : vincoli espressi come disuguaglianze E’ un caso individuabile nel problema in esame. Innanzitutto occorre specificare qual è il segno della disuguaglianza. La procedura illustrata di seguito è riferita a disequazioni del tipo: ∑ a ij ⋅ x j ≤ b i Il problema si risolve introducendo una variabile ausiliaria definita nel seguente modo: s i = b i − ∑ a ij ⋅ x j con s i ≥ 0 , in maniera tale da poterla inserire nella formulazione del problema di P.L. CASO 2B : vincoli espressi come disuguaglianze La procedura illustrata di seguito è riferita a disequazioni del tipo: ∑ a ij ⋅ x j ≥ b i Il problema si risolve introducendo una variabile ausiliaria definita nel seguente modo: s i = ∑ a ij ⋅ x j − b i con s i ≥ 0 , in maniera tale da poterla inserire nella formulazione del problema di P.L. CASO 3 :condizione di positività non soddisfatta In questo caso si introducono ulteriori due variabili decisionali positive : x +j e x −j Per cui se x j ≤ 0 ⇒ x j = −( x +j − x −j ) e il vincolo si riscrive nella forma: ( x +j − x −j ) ≥ 0 Quindi le equazioni che rappresentano le condizioni di vincolo per il problema in same, viste le precedenti considerazioni diventano: 3 ⋅ x1 + 4 ⋅ x 2 ≥ 90 ⇒ 3 ⋅ x1 + 4 ⋅ x 2 − x 3 = 90 2 ⋅ x1 + 4 ⋅ x 2 ≥ 120 ⇒ 2 ⋅ x1 + 4 ⋅ x 2 − x 4 = 120 3 ⋅ x1 + 5 ⋅ x 2 ≥ 100 ⇒ 3 ⋅ x1 + 5 ⋅ x 2 − x 5 = 100 110 ⋅ x 1 + 170 ⋅ x 2 ≤ 5000 ⇒ 110 ⋅ x1 + 170 ⋅ x 2 + x 6 = 5000 x 1 ≤ 24 ⇒ x 1 + x 7 = 24 x 2 ≤ 24 ⇒ x 2 + x 8 = 24 Il vettore delle variabili decisionali ora è costituito da otto elementi; il vettore b è rimasto invariato, a differenza della matrice A che adesso è così rappresentabili: 4 −1 0 0 ⎡ 3 ⎢ 2 4 0 −1 0 ⎢ ⎢ 3 5 0 0 −1 A=⎢ ⎢110 170 0 0 0 ⎢ 1 0 0 0 0 ⎢ 1 0 0 0 ⎣⎢ 0 0 0 0 1 0 0 0 0 0 0 1 0 0⎤ 0⎥⎥ 0⎥ ⎥ 0⎥ 0⎥ ⎥ 1⎦⎥ ⎡ x1 ⎤ ⎢x ⎥ ⎢ 2⎥ ⎢x 3 ⎥ ⎢ ⎥ x x = ⎢ 4⎥ ⎢x 5 ⎥ ⎢ ⎥ ⎢x 6 ⎥ ⎢x ⎥ ⎢ 7⎥ ⎢⎣ x 8 ⎥⎦ Per trovare la soluzione del problema occorre prima di tutto distinguere tre diversi casi possibili: 1. m>n : i vincoli sono in numero maggiore rispetto alle incognite. Il problema non è risolvibile; tuttavia occorre accertarsi che qualche equazione di vincolo non sia ridondante; 2. m=n : il sistema è risolvibile se e solo se Det(A) ≠ 0; in tal caso la soluzione è unica; 3. m<n : è il caso più ricorrente ed è quello che si intende raggiungere attraverso la formulazione del problema. Le soluzioni sono infinite; fra di esse esiste la soluzione ottima che è quella che minimizza la funzione obiettivo. Affinché il problema possa essere risolto in questo caso occorre che sia ben posto, ovvero che : Rango(A)=m. Ciò vuol dire che nella matrice dei coefficienti esistono colonne linearmente indipendenti e da essa si può estrarre una sottomatrice quadrata di ordine m*m. Le soluzioni che si possono ottenere sono di due diversi tipi: ∗ soluzioni ammissibili, ovvero soluzioni che verificano tutti i vincoli; sono infinite. ∗ soluzioni di base; in tal caso è necessario verificare che siano un sottoinsieme delle soluzioni ammissibili. Queste soluzioni sono in numero di: n! m!⋅(n − m)! All’interno delle soluzioni di base è possibile rintracciare la soluzione ottima semplicemente sostituendo le k soluzioni base nella funzione obiettivo e individuando quella che fra tutte la rende minima. Partendo sempre dal presupposto che il problema sia ben posto, analizziamo di seguito la procedura per il calcolo delle soluzioni di base. Si definisce inizialmente un insieme s, detto insieme degli indici di base, del tipo: s = {s1 , s 2 , s 3 ........., s m } Data la matrice dei coefficienti A, si individuano le colonne linearmente indipendenti e, di volta in volta, si estraggono da A delle sottomatrici di ordine m*m costituite, appunto, solo dalle colonne indipendenti. Il vettore delle variabili decisionali può essere visto scomposto in due sottovettori, di cui uno che contiene le variabili di base e uno contenete le variabili non di base. La stessa cosa si fa per la matrice A, vista come l’insieme di due matrici costituite, una dalle colonne linearmente indipendenti, e l’altra dalle rimanenti colonne. Per chiarire il concetto si riportano i seguenti schemi indicativi: ⎡ x1 ⎤ ⎢x ⎥ xs = ⎢ 2 ⎥ ⎢ : ⎥ ⎢ ⎥ ⎣x m ⎦ ⎡ x m+1 ⎤ ⎢x ⎥ m+ 2 ⎥ ⎢ xg = Variabili non di base ⎢ : ⎥ ⎢ ⎥ ⎣ xn ⎦ Variabili di base ⎡ ⎢ ⎢ A=⎢ ⎢ ⎢ ⎢⎣ Matrice dei coefficienti As Ag ⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥⎦ Il problema di ottimizzazione nella forma standard diventa, quindi il seguente: min z( x ) ⎧ ⎪ z( x ) = C T ⋅ x = C C s g ⎪ ⎪ Sistema di vincoli ⎪ x ⎡ s⎤ ⎨A A g ⋅ ⎢ ⎥ = [s] ⎪ s ⎣x g ⎦ ⎪ ⎪x s ≥ 0 xg ≥ 0 ⎪ ⎩ [ [ ] ] Per trovare le soluzioni di base basta risolvere il seguente sistema: As ⋅ xs + Ag ⋅ x g = b A s −1 ⋅ A s ⋅ x s + A s−1 ⋅ A g ⋅ x g = A s−1 ⋅ b Se si pone la condizione che le variabili non di base sono nulle, si ottiene: x s = A s −1 ⋅ b SOLUZIONI DI BASE La soluzione di base è ammissibile se e solo se soddisfa il sistema di vincoli del problema. Innanzitutto si procede alla determinazione del numero di soluzioni di base esistenti per il problema in esame: n! 8! = = 28 m!⋅(n − m)! 6!⋅(8 − 6)! A partire dalla matrice dei coefficienti A, si estraggono delle sottomatrici di ordine m*m costituite da colonne linearmente indipendenti (determinante delle sottomatrici diverso da zero). Le variabili che non appartengono all’insieme degli indici di base sono le variabili non di base x g che vengono poste pari a zero. Il sistema diventa quindi risolvibile, poiché il numero di equazioni è in tal modo proprio pari al numero delle incognite. In ultima analisi si procede alla verifica dell’ammissibilità delle soluzioni accertando il soddisfacimento delle condizioni di vincolo originarie del problema. Per il caso in esame, uno degli insiemi degli indici di base è il seguente: s = {1,2,3,4,5,6} Per cui le variabili non di base sono x 7 e x 8 . Il determinante della sottomatrice estratta dalla matrice A dei coefficienti, quindi, è costituita dalle colonne 1,2,3,4,5 e 6 ; esse risultano linearmente indipendenti come si può verificare dal calcolo del determinante : 4 −1 0 0 ⎡ 3 ⎢ 2 4 0 −1 0 ⎢ ⎢ 3 5 0 0 −1 As = ⎢ ⎢110 170 0 0 0 ⎢ 1 0 0 0 0 ⎢ 1 0 0 0 ⎣⎢ 0 0⎤ 0⎥⎥ 0⎥ ⎥ 1⎥ 0⎥ ⎥ 0⎦⎥ Per cui il vettore delle soluzioni è il seguente: ⎡ 24 ⎤ ⎢ 24 ⎥ ⎢ ⎥ ⎢ 72 ⎥ ⎢ ⎥ 24 ⎥ ⎢ x= ⎢ 92 ⎥ ⎢ ⎥ ⎢− 1720⎥ ⎢ 0 ⎥ ⎢ ⎥ ⎣⎢ 0 ⎦⎥ det(A s ) = −1 Come è facilmente verificabile, sostituendo i valori delle variabili così ricavati nelle equazioni che costituiscono il sistema di vincoli, la soluzione trovata è ammissibile. Evidentemente si dovrebbero calcolare tutte le possibili soluzioni di base e sostituirle nella funzione obiettivo. La soluzione che ne consentirà la minimizzazione sarà quella ottima. Calcolo delle soluzioni di base di un problema di programmazione lineare Dopo aver analizzato nel dettaglio le caratteristiche principali di un problema di programmazione lineare, la sua formulazione e la procedura risolutiva, si vuole riportare un ulteriore esempio in cui, dato un sistema di vincoli, estrapolati da un problema lineare, si vogliono determinare le soluzioni di base. 2x 1 + 2 x 2 + x 3 + x 4 = 10 ⎧ ⎪ 2 x + 2 x + x + x + x = 12 ⎪ 1 2 3 4 5 ⎨ 4x 1 + x 2 + 2 x 3 + 3x 4 = 8 ⎪ ⎪⎩x 1 ≥ 0; x 2 ≥ 0; x 3 ≥ 0; x 4 ≥ 0; x 5 ≥ 0 Si definisce la matrice dei coefficienti A: ⎡ 2 2 1 1 0⎤ A = ⎢⎢2 2 1 1 1⎥⎥ ⎢⎣4 1 2 3 0⎥⎦ Le soluzioni di base sono,quindi, in numero di: n! 5! = = 10 m!⋅(n − m)! 3!⋅(5 − 3)! Il vettore dei termini noti b è uguale a: ⎡10⎤ b = ⎢⎢12⎥⎥ ⎢⎣ 8 ⎥⎦ Si sceglie come primo passo il seguente insieme degli indici di base: s = {2,3,5} Per cui la matrice di colonne linearmente indipendenti sarà: ⎡ 2 1 0⎤ A s = ⎢⎢1 1 1⎥⎥ ⎢⎣1 2 0⎥⎦ det(A s ) = −3 Per cui le variabili non di base, poste pari a zero, saranno x 1 e x 4 Il sistema di partenza, fatte le precedenti assunzioni, risulta : x2 = 4 ⎧ 2x 2 + x 3 = 10 ⎪ ⎨x 2 + x 3 + x 5 = 12 ⇒ x 3 = 2 ⎪ x + 3x = 8 x5 = 6 2 3 ⎩ Il vettore delle soluzioni sarà: ⎡0⎤ ⎢ 4⎥ ⎢ ⎥ x = ⎢ 2⎥ ⎢ ⎥ ⎢0⎥ ⎢⎣5⎥⎦ Il vettore precedente è ammissibile perché rispetta tutti i vincoli di positività delle variabili imposti dal problema. Si procede, quindi, al calcolo di una seconda soluzione scegliendo il seguente insieme di indici di base: s = {3,4,5} Per cui la matrice di colonne linearmente indipendenti sarà: ⎡1 1 0 ⎤ A s = ⎢⎢1 1 1⎥⎥ ⎢⎣2 3 0⎥⎦ det(A s ) = −1 Il vettore delle soluzioni risulta così fatto: ⎡ 0 ⎤ ⎢ 0 ⎥ ⎥ ⎢ x = ⎢ 22 ⎥ ⎥ ⎢ ⎢− 12⎥ ⎢⎣ 14 ⎥⎦ Come è possibile vedere dai valori assunti dalle variabili, in questo caso la soluzione non è ammissibile perché non vengono rispettati tutti i vincoli di positività. Interpretazione geometrica di un problema di programmazione lineare La soluzione geometrica di un problema lineare è teoricamente sempre calcolabile; tuttavia occorre tener presente l’impossibilità di rappresentare graficamente un problema con più di tre variabili. Prima di procedere con la risoluzione di una serie di esempi, occorre fornire dei concetti introduttivi e delle definizioni preliminari. Si definisce una combinazione convessa x, la seguente combinazione lineare di vettori : x = λ1 ⋅ x (1) + λ 2 ⋅ x ( 2) + λ3 ⋅ x (3) + ........... + λk ⋅ x ( k ) dove x (1) , x ( 2) , x (3) ,......x ( k ) ∈ ℜ n k ∑ λi = 1 0 ≤ λi ≤ 1 i =1 Allo stesso modo si definisce un insieme convesso Ω tale che i vettori x (i ) ad esso appartenenti abbiano combinazione lineare ancora in Ω . Ω ∈ ℜn è convesso ⇔ x (1) , x ( 2) , x (3) ,......x ( k ) ∈ Ω k ∑ λi = 1 0 ≤ λi ≤ 1 x = λ1 ⋅ x (1) i =1 + λ 2 ⋅ x ( 2) + λ3 ⋅ x (3) + ........... + λk ⋅ x ( k ) ∈Ω Si definisce, quindi l’insieme delle soluzioni ammissibili come l’intersezione fra due insiemi: Ω = Ωi ∩ Ω j { = {x ∈ ℜ Ωi = x ∈ ℜn : a i ⋅ x i = bi Ωj n } } :x ≥0 In particolare Ωi è un insieme a cui appartengono tutti i vettori x che soddisfano la condizione a i ⋅ x i = b i ; a i è il vettore riga della matrice dei coefficienti di vincolo che compaiono nella forma standard del problema. Ω j è invece l’insieme di tutti gli x che soddisfano la condizione di positività imposta nella formulazione standard del problema di p.l. Infine si definisce punto estremo x appartenente all’insieme Ω la combinazione lineare di n vettori xi che rappresenta una soluzione ammissibile del problema. In definitiva il procedimento logico che è alla base della risoluzione grafica di un problema di programmazione lineare è il seguente: 1. individuare l’insieme Ω ; 2. verificare che Ω non sia un insieme vuoto ( Ω ≠ 0 ); 3. individuare i punti estremi di Ω ; 4. ricercare la soluzione ottima. Esempio Risolvere il graficamente il problema di programmazione lineare con la seguente forma standard: ⎧z ( x ) = x 1 + 2 ⋅ x 2 ⎪ min z( x ) ⎪ ⎪ S.V. ⎪ ⎪ x 1 + 2x 2 ≤ 10 ⎪ ⎨ x1 + x 2 ≥ 1 ⎪ x2 ≤ 4 ⎪ x1 ≥ 0 ⎪ ⎪ x2 ≥ 0 ⎪ ⎪⎩ Ogni equazione di vincolo viene rappresentata come una retta su un diagramma cartesiano: ∗ r1 ⇒ x1 + 2x 2 = 10 ; ∗ r2 ⇒ x1 + x 2 = 1 ; ∗ r3 ⇒ x 2 = 4 ; ∗ r4 ⇒ x1 = 0 ; ∗ r5 ⇒ x 2 = 0 RAPPRESENTAZIONE GRAFICA DEI VINCOLI 16 14 12 X2 10 r1 r2 r3 8 6 E D 4 2 A C 0 -10 -5 0 B 5 X1 10 15 I punti A, B, C, D, ed E che delimitano il dominio Ω ne rappresentano, quindi, i suoi punti estremi. Le coordinate di tali punti sono le seguenti: ∗ A(0,1) ∗ B(1,0) ∗ C(10,0) ∗ D(2,4) ∗ E(0,4) Si procede sostituendo i valori assunti dai punti estremi, le cui coordinate sono proprio x1 e x2, nella funzione z(x) che si intende minimizzare. Per cui si ottiene: ∗ zA = 2 ∗ zB = 1 ∗ z C = 10 ∗ z D = 10 ∗ zE = 8 Il punto estremo del dominio che minimizza la funzione obiettivo è B; pertanto esso risulta essere soluzione ottima del problema. Graficamente è possibile determinare la soluzione ottima facendo alcune considerazioni sul gradiente del vettore dei coefficienti di x1 e x2. Per il caso in questione il vettore C è il seguente: ⎡1 ⎤ C=⎢ ⎥ ⎣ 2⎦ Si procede, quindi, rappresentando sullo stesso diagramma cartesiano, precedentemente riportato, il vettore C, e si individua fra le rette ortogonali alla direzione del gradiente, passanti per i punti estremi, la retta più bassa.