2020-03-09 23:18:13 +00:00
import { Component } from 'preact'
2020-05-23 21:32:09 +00:00
import Split from "../components/old/split" ;
2020-05-23 22:53:01 +00:00
import Latex from "../components/Latex" ;
2020-05-23 21:32:09 +00:00
import Panel from "../components/old/panel" ;
2020-05-23 22:53:01 +00:00
import Example from "../components/example" ;
2020-05-23 21:32:09 +00:00
import Todo from "../components/old/todo" ;
import Minus from "../components/old/minus" ;
import Plus from "../components/old/plus" ;
import Code from "../components/old/code" ;
2020-05-23 22:53:01 +00:00
import Timer from "../components/old/timer" ;
import Image from "../components/Image" ;
2020-05-26 16:27:29 +00:00
import Empty from "../components/OttimizzazioneLineare/Empty" ;
2020-05-25 17:00:17 +00:00
import Unbounded from "../components/OttimizzazioneLineare/Unbounded" ;
import Min from "../components/OttimizzazioneLineare/Min" ;
import Max from "../components/OttimizzazioneLineare/Max" ;
2020-05-26 14:23:41 +00:00
import PLatex from "../components/PLatex" ;
2020-05-26 16:27:29 +00:00
import LatexDefaultInline from "../contexts/LatexDefaultInline" ;
import TablePanel from "../components/TablePanel" ;
import Finite from "../components/OttimizzazioneLineare/Finite" ;
2020-03-09 23:19:30 +00:00
const r = String . raw ;
2020-03-09 23:18:13 +00:00
export default class OttimizzazioneLineare extends Component {
render ( ) {
return (
< div >
2020-03-11 18:12:30 +00:00
< h1 > Ottimizzazione lineare intera < / h 1 >
2020-05-23 22:53:01 +00:00
< Split title = { "Unimore" } >
2020-03-09 23:19:30 +00:00
< Panel title = { "Videolezioni su YouTube" } >
< p >
2020-03-23 14:47:42 +00:00
Ho rimosso il rumore in sottofondo da tutti i video di Ricerca Operativa !
2020-03-11 16:15:17 +00:00
< / p >
< p >
2020-03-23 14:47:42 +00:00
< b > < a href = { "https://www.youtube.com/playlist?list=PLh93e8qjTszffkHNn-19CqUOhHFbhBlBh" } > Guardate i video qui ! < / a > < / b >
2020-03-09 23:19:30 +00:00
< / p >
< / P a n e l >
2020-05-23 22:53:01 +00:00
< Panel title = { "Prossimi appelli" } >
< ol >
< li > < Timer to = { "2020-06-08" } / > < / l i >
< li > < Timer to = { "2020-06-25" } / > < / l i >
< li > < Timer to = { "2020-07-14" } / > < / l i >
< / o l >
< / P a n e l >
2020-03-09 23:19:30 +00:00
< / S p l i t >
2020-05-26 16:27:29 +00:00
< LatexDefaultInline . Provider value = { false } >
< Split title = { "Glossario" } >
< TablePanel >
< thead >
< tr >
< th > < abbr title = { "Vettore / matrice" } > v < / a b b r > < / t h >
< th > < abbr title = { "Elemento singolo" } > s < / a b b r > < / t h >
< th > Significato < / t h >
< / t r >
< / t h e a d >
< tbody >
< tr >
< td > < Latex > { r ` \m athbf{x} ` } < / L a t e x > < / t d >
< td > < Latex > { r ` x_i ` } < / L a t e x > < / t d >
< td > Incognite < / t d >
< / t r >
< tr >
< td > < Latex > { r ` \m athbf{s} ` } < / L a t e x > < / t d >
< td > < Latex > { r ` s_i ` } < / L a t e x > < / t d >
< td > Variabili slack < / t d >
< / t r >
< tr >
< td > < Latex > { r ` \m athbf{c} ` } < / L a t e x > < / t d >
< td > < Latex > { r ` c_i ` } < / L a t e x > < / t d >
< td > Coefficienti della funzione obiettivo < / t d >
< / t r >
< tr >
< td > < Latex > { r ` \m athbf{A} ` } < / L a t e x > < / t d >
< td > < Latex > { r ` a_{ij} ` } < / L a t e x > < / t d >
< td > Coefficienti dei vincoli < / t d >
< / t r >
< tr >
< td > < Latex > { r ` \m athbf{b} ` } < / L a t e x > < / t d >
< td > < Latex > { r ` b_i ` } < / L a t e x > < / t d >
< td > Termini noti dei vincoli < / t d >
< / t r >
< tr >
< td > < Latex > { r ` \m athbf{y} ` } < / L a t e x > < / t d >
< td > < Latex > { r ` y_i ` } < / L a t e x > < / t d >
< td > Incognite artificiali < / t d >
< / t r >
< tr >
< td > < Latex > { r ` \m athbf{u} ` } < / L a t e x > < / t d >
< td > < Latex > { r ` u_i ` } < / L a t e x > < / t d >
< td > Coefficienti di rilassamento < / t d >
< / t r >
< tr >
< td / >
< td > < Latex > { r ` c_0 ` } < / L a t e x > < / t d >
< td > Valore ottimo di un problema < / t d >
< / t r >
< / t b o d y >
< / T a b l e P a n e l >
< TablePanel >
< thead >
< tr >
< th > Simboli < / t h >
< th > Significato < / t h >
< / t r >
< / t h e a d >
< tbody >
< tr >
< td > < Latex > { r ` \m athbf{c}^T \m athbf{x} ` } < / L a t e x > < / t d >
< td > Soluzione del problema < / t d >
< / t r >
< tr >
< td > < Latex > { r ` \m athbf{A} \m athbf{x} = \m athbf{b} ` } < / L a t e x > < / t d >
< td > Vincoli in forma standard < / t d >
< / t r >
< tr >
< td > < Latex > { r ` z( \d ots) ` } < / L a t e x > < / t d >
< td > Funzione obiettivo < / t d >
< / t r >
< tr >
< td > < Latex > { r ` \m athbf{u}^T \m athbf{b} ` } < / L a t e x > < / t d >
< td > Soluzione del problema duale < / t d >
< / t r >
< tr >
< td > < Latex > { r ` \m athbf{u}^T \m athbf{A} = \m athbf{c}^T ` } < / L a t e x > < / t d >
< td > Vincoli del problema duale in forma standard < / t d >
< / t r >
< / t b o d y >
< / T a b l e P a n e l >
< / S p l i t >
< / L a t e x D e f a u l t I n l i n e . P r o v i d e r >
2020-03-09 23:19:30 +00:00
< Split title = { "Le basi" } >
< Panel title = { "Funzione obiettivo" } >
< p >
La funzione obiettivo è la funzione con valore noto sconosciuto :
< / p >
< p >
< Latex > { r ` z = C_1 \c dot x_1 + C_2 \c dot x_2 + C_n \c dot x_n ` } < / L a t e x >
< / p >
< / P a n e l >
2020-05-26 14:23:41 +00:00
< / S p l i t >
< Split title = { "Problemi di ottimizzazione lineare" } >
< Panel title = { "Cosa sono?" } >
< p >
I problemi di ottimizzazione lineare sono problemi che cercano di < Min > minimizzare < /Min>/ < Max > massimizzare < /Max> il valore di una <i>funzione obiettivo</i > le cui incognite sono sottoposte a un < b > sistema di < i > vincoli < / i > < / b > .
< / p >
< / P a n e l >
< Panel title = { "Funzione obiettivo" } >
2020-03-09 23:19:30 +00:00
< p >
2020-05-26 14:23:41 +00:00
La funzione da < Min > minimizzare < /Min>/ < Max > massimizzare < / M a x > .
2020-03-09 23:19:30 +00:00
< / p >
< p >
2020-05-26 14:23:41 +00:00
Il vettore dei suoi coefficienti è detto < Latex > { r ` \m athbf{c} ` } < / L a t e x > , m e n t r e q u e l l o d e l l e s u e i n c o g n i t e < L a t e x > { r ` \ m a t h b f { x } ` } < / L a t e x > .
2020-03-09 23:19:30 +00:00
< / p >
2020-05-26 16:27:29 +00:00
< / P a n e l >
< Panel title = { "Vincoli" } >
2020-03-09 23:19:30 +00:00
< p >
2020-05-26 16:27:29 +00:00
Equazioni e disequazioni a cui devono sottostare le incognite perchè esse formino una soluzione valida .
< / p >
< p >
I loro coefficienti sono contenuti nella matrice < Latex > { r ` \m athbf{A} ` } < / L a t e x > , m e n t r e i l o r o t e r m i n i n o t i n e l v e t t o r e < L a t e x > { r ` \ m a t h b f { b } ` } < / L a t e x > .
< / p >
< / P a n e l >
< Panel title = { "Valore ottimo" } >
< p >
La < b > soluzione < / b > d i u n p r o b l e m a , r i c a v a b i l e d a l p r o d o t t o < L a t e x > { r ` \ m a t h b f { c } ^ T \ m a t h b f { x } ` } < / L a t e x > .
2020-05-26 14:23:41 +00:00
< / p >
< p >
Spesso , la funzione obiettivo è indicata con il nome < Latex > { r ` z( \d ots) ` } < / L a t e x > .
< / p >
< / P a n e l >
2020-05-26 16:27:29 +00:00
< Panel title = { "Poliedro" } >
2020-05-26 14:23:41 +00:00
< p >
2020-05-26 16:27:29 +00:00
L ' < b > insieme < / b > c h e r a c c h i u n d e t u t t e l e < b > s o l u z i o n i a m m i s s i b i l i < / b > d i u n p r o b l e m a .
2020-05-26 14:23:41 +00:00
< / p >
< p >
2020-05-26 16:27:29 +00:00
In particolare , il valore ottimo è un < b > vertice < /b> del poliedro, detto <i>vertice ottimo</i > .
< / p >
< p >
Può essere < i > < Finite / > < /i>, <i><Empty/ > < /i> oppure <i><Unbounded/ > < / i > .
2020-05-26 14:23:41 +00:00
< / p >
< / P a n e l >
< Panel title = { "Gradiente" } >
< p >
< b > Funzione < / b > d e l l a f u n z i o n e o b i e t t i v o c h e r e s t i t u i s c e l a d i r e z i o n e d e l s u o a u m e n t o p i ù v e l o c e .
< / p >
< p >
< Latex > { r ` \n abla f = \f rac{ \d elta f}{ \d elta x_1} \m athbf{I}_1 + \f rac{ \d elta f}{ \d elta x_2} \m athbf{I}_2 + \f rac{ \d elta f}{ \d elta x_n} \m athbf{I}_n ` } < / L a t e x >
2020-03-09 23:19:30 +00:00
< / p >
< Example >
2020-05-26 14:23:41 +00:00
La matrice < Latex > { r ` \m athbf{I} ` } < / L a t e x > è l a m a t r i c e i d e n t i t à .
2020-03-09 23:19:30 +00:00
< / E x a m p l e >
< Example >
Se la funzione obiettivo è < Latex > z = 2 w + 3 x + 4 y < / L a t e x > , i l s u o g r a d i e n t e è < L a t e x > { r ` \ n a b l a z = ( 2 , 3 , 4 ) ` } < / L a t e x > .
< / E x a m p l e >
< / P a n e l >
< / S p l i t >
2020-05-26 14:23:41 +00:00
< Split title = { "Forme di un problema di ottimizzazione" } >
< Panel title = { "Forma generale" } >
< p >
Un problema con :
< / p >
2020-03-10 20:59:40 +00:00
< ul >
2020-05-26 14:23:41 +00:00
< li > < b > Equazioni e disequazioni < / b > < / l i >
< li > < b > Variabili non vincolate < / b > < / l i >
2020-03-10 20:59:40 +00:00
< / u l >
2020-05-26 14:23:41 +00:00
< PLatex > { r ` min \l eft \{ \m athbf{c}^T \m athbf{x} : \m athbf{A} \m athbf{x} = b, \q uad \m athbf{A'} \m athbf{x} \g eq \m athbf{b'} \q uad x_j \g eq 0, \q uad j = 1 \d ots n \r ight \} ` } < / P L a t e x >
2020-03-10 20:59:40 +00:00
< / P a n e l >
2020-05-23 05:38:07 +00:00
< Panel title = { "Forma canonica" } >
2020-05-26 14:23:41 +00:00
< p >
Un problema con :
< / p >
2020-05-23 05:38:07 +00:00
< ul >
2020-05-26 14:23:41 +00:00
< li > < b > Solo disequazioni < / b > < / l i >
< li > < b > Vincoli di non - negatività sulle incognite < / b > < / l i >
2020-05-23 05:38:07 +00:00
< / u l >
2020-05-26 14:23:41 +00:00
< PLatex > { r ` min \l eft \{ \m athbf{c}^T \m athbf{x} : \m athbf{A} \m athbf{x} \g eq b, \q uad x_j \g eq 0, \q uad j = 1 \d ots n \r ight \} ` } < / P L a t e x >
2020-05-23 05:38:07 +00:00
< / P a n e l >
2020-05-26 14:23:41 +00:00
< Panel title = { "Forma standard" } >
< p >
Un problema con :
< / p >
2020-05-23 05:38:07 +00:00
< ul >
2020-05-26 14:23:41 +00:00
< li > < b > Solo equazioni < / b > < / l i >
< li > < b > Vincoli di non - negatività sulle incognite < / b > < / l i >
2020-05-23 05:38:07 +00:00
< / u l >
2020-05-26 14:23:41 +00:00
< PLatex > { r ` min \l eft \{ \m athbf{c}^T \m athbf{x} : \m athbf{A} \m athbf{x} = b, \q uad x_j \g eq 0, \q uad j = 1 \d ots n \r ight \} ` } < / P L a t e x >
2020-05-23 05:38:07 +00:00
< / P a n e l >
< / S p l i t >
2020-05-26 14:23:41 +00:00
< Split title = { "Conversioni tra le forme" } >
< Panel title = { "Standard e generale" } >
2020-03-10 20:59:40 +00:00
< p >
2020-05-26 14:23:41 +00:00
Applica questa conversione a ogni equazione nel sistema :
2020-03-10 20:59:40 +00:00
< / p >
< p >
2020-05-26 14:23:41 +00:00
< Latex inline = { false } > { r ` a = b \L eftrightarrow
\ begin { cases }
a \ leq b \ \
a \ geq b
\ end { cases }
` }</Latex>
2020-03-10 20:59:40 +00:00
< / p >
2020-05-26 14:23:41 +00:00
< Example > Serve solo nella teoria per dimostrare che le forme sono equivalenti . < / E x a m p l e >
2020-03-10 20:59:40 +00:00
< / P a n e l >
2020-05-26 14:23:41 +00:00
< Panel title = { "Canonica e standard" } >
2020-03-10 20:59:40 +00:00
< p >
2020-05-26 14:23:41 +00:00
Aggiungi una < i > variabile slack < / i > < L a t e x > { r ` s ` } < / L a t e x > < b > n o n - v i n c o l a t a < / b > a o g n i d i s e q u a z i o n e n e l s i s t e m a :
2020-03-11 11:37:34 +00:00
< / p >
< p >
2020-05-26 14:23:41 +00:00
< Latex inline = { false } > { r `
a \ leq b \ Leftrightarrow a + s = b
` }</Latex>
< / p >
< p >
< Latex inline = { false } > { r `
a \ geq b \ Leftrightarrow a - s = b
` }</Latex>
2020-03-11 11:37:34 +00:00
< / p >
2020-05-23 05:38:07 +00:00
< / P a n e l >
2020-05-26 14:23:41 +00:00
< Panel title = { "Generale e canonica" } >
< p >
Sdoppia ogni variabile non - vincolata in due variabili con vincolo di non - negatività :
< / p >
2020-05-25 17:00:17 +00:00
< p >
2020-05-26 14:23:41 +00:00
< Latex inline = { false } > { r ` \b egin{cases}
a = a ^ + - a ^ - \ \
a ^ + \ geq 0 \ \
a ^ - \ geq 0
\ end { cases } ` }</Latex>
2020-05-25 17:00:17 +00:00
< / p >
< / P a n e l >
2020-05-26 14:23:41 +00:00
< / S p l i t >
< Split title = { "La forma standard" } >
< Panel title = { "Tableau" } >
2020-03-11 11:37:34 +00:00
< p >
2020-05-23 05:38:07 +00:00
Un modo per rappresentare sistemi in forma standard , anche noto come < b > matrice equivalente completa < / b > d e l s i s t e m a .
< / p >
< Example >
2020-05-23 22:53:01 +00:00
Il sistema : < br / > < br / >
2020-05-26 14:23:41 +00:00
< Latex inline = { false } > { r `
2020-05-23 22:53:01 +00:00
\ begin { cases }
2020-05-26 14:23:41 +00:00
2000 x _1 + 1000 x _2 = z \ \
1 x _1 \ leq 3 \ \
1 x _2 \ leq 3 \ \
2 x _1 + 2 x _2 \ leq 7
2020-05-23 22:53:01 +00:00
\ end { cases }
` }</Latex><br/><br/>
2020-05-26 14:23:41 +00:00
Diventa il tableau : < br / > < br / >
2020-05-23 22:53:01 +00:00
< table class = { "right" } >
< thead >
< tr >
< th > < abbr title = { "Termine noto" } > TN < / a b b r > < / t h >
< th > < Latex > x _1 < / L a t e x > < / t h >
< th > < Latex > x _2 < / L a t e x > < / t h >
< th > < Latex > s _1 < / L a t e x > < / t h >
< th > < Latex > s _2 < / L a t e x > < / t h >
< / t r >
< / t h e a d >
< tbody >
< tr >
< td > < Latex > z < / L a t e x > < / t d >
< td > < Latex > 2000 < / L a t e x > < / t d >
< td > < Latex > 1000 < / L a t e x > < / t d >
< td > < Latex > 0 < / L a t e x > < / t d >
< td > < Latex > 0 < / L a t e x > < / t d >
< / t r >
< tr >
< td > < Latex > 3 < / L a t e x > < / t d >
< td > < Latex > 1 < / L a t e x > < / t d >
< td > < Latex > 0 < / L a t e x > < / t d >
< td > < Latex > 1 < / L a t e x > < / t d >
< td > < Latex > 0 < / L a t e x > < / t d >
< / t r >
< tr >
< td > < Latex > 3 < / L a t e x > < / t d >
< td > < Latex > 0 < / L a t e x > < / t d >
< td > < Latex > 1 < / L a t e x > < / t d >
< td > < Latex > 0 < / L a t e x > < / t d >
< td > < Latex > 1 < / L a t e x > < / t d >
< / t r >
< tr >
< td > < Latex > 7 < / L a t e x > < / t d >
< td > < Latex > 2 < / L a t e x > < / t d >
< td > < Latex > 2 < / L a t e x > < / t d >
< td > < Latex > 0 < / L a t e x > < / t d >
< td > < Latex > 0 < / L a t e x > < / t d >
< / t r >
< / t b o d y >
< / t a b l e >
2020-03-11 18:12:30 +00:00
< / E x a m p l e >
2020-03-10 20:59:40 +00:00
< / P a n e l >
2020-05-26 14:23:41 +00:00
< Panel title = { "Variabili nella base" } >
2020-05-23 22:53:01 +00:00
< p >
2020-05-26 14:23:41 +00:00
Variabili che hanno < b > tutti 0 e un solo 1 < / b > n e l l a l o r o c o l o n n a d e l t a b l e a u .
2020-05-23 22:53:01 +00:00
< / p >
< p >
2020-05-26 14:23:41 +00:00
La loro controparte sono le < i > variabili fuori base < / i > , c h e h a n n o q u a l s i a s i a l t r o v a l o r e .
2020-03-30 17:09:31 +00:00
< / p >
< / P a n e l >
2020-05-23 05:38:07 +00:00
< / S p l i t >
2020-05-26 16:27:29 +00:00
< Split title = { "Simplex primale" } >
2020-05-23 22:53:01 +00:00
< Panel title = { "Cos'è?" } >
2020-03-30 17:09:31 +00:00
< p >
2020-05-26 16:27:29 +00:00
Un algoritmo per < Min > minimizzare < /Min>/ < Max > massimizzare < / M a x > t r o v a r e e f f i c i e n t e m e n t e < b > v a l o r e e v e r t i c e o t t i m o < / b > d i p r o b l e m i d i o t t i m i z z a z i o n e l i n e a r e , d e r i v a t o d a G a u s s - J o r d a n .
2020-03-30 17:09:31 +00:00
< / p >
2020-05-23 05:38:07 +00:00
< Example >
2020-05-25 17:00:17 +00:00
E ' spiegato in modo semplice < a href = { "https://web.archive.org/web/20200523052252/https://www.cs.cmu.edu/~15451-f17/handouts/simplex.pdf" } > qui < /a>, e ci sono dei codici sorgenti di esempio <a href={"https:/ / www . cs . cmu . edu / ~ 15451 - f17 / handouts / simplexcodes / " } > qui < / a > .
2020-05-23 05:38:07 +00:00
< / E x a m p l e >
2020-05-26 14:23:41 +00:00
< Example title = { "Esempio" } >
< p >
< a href = { "https://i.imgur.com/1r405Mb.jpg" } > Questa < /a> è la soluzione passo per passo del problema 3 del file <a href={"https:/ / dolly . fim . unimore . it / 2019 / mod / resource / view . php ? id = 2716 " } > < code > Ex _LP _testo < / c o d e > < / a > .
< / p >
< / E x a m p l e >
2020-05-23 05:38:07 +00:00
< / P a n e l >
< Panel title = { "I passi" } >
2020-03-30 17:09:31 +00:00
< ol >
2020-05-23 05:38:07 +00:00
< li > Trasforma il sistema in < b > forma standard < / b > . < / l i >
2020-05-25 17:00:17 +00:00
< li > Trova tante variabili < b > linearmente indipendenti < /b> quante siano le righe: esse saranno la <i>base iniziale</i > . < / l i >
< li > Finchè ci sono variabili con coefficienti < Min > positivi < /Min>/ < Max > negativi < / M a x > n e l l a f u n z i o n e o b i e t t i v o :
2020-05-23 05:38:07 +00:00
< ol >
2020-05-25 17:00:17 +00:00
< li >
2020-05-26 16:27:29 +00:00
< b > Scegli < / b > l a p r i m a v a r i a b i l e f u o r i b a s e c o n c o e f f i c i e n t e < M i n > p o s i t i v o < / M i n > / < M a x > n e g a t i v o < / M a x > n e l l a f u n z i o n e o b i e t t i v o : e s s a è l a < i > v a r i a b i l e e n t r a n t e < / i > . < b r / >
< aside > < i > Regola di Bland < / i > : S i p o t r e b b e s c e g l i e r e q u a l s i a s i v a r i a b i l e c o m e e n t r a n t e , m a s c e g l i e n d o s e m p r e l a p r i m a a m m i s s i b i l e c i s i a s s i c u r a c h e l ' a l g o r i t m o t e r m i n i . < / a s i d e >
< / l i >
< li >
< b > Scegli < / b > l a v a r i a b i l e i n b a s e c o n i l m i n o r r a p p o r t o p o s i t i v o < L a t e x > { r ` \ f r a c { t e r m i n e \ n o t o } { c o e f f . \ v a r i a b i l e \ e n t r a n t e } ` } < / L a t e x > .
< aside > Se non sei riuscito a trovare nessuna variabile con un rapporto positivo , significa che il poliedro è < Unbounded / > . < / a s i d e >
2020-05-25 17:00:17 +00:00
< / l i >
2020-05-26 16:27:29 +00:00
< li > < u > Pivot < / u > : < b > r i s c r i v i < / b > t u t t e l e f u n z i o n i d e l s i s t e m a i n t e r m i n i d e l l a v a r i a b i l e e n t r a n t e . < / l i >
2020-05-23 05:38:07 +00:00
< / o l >
< / l i >
2020-05-26 14:23:41 +00:00
< li > I < b > termini noti dei vincoli < / b > s o n o l e c o o r d i n a t e d e l r i s u l t a t o , m e n t r e i l < b > t e r m i n e n o t o d e l l a f u n z i o n e o b i e t t i v o < / b > è i l v a l o r e o t t i m o . < / l i >
2020-03-30 17:09:31 +00:00
< / o l >
2020-05-26 14:23:41 +00:00
< Example >
2020-05-26 16:27:29 +00:00
È praticamente l ' algoritmo di Gauss - Jordan applicato al tableau , con delle regole aggiuntive per la decisione delle variabili di pivot .
2020-05-26 14:23:41 +00:00
< / E x a m p l e >
2020-03-30 17:09:31 +00:00
< / P a n e l >
2020-05-25 17:00:17 +00:00
< Panel title = { "Soluzioni di base degenerata" } >
< p >
Una soluzione con almeno una variabile di valore < Latex > 0 < / L a t e x > , d o v u t a a u n o o p i ù < b > v i n c o l i r i d o n d a n t i < / b > .
< / p >
< p >
Senza < b > Regola di Bland < / b > e i n p r e s e n z a d i v i n c o l i r i d o n d a n t i s i r i s c h i a d i t r o v a r s i a f a r e p i v o t i n f i n i t i .
< / p >
2020-03-30 22:37:46 +00:00
< / P a n e l >
< / S p l i t >
2020-05-23 05:38:07 +00:00
< Split title = { "Metodo delle due fasi" } >
< Panel title = { "Metodo delle due fasi" } >
2020-03-30 22:37:46 +00:00
< p >
2020-05-25 17:00:17 +00:00
Un estensione del Simplex per permettere la risoluzione di problemi la cui origine non è una soluzione ammissibile .
< / p >
< p >
2020-05-26 14:23:41 +00:00
Prevede l ' introduzione di un < i > problema ausiliario < /i>, le cui incognite sono dette <i>artificiali</i > .
< / p >
< p >
2020-05-26 16:27:29 +00:00
Il vettore delle incognite artificiali è solitamente chiamato < Latex > { r ` \m athbf{y} ` } < / L a t e x > .
2020-05-25 17:00:17 +00:00
< / p >
< Example >
E ' spiegato in modo semplice < a href = { "https://web.archive.org/web/20200523052252/https://www.cs.cmu.edu/~15451-f17/handouts/simplex.pdf" } > qui < / a > .
< / E x a m p l e >
< / P a n e l >
< Panel title = { "Procedimento" } >
< ol >
< li > Crea un nuovo tableau , < b > aggiungendo variabili artificiali < / b > i n m o d o d a a v e r e u n a b a s e a m m i s s i b i l e . < / l i >
< li > Sostituisci la vecchia funzione obiettivo con una nuova che < b > minimizzi la somma < / b > d i t u t t e l e v a r i a b i l i a r t i f i c i a l i . < / l i >
2020-05-26 16:27:29 +00:00
< li > < u > Fase 1 < / u > : < b > R i s o l v i < / b > i l n u o v o p r o b l e m a c o n i l s i m p l e x p r i m a l e . < / l i >
< li > Se il Simplex termina quando ci sono ancora < b > variabili artificiali nella base < /b>, allora il poliedro è <b><Empty/ > < / b > . < / l i >
2020-05-25 17:00:17 +00:00
< li > Una volta che le variabili artificiali sono fuori base , < b > elimina < /b> le loro colonne e la nuova funzione obiettivo.<br/ > < / l i >
< li > Riporta il tableau in forma base compiendo operazioni per < b > azzerare i coefficienti < / b > d e l l e v a r i a b i l i d i b a s e n e l l a f u n z i o n e o b i e t t i v o . < / l i >
2020-05-26 16:27:29 +00:00
< li > < u > Fase 2 < / u > : < b > R i s o l v i < / b > i l t a b l e a u c o n i l s i m p l e x p r i m a l e . < / l i >
2020-05-25 17:00:17 +00:00
< / o l >
< / P a n e l >
< / S p l i t >
2020-05-26 14:23:41 +00:00
< Split title = { "Rilassamento" } >
< Panel title = { "Cos'è?" } >
2020-05-25 17:00:17 +00:00
< p >
2020-05-26 14:23:41 +00:00
Una versione semplificata di un problema nella quale si < b > ignora la violazione < / b > d i u n o o p i ù v i n c o l i .
2020-05-25 17:00:17 +00:00
< / p >
< / P a n e l >
< Panel title = { "Rilassamento di Lagrange" } >
< p >
Un rilassamento che permette di misurare < b > di quanto i vincoli vengono violati < / b > .
< / p >
< p >
2020-05-26 14:23:41 +00:00
I vincoli , moltiplicati per < b > coefficienti di rilassamento < / b > , v e n g o n o i n s e r i t i n e l l a f u n z i o n e o b i e t t i v o .
< / p >
< p >
Il vettore dei coefficienti di rilassamento solitamente è indicato con < Latex > { r ` \m athbf{u} ` } < / L a t e x > .
2020-05-25 17:00:17 +00:00
< / p >
< Example >
< p >
Il sistema :
< / p >
< Latex inline = { false } > { r `
\ begin { cases }
z = 3 x _1 + 5 x _2 \ \
2 x _1 + 3 x _2 \ geq 12 \ \
- x _1 + 3 x _2 \ geq 3 \ \
x _1 \ geq 0 \ \
x _2 \ geq 0
\ end { cases }
` }</Latex>
< p >
diventa :
< / p >
< Latex inline = { false } > { r `
\ begin { cases }
2020-05-26 16:27:29 +00:00
z = 3 x _1 + 5 x _2 + u _1 ( 12 - 2 x _1 - 3 x _2 ) + u _2 ( 3 + x _1 - 3 x _2 ) \ \
2020-05-25 17:00:17 +00:00
x _1 \ geq 0 \ \
x _2 \ geq 0
\ end { cases }
` }</Latex>
< / E x a m p l e >
< / P a n e l >
2020-05-26 14:23:41 +00:00
< / S p l i t >
< Split title = { "Dualità" } >
2020-05-25 17:00:17 +00:00
< Panel title = { "Duale" } >
< p >
2020-05-26 16:27:29 +00:00
Il sistema che < b > < Min > massimizza < /Min>/ < Max > minimizza < / M a x > i m o l t i p l i c a t o r i d i r i l a s s a m e n t o < / b > d i u n p r o b l e m a d e t t o < i > p r i m a l e < / i > .
2020-05-25 17:00:17 +00:00
< / p >
< / P a n e l >
< Panel title = { "In termini matriciali" } >
< p >
Possiamo < b > trasporre < / b > i l t a b l e a u e s o s t i t u i r e l e v a r i a b i l i < L a t e x > { r ` x _ n ` } < / L a t e x > c o n v a r i a b i l i < L a t e x > { r ` u _ n ` } < / L a t e x > p e r o t t e n e r e i l s i s t e m a d u a l e !
< / p >
< p >
I maggiori e minori dei vincoli diventeranno maggiori e minori delle variabili e viceversa .
< / p >
< / P a n e l >
< Panel title = { "Feasibility del duale" } >
< ul >
< li > Se un problema ha una < b > soluzione finita < / b > , a l l o r a a n c h e i l s u o d u a l e l a a v r à . < / l i >
2020-05-26 16:27:29 +00:00
< li > Se un problema è < b > < Empty / > < /b>, allora il suo duale potrà essere <Empty/ > oppure < Unbounded / > . < / l i >
< li > Se un problema è < b > < Unbounded / > < /b>, allora il suo duale sarà certamente <Empty/ > . < / l i >
2020-05-25 17:00:17 +00:00
< / u l >
< / P a n e l >
< / S p l i t >
2020-05-26 16:27:29 +00:00
< Split title = { "Un po' di teoria" } >
2020-05-25 17:00:17 +00:00
< Panel title = { "Lemma di Farkas" } >
< p >
2020-05-26 16:27:29 +00:00
Una disuguaglianza lineare < Latex > { r ` c_0 \l eq \m athbf{c}^T \m athbf{x} ` } < /Latex> è verificata da tutti i punti di un poliedro non-<Empty/ > se e solo se esiste un vettore < Latex > { r ` u \i n \m athfrak{R}^m ` } < / L a t e x > t a l e c h e :
< / p >
< PLatex > { r ` \m athbf{c}^T \g eq \m athbf{u}^T \m athbf{A} ` } < / P L a t e x >
< PLatex > { r ` c_0 \l eq \m athbf{u}^T \m athbf{b} ` } < / P L a t e x >
< p >
< Todo > TODO : Cioè ? < / T o d o >
2020-05-25 17:00:17 +00:00
< / p >
< / P a n e l >
< Panel title = { "Dualità forte" } >
< p >
Il teorema che dimostra l ' equivalenza tra primale e duale .
< / p >
2020-05-26 14:23:41 +00:00
< p >
Se uno dei due problemi è finito , la soluzione di uno coincide con la soluzione dell ' altro .
< / p >
< p >
< Latex > { r ` \m athbf{c}^T \m athbf{x} = \m athbf{u}^T \m athbf{b} ` } < / L a t e x >
< / p >
2020-05-25 17:00:17 +00:00
< p >
< Todo > TODO : Anche qui c ' è una lunga dimostrazione ... < / T o d o >
< / p >
< / P a n e l >
< Panel title = { "Dualità debole" } >
< p >
Il teorema che dimostra che il valore della funzione obiettivo del duale ( di un qualsiasi tableau ) è sempre < Min > minore o uguale < /Min>/ < Max > maggiore o uguale < / M a x > a l l a s o l u z i o n e d e l c o r r i s p e t t i v o p r i m a l e .
2020-03-30 22:37:46 +00:00
< / p >
< p >
2020-05-25 17:00:17 +00:00
< Todo > TODO : Dimostrazione cortina , ma sembra complicata . < / T o d o >
2020-03-30 22:37:46 +00:00
< / p >
< / P a n e l >
2020-05-26 16:27:29 +00:00
< Panel title = { "Condizioni di ottimalità" } >
< p >
Il teorema che ci permette di passare dalla soluzione del duale alla soluzione del primale . < Todo > TODO : credo ? < / T o d o >
< / p >
< p >
Si deriva combinando le seguenti condizioni :
< / p >
< ul >
< li > Ammissibilità del primale : < Latex > { r ` \m athbf{A} \m athbf{X} \g eq \m athbf{b}, \q uad \m athbf{x} \g eq 0 ` } < / L a t e x > < / l i >
< li > Ammissibilità del duale : < Latex > { r ` \m athbf{u}^T \m athbf{A} \l eq \m athbf{c}^T, \q uad \m athbf{u} \g eq 0 ` } < / L a t e x > < / l i >
< li > Teorema della dualità forte : < Latex > { r ` \m athbf{c}^T \m athbf{x} = \m athbf{u}^T \m athbf{b} ` } < / L a t e x > ( a l l a s o l u z i o n e o t t i m a ) < / l i >
< / u l >
< p >
Ne risulta che una soluzione è ottima se e solo se :
< / p >
< PLatex > { r ` \l eft( \m athbf{c}^T - \m athbf{u}^T \m athbf{A} \r ight) \m athbf{x} = 0 ` } < / P L a t e x >
< PLatex > { r ` \m athbf{u}^T \l eft( \m athbf{A} \m athbf{x} - \m athbf{b} \r ight) = 0 ` } < / P L a t e x >
< / P a n e l >
2020-03-30 22:37:46 +00:00
< / S p l i t >
2020-03-09 23:18:13 +00:00
< / d i v >
)
}
}