2020-07-13 14:44:15 +00:00
import {
Section ,
Latex ,
Panel ,
Todo ,
Timer ,
PLatex ,
TablePanel ,
LatexDefaultInline ,
ILatex ,
BLatex ,
BaseLink
} from "bluelib" ;
2020-06-18 17:46:40 +00:00
import Example from "../components/Example" ;
2020-06-18 15:23:31 +00:00
import Empty from "../components/OttimizzazioneLineare/Empty" ;
import Unbounded from "../components/OttimizzazioneLineare/Unbounded" ;
2020-06-18 17:46:40 +00:00
import Finite from "../components/OttimizzazioneLineare/Finite" ;
2020-06-18 15:23:31 +00:00
import Min from "../components/OttimizzazioneLineare/Min" ;
import Max from "../components/OttimizzazioneLineare/Max" ;
2020-07-13 14:44:15 +00:00
import Plus from "../components/Fisica/Plus" ;
import Minus from "../components/Fisica/Minus" ;
import ExampleBoxColor from "../components/ExampleBoxColor" ;
2020-03-09 23:19:30 +00:00
const r = String . raw ;
2020-03-09 23:18:13 +00:00
2020-06-18 17:46:40 +00:00
2020-05-28 17:58:41 +00:00
export default function ( props ) {
return (
< div >
< h1 > Ottimizzazione lineare intera < / h 1 >
2020-06-09 15:13:22 +00:00
< Section title = { "Informazioni" } >
< Panel title = { "Contatti" } >
< ul >
< li > < a href = { "mailto:stefano.novellani@unimore.it" } > Prof . Stefano Novellani < / a > < / l i >
< / u l >
< / P a n e l >
< Panel title = { "Archivio" } >
2020-05-28 17:58:41 +00:00
< p >
2020-06-09 15:13:22 +00:00
Se sei uno < b > studente dell 'Unimore</b>, puoi accedere all' < b > < a href = { "https://drive.google.com/drive/folders/13q-E6LvXca9uo3sATMZxrhJClqMB0wJu" } > archivio del corso su Google Drive < / a > < / b > .
2020-05-28 17:58:41 +00:00
< / p >
2020-06-09 15:13:22 +00:00
< / P a n e l >
< / S e c t i o n >
< Section title = { "Esame" } >
< Panel title = { "Scritto" } >
2020-05-28 17:58:41 +00:00
< p >
2020-06-09 15:13:22 +00:00
Uno scritto con tre domande :
2020-05-28 17:58:41 +00:00
< / p >
2020-06-09 15:13:22 +00:00
< ul >
< li > Progettazione concettuale e logica < / l i >
< li > Formulazione interrogazione < / l i >
< li > Una domanda tra :
< ul >
< li > Studio dato derivato < / l i >
< li > Progettazione fisica < / l i >
< li > Tecnologia database < / l i >
< / u l >
< / l i >
< / u l >
2020-05-28 17:58:41 +00:00
< / P a n e l >
2020-06-09 15:13:22 +00:00
< Panel title = { "Appelli" } >
2020-05-28 17:58:41 +00:00
< ol >
2020-07-03 15:08:40 +00:00
< li > < Timer to = { "2020-06-08 09:00" } / > < / l i >
< li > < Timer to = { "2020-06-25 09:00" } / > < / l i >
< li > < Timer to = { "2020-07-16 09:00" } / > < / l i >
2020-05-28 17:58:41 +00:00
< / o l >
< / P a n e l >
< / S e c t i o n >
< LatexDefaultInline . Provider value = { false } >
< Section title = { "Glossario" } >
2020-06-09 15:17:26 +00:00
< 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 >
< tr >
< td > < Latex > { r ` \m athbf{x}_B ` } < / L a t e x > < / t d >
< td / >
< td > Incognite in base < / t d >
< / t r >
< tr >
< td > < Latex > { r ` \m athbf{c}_B ` } < / L a t e x > < / t d >
< td / >
< td > Coefficienti della funzione obiettivo delle variabili in base < / t d >
< / t r >
< tr >
< td > < Latex > { r ` \m athbf{B} ` } < / L a t e x > < / t d >
< td / >
< td > Coefficienti dei vincoli delle variabili in base < / t d >
< / t r >
< tr >
< td > < Latex > { r ` \m athbf{x}_F ` } < / L a t e x > < / t d >
< td / >
< td > Incognite fuori base < / t d >
< / t r >
< tr >
< td > < Latex > { r ` \m athbf{c}_F ` } < / L a t e x > < / t d >
< td / >
< td > Coefficienti della funzione obiettivo delle variabili fuori base < / t d >
< / t r >
< tr >
< td > < Latex > { r ` \m athbf{F} ` } < / L a t e x > < / t d >
< td / >
< td > Coefficienti dei vincoli delle variabili fuori base < / 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 >
2020-07-03 15:08:40 +00:00
< tr >
< td > < Latex > { r ` \l floor x \r floor ` } < / L a t e x > < / t d >
< td > Arrotondamento per difetto di x < / t d >
< / t r >
< tr >
< td > < Latex > { r ` \l ceil x \r ceil ` } < / L a t e x > < / t d >
< td > Arrotondamento per eccesso di x < / t d >
< / t r >
< tr >
< td > < Latex > { r ` x - \l floor x \r floor ` } < / L a t e x > < / t d >
< td > Parte frazionaria di x ( se non è negativo ) < / t d >
< / t r >
2020-06-09 15:17:26 +00:00
< / t b o d y >
< / T a b l e P a n e l >
2020-05-28 17:58:41 +00:00
< / S e c t i o n >
< / 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 >
< Section title = { "Problemi di ottimizzazione lineare" } >
< Panel title = { "Cosa sono?" } >
< p >
2020-07-03 15:08:40 +00:00
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 >
Spesso sono detti anche < i > problemi di < abbr title = { "Linear Programming" } > LP < /abbr></i > .
2020-05-28 17:58:41 +00:00
< / p >
< / P a n e l >
< Panel title = { "Funzione obiettivo" } >
< p >
La funzione da < Min > minimizzare < /Min>/ < Max > massimizzare < / M a x > .
< / p >
< p >
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 > .
< / p >
2020-07-13 14:44:15 +00:00
< p >
In genere , la funzione obiettivo è scritta in questa forma :
< / p >
< p >
< Latex > { r ` z( \m athbf{x}) = c_1 \c dot x_1 + c_2 \c dot x_2 + \d ots + c_n \c dot x_n ` } < / L a t e x >
< / p >
2020-05-28 17:58:41 +00:00
< / P a n e l >
2020-07-13 14:44:15 +00:00
< Panel title = { "Gradiente" } >
2020-05-28 17:58:41 +00:00
< p >
2020-07-13 14:44:15 +00:00
< 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 .
2020-05-28 17:58:41 +00:00
< / p >
< p >
2020-07-13 14:44:15 +00:00
< Latex > { r ` \n abla (f) = \f rac{d f}{d x_1} I_1 + \f rac{d f}{d x_2} I_2 + \f rac{d f}{d x_n} I_n ` } < / L a t e x >
2020-05-28 17:58:41 +00:00
< / p >
2020-07-13 14:44:15 +00:00
< Example >
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 à .
< / 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 >
2020-05-28 17:58:41 +00:00
< / P a n e l >
2020-07-13 14:44:15 +00:00
< Panel title = { "Vincoli" } >
2020-05-28 17:58:41 +00:00
< p >
2020-07-13 14:44:15 +00:00
Equazioni e disequazioni a cui devono sottostare le incognite perchè esse formino una soluzione valida .
2020-05-28 17:58:41 +00:00
< / p >
< p >
2020-07-13 14:44:15 +00:00
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 > .
2020-05-28 17:58:41 +00:00
< / p >
< / P a n e l >
< Panel title = { "Poliedro" } >
< p >
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 .
< / p >
< p >
Può essere < i > < Finite / > < /i>, <i><Empty/ > < /i> oppure <i><Unbounded/ > < / i > .
< / p >
2020-07-03 15:08:40 +00:00
< Example >
Si chiama così perchè se si disegna su un piano cartesiano , esso forma una figura geometrica a più lati , ovvero un < a href = { "https://it.wikipedia.org/wiki/Poliedro" } > poliedro < / a > .
< / E x a m p l e >
2020-05-28 17:58:41 +00:00
< / P a n e l >
2020-07-13 14:44:15 +00:00
< Panel title = { "Valore ottimo" } >
2020-05-28 17:58:41 +00:00
< p >
2020-07-13 14:44:15 +00:00
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-28 17:58:41 +00:00
< / p >
< p >
2020-07-13 14:44:15 +00:00
In particolare , il valore ottimo è un < b > vertice < /b> del poliedro, detto <i>vertice ottimo</i > .
2020-05-28 17:58:41 +00:00
< / p >
< / P a n e l >
< / S e c t i o n >
< Section title = { "Forme di un problema di ottimizzazione" } >
< Panel title = { "Forma generale" } >
< p >
Un problema con :
< / p >
< ul >
2020-07-13 14:44:15 +00:00
< li > < Plus > Equazioni e disequazioni < / P l u s > < / l i >
< li > < Plus > Variabili non vincolate < / P l u s > < / l i >
2020-05-28 17:58:41 +00:00
< / u l >
< 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 >
< / P a n e l >
< Panel title = { "Forma canonica" } >
< p >
Un problema con :
< / p >
< ul >
2020-07-13 14:44:15 +00:00
< li > < Plus > Solo disequazioni < / P l u s > < / l i >
< li > < Minus > Vincoli di non - negatività sulle incognite < / M i n u s > < / l i >
2020-05-28 17:58:41 +00:00
< / u l >
< 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 >
< / P a n e l >
< Panel title = { "Forma standard" } >
< p >
Un problema con :
< / p >
< ul >
2020-07-13 14:44:15 +00:00
< li > < Minus > Solo equazioni < / M i n u s > < / l i >
< li > < Minus > Vincoli di non - negatività sulle incognite < / M i n u s > < / l i >
2020-05-28 17:58:41 +00:00
< / u l >
< 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 >
< / P a n e l >
< / S e c t i o n >
< Section title = { "Conversioni tra le forme" } >
< Panel title = { "Standard e generale" } >
< p >
Applica questa conversione a ogni equazione nel sistema :
< / p >
< p >
< Latex inline = { false } > { r ` a = b \L eftrightarrow
\ begin { cases }
a \ leq b \ \
a \ geq b
\ end { cases }
` }</Latex>
< / p >
< Example > Serve solo nella teoria per dimostrare che le forme sono equivalenti . < / E x a m p l e >
< / P a n e l >
< Panel title = { "Canonica e standard" } >
< p >
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 :
< / p >
< p >
< 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>
< / p >
< / P a n e l >
< Panel title = { "Generale e canonica" } >
< p >
Sdoppia ogni variabile non - vincolata in due variabili con vincolo di non - negatività :
< / p >
< p >
< Latex inline = { false } > { r ` \b egin{cases}
a = a ^ + - a ^ - \ \
a ^ + \ geq 0 \ \
a ^ - \ geq 0
\ end { cases } ` }</Latex>
< / p >
< / P a n e l >
< / S e c t i o n >
2020-07-13 14:44:15 +00:00
< Section >
Valore attuale
< / S e c t i o n >
< Section title = { "Tableau" } >
< Panel title = { "Cos'è?" } >
2020-05-28 17:58:41 +00:00
< p >
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 >
2020-07-13 14:44:15 +00:00
< / P a n e l >
< Panel title = { "Trasformazioni" } >
< p >
Un tableau è un sistema di equazioni in < b > forma matriciale completa < / b > .
< / p >
< p >
È possibile effettuare senza che cambi il risultato finale le seguenti trasformazioni :
< / p >
< ul >
< li > < b > Moltiplicare < / b > u n ' i n t e r a r i g a p e r u n a c o s t a n t e . < / l i >
< li > < b > Sommare < / b > u n a r i g a a u n ' a l t r a < / l i >
< / u l >
2020-05-28 17:58:41 +00:00
< Example >
2020-07-13 14:44:15 +00:00
Suona familiare ? Sì , lo abbiamo fatto anche in Algebra Lineare .
2020-05-28 17:58:41 +00:00
< / E x a m p l e >
< / P a n e l >
< Panel title = { "Variabili nella base" } >
< p >
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 .
< / p >
< p >
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 .
< / p >
< / P a n e l >
2020-07-13 14:44:15 +00:00
< Panel title = { "Valore attuale" } >
< p >
Il valore della funzione obiettivo che si otterrebbe se < b > tutte le variabili fuori base valessero 0 < / b > .
< / p >
< p >
Procedendo nella risoluzione ( descritta in seguito ) del tableau , questo valore aumenterà , fino a raggiungere il valore ottimo quando la risoluzione sarà completata .
< / p >
< / P a n e l >
2020-05-28 17:58:41 +00:00
< / S e c t i o n >
2020-07-13 14:44:15 +00:00
< Section >
< Panel color = { ExampleBoxColor } title = { "Un esempio" } >
2020-05-28 17:58:41 +00:00
< p >
2020-07-13 14:44:15 +00:00
Il sistema :
2020-05-28 17:58:41 +00:00
< / p >
2020-07-13 14:44:15 +00:00
< PLatex > { r `
\ begin { cases }
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
\ end { cases }
` }</PLatex>
2020-05-28 17:58:41 +00:00
< p >
2020-07-13 14:44:15 +00:00
Diventa il tableau :
< / p >
< table className = { "right" } >
< thead >
< tr >
< 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 >
< th > < Latex > s _3 < / L a t e x > < / t h >
< th > < abbr title = { "Termine noto" } > TN < / a b b r > < / t h >
< / t r >
< / t h e a d >
< tbody >
< tr >
< td > < Latex > 1 < / L a t e x > < / t d >
< td > < Latex > 0 < / L a t e x > < / t d >
< td style = { "background-color: rgba(0, 0, 255, 0.1);" } > < Latex > 1 < / L a t e x > < / t d >
< td style = { "background-color: rgba(0, 0, 255, 0.1);" } > < Latex > 0 < / L a t e x > < / t d >
< td style = { "background-color: rgba(0, 0, 255, 0.1);" } > < Latex > 0 < / L a t e x > < / t d >
< td style = { "background-color: rgba(255, 0, 0, 0.1);" } > < Latex > 3 < / L a t e x > < / t d >
< / t r >
< tr >
< td > < Latex > 0 < / L a t e x > < / t d >
< td > < Latex > 1 < / L a t e x > < / t d >
< td style = { "background-color: rgba(0, 0, 255, 0.1);" } > < Latex > 0 < / L a t e x > < / t d >
< td style = { "background-color: rgba(0, 0, 255, 0.1);" } > < Latex > 1 < / L a t e x > < / t d >
< td style = { "background-color: rgba(0, 0, 255, 0.1);" } > < Latex > 0 < / L a t e x > < / t d >
< td style = { "background-color: rgba(255, 0, 0, 0.1);" } > < Latex > 3 < / L a t e x > < / t d >
< / t r >
< tr >
< td > < Latex > 2 < / L a t e x > < / t d >
< td > < Latex > 2 < / L a t e x > < / t d >
< td style = { "background-color: rgba(0, 0, 255, 0.1);" } > < Latex > 0 < / L a t e x > < / t d >
< td style = { "background-color: rgba(0, 0, 255, 0.1);" } > < Latex > 0 < / L a t e x > < / t d >
< td style = { "background-color: rgba(0, 0, 255, 0.1);" } > < Latex > 1 < / L a t e x > < / t d >
< td style = { "background-color: rgba(255, 0, 0, 0.1);" } > < Latex > 7 < / L a t e x > < / t d >
< / t r >
< tr style = { "background-color: rgba(0, 255, 0, 0.1);" } >
< 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 >
< td > < Latex > 0 < / L a t e x > < / t d >
< td style = { "background-color: rgba(255, 255, 0, 0.2);" } > < Latex > 0 < / L a t e x > < / t d >
< / t r >
< / t b o d y >
< / t a b l e >
< ul >
< li >
< u style = { "color: #7dff7d;" } > Verde < / u > : f u n z i o n e o b i e t t i v o
< / l i >
< li >
< u style = { "color: #ffff7d;" } > Giallo < / u > : v a l o r e a t t u a l e d e l l a f u n z i o n e
< / l i >
< li >
< u style = { "color: #ff7d7d;" } > Rosso < / u > : t e r m i n i n o t i
< / l i >
< li >
< u style = { "color: #7d7dff;" } > Blu < / u > : V a r i a b i l i s l a c k
< / l i >
< / u l >
< / P a n e l >
< / S e c t i o n >
< Section title = { "Simplex primale" } >
< Panel title = { "Cos'è?" } >
< p >
Un algoritmo per trovare efficientemente il < b > valore ottimo < / b > e l e c o o r d i n a t e d i u n < b > v e r t i c e o t t i m o < / b > i n 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 .
2020-05-28 17:58:41 +00:00
< / p >
< Example >
2020-07-13 14:44:15 +00:00
Ricordi < BaseLink href = { "/vldigeometria" } > Gauss - Jordan < / B a s e L i n k > ? I l S i m p l e x è l a s t e s s a c o s a , a g g i u n g e n d o c r i t e r i p e r l a s e l e z i o n e d e l p i v o t .
2020-05-28 17:58:41 +00:00
< / E x a m p l e >
< Example title = { "Esempio" } >
2020-07-13 14:44:15 +00:00
< 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 > .
2020-05-28 17:58:41 +00:00
< / E x a m p l e >
2020-07-13 14:44:15 +00:00
< p >
Perchè sia possibile effettuare il Simplex è necessario che l ' < b > origine sia nel poliedro < / b > : p e r t a n t o , < b > n o n < / b > è p o s s i b i l e c h e u n p r o b l e m a r i s o l t o c o n i l S i m p l e x s i a < E m p t y / > .
< / p >
2020-05-28 17:58:41 +00:00
< / P a n e l >
< Panel title = { "I passi" } >
< ol >
< li > Trasforma il sistema in < b > forma standard < / b > . < / l i >
< 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 :
< ol >
< li >
< 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 / >
2020-07-13 14:44:15 +00:00
< aside > < u > Regola di Bland < / u > : 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 >
2020-05-28 17:58:41 +00:00
< / 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 >
< / l i >
2020-07-13 14:44:15 +00:00
< li > < u > Pivot < / u > : < b > t r a s f o r m a < / 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 m o d o c h e a b b i a n o 0 n e l l a c o l o n n a d e l l a v a r i a b i l e e n t r a n t e , t r a n n e n e l l a r i g a d e l l a v a r i a b i l e u s c e n t e , i n c u i a v r à 1 . < / l i >
2020-05-28 17:58:41 +00:00
< / o l >
< / l i >
< li > Il poliedro è < Finite / > : 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 s u o v e r t i c e o t t i m 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 >
< / o l >
< / P a n e l >
< 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 >
< / P a n e l >
< / S e c t i o n >
< Section title = { "Metodo delle due fasi" } >
< Panel title = { "Metodo delle due fasi" } >
< p >
2020-07-13 14:44:15 +00:00
Un < b > estensione del Simplex < / b > p e r p e r m e t t e r e l a r i s o l u z i o n e d i p r o b l e m i l a c u i < b > o r i g i n e n o n è u n a s o l u z i o n e a m m i s s i b i l e < / b > .
2020-05-28 17:58:41 +00:00
< / p >
< p >
Prevede l ' introduzione di un < i > problema ausiliario < /i>, le cui incognite sono dette <i>artificiali</i > .
< / p >
< p >
Il vettore delle incognite artificiali è solitamente chiamato < Latex > { r ` \m athbf{y} ` } < / L a t e x > .
< / p >
< / 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-07-13 14:44:15 +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 >
2020-05-28 17:58:41 +00:00
< li > Se il Simplex termina quando ci sono ancora < b > variabili artificiali nella base < /b>, allora il poliedro è <b><Empty/ > < / b > . < / l i >
< 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-07-13 14:44:15 +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-28 17:58:41 +00:00
< / o l >
< / P a n e l >
< / S e c t i o n >
< Section title = { "Rilassamento" } >
< Panel title = { "Cos'è?" } >
< p >
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 .
< / 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 >
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 > .
< / 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 }
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 }
` }</Latex>
< / E x a m p l e >
< / P a n e l >
< / S e c t i o n >
< Section title = { "Dualità" } >
< Panel title = { "Duale" } >
< p >
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 > .
< / 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 >
< 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 >
< / u l >
< / P a n e l >
2020-07-13 14:44:15 +00:00
< Panel title = { "Variabili e vincoli" } >
< p >
Variabili e vincoli del duale corrispondono rispettivamente a vincoli e variabili del primale .
< / p >
< p >
In particolare :
< / p >
< table >
< thead >
< tr >
< th > Primale < / t h >
< th > Duale < / t h >
< / t r >
< / t h e a d >
< tbody >
< tr >
< td > < Min / > < / t d >
< td > < Max / > < / t d >
< / t r >
< tr >
< td > < Max / > < / t d >
< td > < Min / > < / t d >
< / t r >
< tr >
< td > Vincolo < ILatex > \ leq < / I L a t e x > < / t d >
< td > Variabile < ILatex > \ leq < / I L a t e x > < / t d >
< / t r >
< tr >
< td > Vincolo < ILatex > \ geq < / I L a t e x > < / t d >
< td > Variabile < ILatex > \ geq < / I L a t e x > < / t d >
< / t r >
< tr >
< td > Vincolo < ILatex >= < / I L a t e x > < / t d >
< td > Variabile < b > libera < / b > < / t d >
< / t r >
< tr >
< td > Variabile < ILatex > \ leq < / I L a t e x > < / t d >
< td > Vincolo < ILatex > \ geq < / I L a t e x > < / t d >
< / t r >
< tr >
< td > Variabile < ILatex > \ geq < / I L a t e x > < / t d >
< td > Vincolo < ILatex > \ leq < / I L a t e x > < / t d >
< / t r >
< tr >
< td > Variabile < b > libera < / b > < / t d >
< td > Vincolo < ILatex >= < / I L a t e x > < / t d >
< / t r >
< / t b o d y >
< / t a b l e >
< / P a n e l >
2020-05-28 17:58:41 +00:00
< / S e c t i o n >
< Section title = { "Un po' di teoria" } >
< Panel title = { "Lemma di Farkas" } >
< p >
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 a n e l >
< Panel title = { "Dualità forte" } >
< p >
Il teorema che dimostra l ' equivalenza tra primale e duale .
< / p >
< 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 >
< 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 .
< / p >
< p >
< Todo > TODO : Dimostrazione cortina , ma sembra complicata . < / T o d o >
< / p >
< / P a n e l >
< 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 >
< / S e c t i o n >
< Section title = { "Simplex duale" } >
< Panel title = { "Cos'è?" } >
< p >
Un ' estensione al Simplex primale che opera sul problema duale .
< / p >
< / P a n e l >
< Panel title = { "Come funziona?" } >
< p >
2020-07-13 14:44:15 +00:00
Funziona esattamente come il Simplex primale , ma opera sul duale .
2020-05-28 17:58:41 +00:00
< / p >
< / P a n e l >
< / S e c t i o n >
< Section title = { "Analisi di sensibilità" } >
< Panel title = { "Cos'è?" } >
< p >
2020-07-03 15:08:40 +00:00
Un procedimento che misura di < b > quanto può variare < / b > i l t e r m i n e n o t o d i u n v i n c o l o < L a t e x > { r ` b _ i ` } < / L a t e x > o i l c o e f f i c i e n t e d e l l a f u n z i o n e o b i e t t i v o < L a t e x > { r ` c _ i ` } < / L a t e x > p r i m a c h e l a b a s e d e g e n e r i .
< / p >
< / P a n e l >
< / S e c t i o n >
< Section title = { "Ottimizzazione lineare intera" } >
< Panel title = { "Cos'è?" } >
< p >
Particolari problemi di ottimizzazione lineare in cui le < b > variabili sono vincolate ad essere numeri interi < / b > .
< / p >
< PLatex > { r `
\ mathbf { x } \ in \ mathbb { Z } ^ n
` }</PLatex>
< p >
Spesso detti anche < i > problemi di < abbr title = { "Integer Linear Programming" } > ILP < /abbr></i > .
< / p >
< / P a n e l >
< Panel title = { "Rilassamento lineare" } >
< p >
2020-07-13 14:44:15 +00:00
Un rilassamento che rimuove il < b > vincolo di integrità < / b > a u n p r o b l e m a , t r o v a n d o l a s u a < b > s o l u z i o n e c o n t i n u a < / b > .
2020-07-03 15:08:40 +00:00
< / p >
< / P a n e l >
< / S e c t i o n >
< Section title = { "Dal rilassamento alla soluzione" } >
< Panel title = { "Enumerazione totale" } >
< p >
Un < b > modo < / b > p e r p a s s a r e d a l l a s o l u z i o n e d e l r i l a s s a m e n t o a l l a s o l u z i o n e i n t e r a d i u n p r o b l e m a d i I L P .
2020-05-28 17:58:41 +00:00
< / p >
2020-07-03 15:08:40 +00:00
< p >
Consiste nel calcolare la soluzione di ogni singolo punto incluso nel poliedro , e selezionare la < Min > minore < /Min>/ < Max > maggiore < / M a x > .
< / p >
< p >
Trova < b > sicuramente < / b > l a s o l u z i o n e g i u s t a , m a i l c o s t o c o m p u t a z i o n a l e è e s p o n e n z i a l e < I L a t e x > O ( n ^ k ) < / I L a t e x > !
< / p >
< / P a n e l >
< Panel title = { "Arrotondamento" } >
< p >
Un altro < b > modo < / b > p e r p a s s a r e d a l l a s o l u z i o n e d e l r i l a s s a m e n t o a l l a s o l u z i o n e i n t e r a d i u n p r o b l e m a d i I L P .
< / p >
< p >
Consiste nell ' < b > arrotondare tutte le variabili al loro valore intero più vicino < / b > , e c a l c o l a r n e i l v a l o r e o t t i m o .
< / p >
< p >
Funziona bene per valori grandi , ma più essi si avvicinano allo 0 più l ' < b > errore diventa grande < / b > .
< / p >
< / P a n e l >
< Panel title = { "Piani secanti" } >
< p >
Un altro < b > modo < / b > a n c o r a p e r p a s s a r e d a l l a s o l u z i o n e d e l r i l a s s a m e n t o a l l a s o l u z i o n e i n t e r a d i u n p r o b l e m a d i I L P .
< / p >
< p >
Consiste nel tagliare il poliedro con nuovi vincoli ( < i > piani secanti < / i > ) c h e < b > r i d u c o n o l e p o s s i b i l i s o l u z i o n i c o n t i n u e < / b > m a n o n q u e l l e i n t e r e .
< / p >
< p >
Per selezionare i vincoli , si usano i < b > tagli di Gomory < / b > :
< / p >
< PLatex > { r `
\ sum _ { j \ in F } \ left ( \ left ( a _ { tj } - \ lfloor a _ { tj } \ rfloor \ right ) \ cdot x _j \ right ) \ geq ( b _t - \ lfloor b _t \ rfloor )
` }</PLatex>
< p >
Per ogni valore noto frazionario si viene quindi a creare < b > una nuova variabile in base < / b > e u n n u o v o v i n c o l o f o r m a t o d a l l ' o p p o s t o d i t u t t i i v a l o r i f r a z i o n a r i d e i c o e f f i c i e n t i f u o r i b a s e .
< / p >
< Example >
< p >
Il tableau :
< table >
< thead >
< tr >
< th > < BLatex > { r ` x_1 ` } < / B L a t e x > < / t h >
< th > < BLatex > { r ` x_2 ` } < / B L a t e x > < / t h >
< th > < BLatex > { r ` s_1 ` } < / B L a t e x > < / t h >
< th > < BLatex > { r ` s_2 ` } < / B L a t e x > < / t h >
< th > < abbr title = { "Termine noto" } > TN < / a b b r > < / t h >
< / t r >
< / t h e a d >
< tbody >
< tr >
< td > < BLatex > { r ` 1 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 1 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< / t r >
< tr >
< td > < BLatex > { r ` 1 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 1 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 3 ` } < / B L a t e x > < / t d >
< / t r >
< tr >
2020-07-13 14:44:15 +00:00
< td > < BLatex > { r ` \f rac{3}{2} ` } < / B L a t e x > < / t d >
2020-07-03 15:08:40 +00:00
< td > < BLatex > { r ` \f rac{1}{2} ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 1 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` \f rac{6}{5} ` } < / B L a t e x > < / t d >
< / t r >
< / t b o d y >
< / t a b l e >
< / p >
< p >
Diventa :
< table >
< thead >
< tr >
< th > < BLatex > { r ` x_1 ` } < / B L a t e x > < / t h >
< th > < BLatex > { r ` x_2 ` } < / B L a t e x > < / t h >
< th > < BLatex > { r ` s_1 ` } < / B L a t e x > < / t h >
< th > < BLatex > { r ` s_2 ` } < / B L a t e x > < / t h >
< th style = { "background-color: rgba(255, 255, 0, 0.1);" } > < BLatex > { r ` s_3 ` } < / B L a t e x > < / t h >
< th > < abbr title = { "Termine noto" } > TN < / a b b r > < / t h >
< / t r >
< / t h e a d >
< tbody >
< tr >
< td > < BLatex > { r ` 1 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 1 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< td style = { "background-color: rgba(255, 255, 0, 0.1);" } > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< / t r >
< tr >
< td > < BLatex > { r ` 1 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 1 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< td style = { "background-color: rgba(255, 255, 0, 0.1);" } > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 3 ` } < / B L a t e x > < / t d >
< / t r >
< tr >
2020-07-13 14:44:15 +00:00
< td > < BLatex > { r ` \f rac{3}{2} ` } < / B L a t e x > < / t d >
2020-07-03 15:08:40 +00:00
< td > < BLatex > { r ` \f rac{1}{2} ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 1 ` } < / B L a t e x > < / t d >
< td style = { "background-color: rgba(255, 255, 0, 0.1);" } > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` \f rac{6}{5} ` } < / B L a t e x > < / t d >
< / t r >
< tr style = { "background-color: rgba(255, 255, 0, 0.1);" } >
2020-07-13 14:44:15 +00:00
< td > < BLatex > { r ` - \f rac{1}{2} ` } < / B L a t e x > < / t d >
2020-07-03 15:08:40 +00:00
< td > < BLatex > { r ` - \f rac{1}{2} ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` 0 ` } < / B L a t e x > < / t d >
< td style = { "background-color: rgba(255, 255, 0, 0.2);" } > < BLatex > { r ` 1 ` } < / B L a t e x > < / t d >
< td > < BLatex > { r ` - \f rac{1}{5} ` } < / B L a t e x > < / t d >
< / t r >
< / t b o d y >
< / t a b l e >
< / p >
< / E x a m p l e >
2020-05-28 17:58:41 +00:00
< / P a n e l >
2020-07-13 14:44:15 +00:00
< Panel title = { "Divide et impera" } >
< p >
È possibile usare la tecnica < i > divide et impera < / i > p e r r e n d e r e p i ù e f f i c i e n t e l ' < b > e n u m e r a z i o n e t o t a l e < / b > .
< / p >
< p >
Si divide il problema principale ( trovare il valore ottimo di un problema di ILP ) in più sottoproblemi ( trovare il valore ottimo di un problema di ILP con una variabile impostata a un valore fisso ) .
< / p >
< p >
Si crea così un < b > albero < / b > .
< / p >
< p >
È possibile < b > chiudere in anticipo < /b> alcuni nodi dell'albero se il loro miglior possibile valore ottimo è inferiore a uno precedentemente trovato o se il loro poliedro è <Empty/ > .
< / p >
< p >
È possibile utilizzare diverse < b > strategie di esplorazione < / b > d e l l ' a l b e r o :
< ul >
< li > < b > depth - first < / b > : p e r m e t t e d i r a g g i u n g e r e i m m e d i a t a m e n t e a u n a s o l u z i o n e a c c e t t a b i l e ( m a n o n o t t i m a l e ) < / l i >
< li > < b > best - first < / b > : p e r m e t t e d i r a g g i u n g e r e p i ù v e l o c e m e n t e a l l a s o l u z i o n e c o r r e t t a < / l i >
< / u l >
< / p >
< / P a n e l >
< Panel title = { "Seca et impera" } >
< p >
È possibile combinare il metodo dei < b > tagli secanti < / b > c o n l a t e c n i c a < b > d i v i d e e t i m p e r a < / b > p e r r a g g i u n g e r e a n c o r a p i ù v e l o c e m e n t e a u n a s o l u z i o n e .
< / p >
< p >
Si effettuano < b > poche iterazioni < / b > d e l m e t o d o d e i t a g l i s e c a n t i , e s u l r i s u l t a t o d i q u e l l e i t e r a z i o n i s i a p p l i c a i l < b > d i v i d e e t i m p e r a < / b > .
< / p >
< / P a n e l >
< / S e c t i o n >
< Section title = { "Teoria dei grafi" } >
< Panel title = { "TODO" } >
< Todo > TODO : fare ? < / T o d o >
< / P a n e l >
2020-05-28 17:58:41 +00:00
< / S e c t i o n >
< / d i v >
)
2020-03-09 23:18:13 +00:00
}