1
Fork 0
mirror of https://github.com/Steffo99/unisteffo.git synced 2024-11-23 08:24:20 +00:00
triennale-appunti-steffo/docs/route-OttimizzazioneLineare.chunk.3ebd7.esm.js

36 lines
29 KiB
JavaScript
Raw Normal View History

2020-05-28 17:58:41 +00:00
(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{"2e/m":function(l,n,i){"use strict";(function(l){var e=i("UrZR"),a=i.n(e);n.a=function(n){return l("table",{class:a.a.tablepanel},n.children)}}).call(this,i("hosL").h)},"3duz":function(l){l.exports={example:"example__9acWs"}},"8uYk":function(l){l.exports={box:"box__3cKyY",default:"default__v-emJ",red:"red__339Cz",orange:"orange__24_8v",yellow:"yellow__1Jo9W",lime:"lime__34yV5",cyan:"cyan__3RqLr",blue:"blue__13Wnj",magenta:"magenta__2tkzq"}},FP0W:function(l,n,i){"use strict";(function(l){var e=i("VQ5Y"),a=i.n(e);n.a=function(n){return l("abbr",{class:a.a.min,title:"In problemi in cui il primale è di minimizzazione."},n.children?n.children:"min")}}).call(this,i("hosL").h)},JESo:function(l){l.exports={inline:"inline__1yl8V",block:"block__fPiiB"}},JyGO:function(l,n,i){"use strict";(function(l){var e=i("VQ5Y"),a=i.n(e);n.a=function(n){return l("abbr",{class:a.a.finite,title:"I punti del poliedro sono finiti."},n.children?n.children:"finito")}}).call(this,i("hosL").h)},KN5E:function(l){l.exports={todo:"todo__2IWIS"}},OPqz:function(l,n,i){"use strict";(function(l){var e=i("TWV3"),a=i("hosL");n.a=function(n){return l(a.Fragment,null,l("h2",null,n.title),l(e.a,null,n.children))}}).call(this,i("hosL").h)},OmdA:function(l){l.exports={title:"title__3ZVpg",contents:"contents__20_NI"}},Q7TX:function(l,n,i){"use strict";(function(l){var e=i("JESo"),a=i.n(e),t=i("QRet"),o=i("8CDw"),u=i("wQ73");n.a=function(n){let i,e=Object(t.b)(o.a),r=Object(t.b)(u.a);return i=void 0===n.inline?r:n.inline,l("img",i?{src:`https://latex.codecogs.com/svg.latex?\\inline {\\color{${e}} ${n.children} }`,alt:n.children,title:n.children,class:a.a.latex+" "+a.a.inline}:{src:`https://latex.codecogs.com/svg.latex?{\\color{${e}} ${n.children} }`,alt:n.children,title:n.children,class:a.a.latex+" "+a.a.block})}}).call(this,i("hosL").h)},QNda:function(l,n,i){"use strict";(function(l){i.d(n,"a",(function(){return o}));var e=i("hosL"),a=i("e8JA"),t=i.n(a);class o extends e.Component{constructor(){super(),this.state={now:Date.now()},this.timer=null}componentDidMount(){this.timer=setInterval(()=>{this.setState({now:Date.now()})},1e3)}componentWillUnmount(){null!==this.timer&&clearInterval(this.timer)}render(){let n="Unknown date",i=t.a.timer,e={milliseconds:"?",seconds:"?",minutes:"?",hours:"?",days:"?"};if(this.props.to){n=new Date(this.props.to);let l=n-this.state.now;l>0?e={milliseconds:l%1e3,seconds:Math.floor(l/1e3)%60,minutes:Math.floor(l/6e4)%60,hours:Math.floor(l/36e5)%24,days:Math.floor(l/864e5)}:(e={milliseconds:0,seconds:0,minutes:0,hours:0,days:0},i+=" "+t.a.expired)}else i+=" "+t.a.unknown;return l("div",{class:i,title:n},l("div",{class:t.a.days+" "+t.a.count},e.days),l("div",{className:t.a.days+" "+t.a.text},"giorni"),l("div",{class:t.a.hours+" "+t.a.count},e.hours),l("div",{className:t.a.hours+" "+t.a.text},"ore"),l("div",{class:t.a.minutes+" "+t.a.count},e.minutes),l("div",{className:t.a.minutes+" "+t.a.text},"minuti"),l("div",{class:t.a.seconds+" "+t.a.count},e.seconds),l("div",{class:t.a.seconds+" "+t.a.text},"secondi"))}}}).call(this,i("hosL").h)},QRet:function(l,n,i){"use strict";function e(l,n){q.options.__h&&q.options.__h(z,l,w||n),w=0;var i=z.__H||(z.__H={__:[],__h:[]});return l>=i.__.length&&i.__.push({}),i.__[l]}function a(l){return w=1,t(v,l)}function t(l,n,i){var a=e(g++,2);return a.t=l,a.__c||(a.__c=z,a.__=[i?i(n):v(void 0,n),function(l){var n=a.t(a.__[0],l);a.__[0]!==n&&(a.__[0]=n,a.__c.setState({}))}]),a.__}function o(l,n){var i=e(g++,3);!q.options.__s&&_(i.__H,n)&&(i.__=l,i.__H=n,z.__H.__h.push(i))}function u(l,n){var i=e(g++,4);!q.options.__s&&_(i.__H,n)&&(i.__=l,i.__H=n,z.__h.push(i))}function r(l){return w=5,c((function(){return{current:l}}),[])}function s(l,n,i){w=6,u((function(){"function"==typeof l?l(n()):l&&(l.current=n())}),null==i?i:i.concat(l))}function c(l,n){var i=e(g++,7);return _(i.__H,n)?(i.__H=n,i.__h=l,i.__=l()):i.__}function d(l,n){return w=8,c((function(){return l}),n)}function m(l){var n=z.context[l.__c],i=e(g++,9);return i.__c=l,n?(null==i.__&&(i.__=!0,n.sub(z)
\begin{cases}
a \leq b\\
a \geq b
\end{cases}
`)))),l(o.a,null,"Serve solo nella teoria per dimostrare che le forme sono equivalenti.")),l(t.a,{title:"Canonica e standard"},l("p",null,"Aggiungi una ",l("i",null,"variabile slack")," ",l(a.a,null,Al(el||(el=yl`s`)))," ",l("b",null,"non-vincolata")," a ogni disequazione nel sistema:"),l("p",null,l(a.a,{inline:!1},Al(al||(al=yl`
a \leq b \Leftrightarrow a + s = b
`)))),l("p",null,l(a.a,{inline:!1},Al(tl||(tl=yl`
a \geq b \Leftrightarrow a - s = b
`))))),l(t.a,{title:"Generale e canonica"},l("p",null,"Sdoppia ogni variabile non-vincolata in due variabili con vincolo di non-negatività:"),l("p",null,l(a.a,{inline:!1},Al(ol||(ol=yl`\begin{cases}
a = a^+ - a^-\\
a^+ \geq 0\\
a^- \geq 0
\end{cases}`)))))),l(e.a,{title:"La forma standard"},l(t.a,{title:"Tableau"},l("p",null,"Un modo per rappresentare sistemi in forma standard, anche noto come ",l("b",null,"matrice equivalente completa")," del sistema."),l(o.a,null,"Il sistema:",l("br",null),l("br",null),l(a.a,{inline:!1},Al(ul||(ul=yl`
\begin{cases}
2000x_1 + 1000x_2 = z\\
1x_1 \leq 3\\
1x_2 \leq 3\\
2x_1 + 2x_2 \leq 7
\end{cases}
`))),l("br",null),l("br",null),"Diventa il tableau:",l("br",null),l("br",null),l("table",{class:"right"},l("thead",null,l("tr",null,l("th",null,l("abbr",{title:"Termine noto"},"TN")),l("th",null,l(a.a,null,"x_1")),l("th",null,l(a.a,null,"x_2")),l("th",null,l(a.a,null,"s_1")),l("th",null,l(a.a,null,"s_2")))),l("tbody",null,l("tr",null,l("td",null,l(a.a,null,"z")),l("td",null,l(a.a,null,"2000")),l("td",null,l(a.a,null,"1000")),l("td",null,l(a.a,null,"0")),l("td",null,l(a.a,null,"0"))),l("tr",null,l("td",null,l(a.a,null,"3")),l("td",null,l(a.a,null,"1")),l("td",null,l(a.a,null,"0")),l("td",null,l(a.a,null,"1")),l("td",null,l(a.a,null,"0"))),l("tr",null,l("td",null,l(a.a,null,"3")),l("td",null,l(a.a,null,"0")),l("td",null,l(a.a,null,"1")),l("td",null,l(a.a,null,"0")),l("td",null,l(a.a,null,"1"))),l("tr",null,l("td",null,l(a.a,null,"7")),l("td",null,l(a.a,null,"2")),l("td",null,l(a.a,null,"2")),l("td",null,l(a.a,null,"0")),l("td",null,l(a.a,null,"0"))))))),l(t.a,{title:"Variabili nella base"},l("p",null,"Variabili che hanno ",l("b",null,"tutti 0 e un solo 1")," nella loro colonna del tableau."),l("p",null,"La loro controparte sono le ",l("i",null,"variabili fuori base"),", che hanno qualsiasi altro valore."))),l(e.a,{title:"Simplex primale"},l(t.a,{title:"Cos'è?"},l("p",null,"Un algoritmo per ",l(d.a,null,"minimizzare"),"/",l(m.a,null,"massimizzare")," trovare efficientemente ",l("b",null,"valore ottimo")," di problemi di ottimizzazione lineare, derivato da Gauss-Jordan."),l("p",null,"Da esso si può anche ricavare un ",l("b",null,"vertice ottimo ammissibile"),".",l("br",null),"C'è la possibilità che ne esistano anche altri: quello ottenuto dipende da come è stata effettuata la scelta delle variabili entranti."),l(o.a,null,"E' spiegato in modo semplice ",l("a",{href:"https://web.archive.org/web/20200523052252/https://www.cs.cmu.edu/~15451-f17/handouts/simplex.pdf"},"qui"),", e ci sono dei codici sorgenti di esempio ",l("a",{href:"https://www.cs.cmu.edu/~15451-f17/handouts/simplexcodes/"},"qui"),"."),l(o.a,{title:"Esempio"},l("p",null,l("a",{href:"https://i.imgur.com/1r405Mb.jpg"},"Questa")," è la soluzione passo per passo del problema 3 del file ",l("a",{href:"https://dolly.fim.unimore.it/2019/mod/resource/view.php?id=2716"},l("code",null,"Ex_LP_testo")),"."))),l(t.a,{title:"I passi"},l("ol",null,l("li",null,"Trasforma il sistema in ",l("b",null,"forma standard"),"."),l("li",null,"Trova tante variabili ",l("b",null,"linearmente indipendenti")," quante siano le righe: esse saranno la ",l("i",null,"base iniziale"),"."),l("li",null,"Finchè ci sono variabili con coefficienti ",l(d.a,null,"positivi"),"/",l(m.a,null,"negativi")," nella funzione obiettivo:",l("ol",null,l("li",null,l("b",null,"Scegli")," la prima variabile fuori base con coefficiente ",l(d.a,null,"positivo"),"/",l(m.a,null,"negativo")," nella funzione obiettivo: essa è la ",l("i",null,"variabile entrante"),".",l("br",null),l("aside",null,l("i",null,"Regola di Bland"),": Si potrebbe scegliere qualsiasi variabile come entrante, ma scegliendo sempre la prima ammissibile ci si assicura che l'algoritmo termini.")),l("li",null,l("b",null,"Scegli")," la variabile in base con il minor rapporto positivo ",l(a.a,null,Al(rl||(rl=yl`\frac{termine\ noto}{coeff.\ variabile\ entrante}`))),".",l("aside",null,"Se non sei riuscito a trovare nessuna variabile con un rapporto positivo, significa che il poliedro è ",l(c.a,null),".")),l("li",null,l("u",null,"Pivot"),": ",l("b",null,"riscrivi")," tutte le funzioni del sistema in termini della variabile entrante."))),l("li",null,"Il poliedro è ",l(p.a,null),": i ",l("b",null,"termini noti dei vincoli")," sono le coordinate del suo vertice ottimo, mentre il ",l("b",null,"termine noto della funzione obiettivo")," è il valore ottimo.")),l(o.a,null,"È praticamente l'algoritmo di Gauss-Jordan applicato al tableau, con delle regole aggiuntive per la decisione delle variabili di pivot.")),l(t.a,{title:"Soluzioni di base degenerata"},l("p",null,"Una soluzione con almeno una variabile di valore ",l(a.a,null,"0"),"
\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}
`))),l("p",null,"diventa:"),l(a.a,{inline:!1},Al(ml||(ml=yl`
\begin{cases}
z = 3 x_1 + 5 x_2 + u_1 ( 12 - 2 x_1 - 3 x_2 ) + u_2 ( 3 + x_1 - 3 x_2 )\\
x_1 \geq 0\\
x_2 \geq 0
\end{cases}
`)))))),l(e.a,{title:"Dualità"},l(t.a,{title:"Duale"},l("p",null,"Il sistema che ",l("b",null,l(d.a,null,"massimizza"),"/",l(m.a,null,"minimizza")," i moltiplicatori di rilassamento")," di un problema detto ",l("i",null,"primale"),".")),l(t.a,{title:"In termini matriciali"},l("p",null,"Possiamo ",l("b",null,"trasporre")," il tableau e sostituire le variabili ",l(a.a,null,Al(fl||(fl=yl`x_n`)))," con variabili ",l(a.a,null,Al(bl||(bl=yl`u_n`)))," per ottenere il sistema duale!"),l("p",null,"I maggiori e minori dei vincoli diventeranno maggiori e minori delle variabili e viceversa.")),l(t.a,{title:"Feasibility del duale"},l("ul",null,l("li",null,"Se un problema ha una ",l("b",null,"soluzione finita"),", allora anche il suo duale la avrà."),l("li",null,"Se un problema è ",l("b",null,l(s.a,null)),", allora il suo duale potrà essere ",l(s.a,null)," oppure ",l(c.a,null),"."),l("li",null,"Se un problema è ",l("b",null,l(c.a,null)),", allora il suo duale sarà certamente ",l(s.a,null),".")))),l(e.a,{title:"Un po' di teoria"},l(t.a,{title:"Lemma di Farkas"},l("p",null,"Una disuguaglianza lineare ",l(a.a,null,Al(hl||(hl=yl`c_0 \leq \mathbf{c}^T \mathbf{x}`)))," è verificata da tutti i punti di un poliedro non-",l(s.a,null)," se e solo se esiste un vettore ",l(a.a,null,Al(pl||(pl=yl`u \in \mathfrak{R}^m`)))," tale che:"),l(f.a,null,Al(_l||(_l=yl`\mathbf{c}^T \geq \mathbf{u}^T \mathbf{A}`))),l(f.a,null,Al(vl||(vl=yl`c_0 \leq \mathbf{u}^T \mathbf{b}`))),l("p",null,l(u.a,null,"TODO: Cioè?"))),l(t.a,{title:"Dualità forte"},l("p",null,"Il teorema che dimostra l'equivalenza tra primale e duale."),l("p",null,"Se uno dei due problemi è finito, la soluzione di uno coincide con la soluzione dell'altro."),l("p",null,l(a.a,null,Al(gl||(gl=yl`\mathbf{c}^T \mathbf{x} = \mathbf{u}^T \mathbf{b}`)))),l("p",null,l(u.a,null,"TODO: Anche qui c'è una lunga dimostrazione..."))),l(t.a,{title:"Dualità debole"},l("p",null,"Il teorema che dimostra che il valore della funzione obiettivo del duale (di un qualsiasi tableau) è sempre ",l(d.a,null,"minore o uguale"),"/",l(m.a,null,"maggiore o uguale")," alla soluzione del corrispettivo primale."),l("p",null,l(u.a,null,"TODO: Dimostrazione cortina, ma sembra complicata."))),l(t.a,{title:"Condizioni di ottimalità"},l("p",null,"Il teorema che ci permette di passare dalla soluzione del duale alla soluzione del primale. ",l(u.a,null,"TODO: credo?")),l("p",null,"Si deriva combinando le seguenti condizioni:"),l("ul",null,l("li",null,"Ammissibilità del primale: ",l(a.a,null,Al(zl||(zl=yl`\mathbf{A} \mathbf{X} \geq \mathbf{b}, \quad \mathbf{x} \geq 0`)))),l("li",null,"Ammissibilità del duale: ",l(a.a,null,Al(xl||(xl=yl`\mathbf{u}^T \mathbf{A} \leq \mathbf{c}^T, \quad \mathbf{u} \geq 0`)))),l("li",null,"Teorema della dualità forte: ",l(a.a,null,Al(ql||(ql=yl`\mathbf{c}^T \mathbf{x} = \mathbf{u}^T \mathbf{b}`)))," (alla soluzione ottima)")),l("p",null,"Ne risulta che una soluzione è ottima se e solo se:"),l(f.a,null,Al(wl||(wl=yl`\left( \mathbf{c}^T - \mathbf{u}^T \mathbf{A} \right) \mathbf{x} = 0`))),l(f.a,null,Al(Tl||(Tl=yl`\mathbf{u}^T \left( \mathbf{A} \mathbf{x} - \mathbf{b} \right) = 0`))))),l(e.a,{title:"Simplex duale"},l(t.a,{title:"Cos'è?"},l("p",null,"Un'estensione al Simplex primale che opera sul problema duale.")),l(t.a,{title:"Come funziona?"},l("p",null,"Funziona esattamente come il Simplex primale, ma opera sulle righe invece che sulle colonne, cercando di rendere ",l(d.a,null,"positivi"),"/",l(m.a,null,"negativi")," tutti i termini noti."),l(o.a,null,"Significa che si possono moltiplicare tutti i valori di una riga per lo stesso numero e il risultato non cambia...?"))),l(e.a,{title:"Analisi di sensibilità"},l(t.a,{title:"Cos'è?"},l("p",null,"Un procedimento che misura di ",l("b",null,"quanto può variare")," il termine noto di un vincolo ",l(a.a,null,Al(Ll||(Ll=yl`b_i`)))," o il coefficiente della funzione obiettivo ",l(a.a,null,Al(Sl||(Sl=yl`c_i`)))," prima che la base degeneri. ",l(u.a,null,"TODO: verificare")))))}}.call(this,i("hosL").h)},htlC:function(l){l.ex
//# sourceMappingURL=route-OttimizzazioneLineare.chunk.3ebd7.esm.js.map