mirror of
https://github.com/Steffo99/unisteffo.git
synced 2024-11-26 09:54:19 +00:00
update...?
This commit is contained in:
parent
69242545e6
commit
6a8b39e276
3 changed files with 130 additions and 146 deletions
File diff suppressed because one or more lines are too long
|
@ -123,6 +123,10 @@ table {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
.left {
|
.left {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import Example from "../components/example";
|
||||||
import Todo from "../components/todo";
|
import Todo from "../components/todo";
|
||||||
import Minus from "../components/minus";
|
import Minus from "../components/minus";
|
||||||
import Plus from "../components/plus";
|
import Plus from "../components/plus";
|
||||||
|
import Code from "../components/code";
|
||||||
|
|
||||||
const r = String.raw;
|
const r = String.raw;
|
||||||
|
|
||||||
|
@ -56,146 +57,7 @@ export default class OttimizzazioneLineare extends Component {
|
||||||
</Example>
|
</Example>
|
||||||
</Panel>
|
</Panel>
|
||||||
</Split>
|
</Split>
|
||||||
<Split title={"La forma standard"}>
|
<Split title={"Forme di un sistema"}>
|
||||||
<Panel title={"Condizioni"}>
|
|
||||||
<p>
|
|
||||||
Un sistema è in <i>forma standard</i> quando ha:
|
|
||||||
</p>
|
|
||||||
<ul>
|
|
||||||
<li>Solo equazioni</li>
|
|
||||||
<li>Tutte le variabili maggiori di zero</li>
|
|
||||||
</ul>
|
|
||||||
</Panel>
|
|
||||||
<Panel title={"Slack"}>
|
|
||||||
<p>
|
|
||||||
Possiamo trasformare una disequazione in equazione introducendo variabili <i>slack</i>:
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<Latex>{r`3x + 2y \leq 15 \implies 3x + 2y + s_1 = 15`}</Latex>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
In seguito, possiamo riscrivere tutte le funzioni in termini delle variabili slack.
|
|
||||||
</p>
|
|
||||||
<Example>
|
|
||||||
Si ottiene qualcosa come <Latex>{r`z = -2 s_1 - 3 s_2 + 40`}</Latex>.
|
|
||||||
</Example>
|
|
||||||
</Panel>
|
|
||||||
<Panel title={"Tableu"}>
|
|
||||||
<p>
|
|
||||||
Un modo per rappresentare sistemi in forma standard.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<table class={"right"}>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th/>
|
|
||||||
<th><Latex>x</Latex></th>
|
|
||||||
<th><Latex>y</Latex></th>
|
|
||||||
<th><Latex>s_1</Latex></th>
|
|
||||||
<th><Latex>s_2</Latex></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>obj:</td>
|
|
||||||
<td><Latex>80</Latex></td>
|
|
||||||
<td><Latex>70</Latex></td>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td/>
|
|
||||||
<td><Latex>3</Latex></td>
|
|
||||||
<td><Latex>2</Latex></td>
|
|
||||||
<td><Latex>1</Latex></td>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td/>
|
|
||||||
<td><Latex>2</Latex></td>
|
|
||||||
<td><Latex>3</Latex></td>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
<td><Latex>1</Latex></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</p>
|
|
||||||
<Example>
|
|
||||||
E' la matrice equivalente completa del sistema!
|
|
||||||
</Example>
|
|
||||||
<p>
|
|
||||||
Riscrivendo in termini delle variabili slack, otteniamo:
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<table class={"right"}>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th/>
|
|
||||||
<th><Latex>x</Latex></th>
|
|
||||||
<th><Latex>y</Latex></th>
|
|
||||||
<th><Latex>s_1</Latex></th>
|
|
||||||
<th><Latex>s_2</Latex></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>obj:</td>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
<td><Latex>-20</Latex></td>
|
|
||||||
<td><Latex>-10</Latex></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td/>
|
|
||||||
<td><Latex>1</Latex></td>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
<td><Latex>{r`-\frac{3}{5}`}</Latex></td>
|
|
||||||
<td><Latex>{r`\frac{2}{5}`}</Latex></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td/>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
<td><Latex>1</Latex></td>
|
|
||||||
<td><Latex>{r`\frac{2}{5}`}</Latex></td>
|
|
||||||
<td><Latex>{r`-\frac{3}{5}`}</Latex></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</p>
|
|
||||||
<Example>
|
|
||||||
Abbiamo appena applicato Gauss-Jordan, trovando la matrice inversa.
|
|
||||||
</Example>
|
|
||||||
</Panel>
|
|
||||||
</Split>
|
|
||||||
<Split title={"Un po' di Algebra Lineare"}>
|
|
||||||
<Panel title={"Base"}>
|
|
||||||
<p>
|
|
||||||
Insieme di <Latex>n</Latex> colonne lunghe <Latex>n</Latex> linearmente indipendenti.
|
|
||||||
</p>
|
|
||||||
</Panel>
|
|
||||||
<Panel title={"Soluzione di base"}>
|
|
||||||
<p>
|
|
||||||
Soluzione ottenuta dalla seguente formula:
|
|
||||||
</p>
|
|
||||||
<ol>
|
|
||||||
<li><Latex>{r`A \cdot x = B`}</Latex></li>
|
|
||||||
<li><Latex>{r`B \cdot x_B + F \cdot x_F = b`}</Latex></li>
|
|
||||||
<li><Latex>{r`x_B = B^{-1} \cdot b - B^{-1} \cdot x_F`}</Latex></li>
|
|
||||||
</ol>
|
|
||||||
<p>
|
|
||||||
Dove:
|
|
||||||
</p>
|
|
||||||
<ul>
|
|
||||||
<li><Latex>{r`A`}</Latex> è la matrice equivalente</li>
|
|
||||||
<li><Latex>{r`b`}</Latex> è la colonna dei valori noti</li>
|
|
||||||
<li><Latex>{r`B`}</Latex> è la matrice delle colonne della base</li>
|
|
||||||
<li><Latex>{r`F`}</Latex> è la matrice delle colonne fuoribase</li>
|
|
||||||
<li><Latex>{r`x_B`}</Latex> sono le incognite relative alla base</li>
|
|
||||||
<li><Latex>{r`x_F`}</Latex> sono le incognite relative ai valori fuoribase</li>
|
|
||||||
</ul>
|
|
||||||
</Panel>
|
|
||||||
</Split>
|
|
||||||
<Split title={"Forme"}>
|
|
||||||
<Panel title={"Forma standard"}>
|
<Panel title={"Forma standard"}>
|
||||||
<ul>
|
<ul>
|
||||||
<li><Minus>Solo equazioni</Minus></li>
|
<li><Minus>Solo equazioni</Minus></li>
|
||||||
|
@ -211,24 +73,142 @@ export default class OttimizzazioneLineare extends Component {
|
||||||
<Panel title={"Forma generale"}>
|
<Panel title={"Forma generale"}>
|
||||||
<ul>
|
<ul>
|
||||||
<li><Plus>Equazioni e disequazioni</Plus></li>
|
<li><Plus>Equazioni e disequazioni</Plus></li>
|
||||||
<li><Plus>Tutte le variabili maggiori di zero</Plus></li>
|
<li><Plus>Variabili con qualsiasi valore</Plus></li>
|
||||||
</ul>
|
</ul>
|
||||||
</Panel>
|
</Panel>
|
||||||
</Split>
|
</Split>
|
||||||
<Split title={"Equivalenza di forma"}>
|
<Split title={"Equivalenza di forma"}>
|
||||||
<Panel title={"Da generale a canonica"}>
|
<Panel title={"Da standard a generale"}>
|
||||||
<p>
|
<p>
|
||||||
Sostituiamo le variabili potenzialmente negative (unconstrained) <Latex>{r`x_j`}</Latex> con due variabili <Latex>{r`x_j^+`}</Latex> e <Latex>{r`x_j^-`}</Latex>.
|
Convertiamo ogni equazione <Latex>{r`=`}</Latex> in due disequazioni <Latex>{r`\leq`}</Latex> e <Latex>{r`\geq`}</Latex>,
|
||||||
</p>
|
</p>
|
||||||
|
<Example>Why would you ever do that?!</Example>
|
||||||
</Panel>
|
</Panel>
|
||||||
<Panel title={"Da canonica a standard"}>
|
<Panel title={"Da canonica a standard"}>
|
||||||
<p>
|
<p>
|
||||||
Convertiamo le disequazioni in equazioni aggiungendo una variabile slack.
|
Convertiamo le disequazioni in equazioni aggiungendo una variabile slack.
|
||||||
</p>
|
</p>
|
||||||
|
<Example>
|
||||||
|
<Latex>{r`a \leq 3`}</Latex> diventa <Latex>{r`a + s_1 = 3`}</Latex>.
|
||||||
|
</Example>
|
||||||
</Panel>
|
</Panel>
|
||||||
<Panel title={"Da standard a generale"}>
|
<Panel title={"Da generale a canonica"}>
|
||||||
<p>
|
<p>
|
||||||
Convertiamo ogni equazione <Latex>{r`=`}</Latex> in due disequazioni <Latex>{r`\leq`}</Latex> e <Latex>{r`\geq`}</Latex>,
|
Sostituiamo le variabili potenzialmente negative (unconstrained) <Latex>{r`x_j`}</Latex> con due variabili <Latex>{r`x_j^+`}</Latex> e <Latex>{r`x_j^-`}</Latex>.
|
||||||
|
</p>
|
||||||
|
<Example>
|
||||||
|
<Latex>{r`a \in \mathbb{Z}`}</Latex> diventa <Latex>{r`a^+ \in \mathbb{N}`}</Latex> e <Latex>{r`-a^- \in \mathbb{N}`}</Latex>.
|
||||||
|
</Example>
|
||||||
|
</Panel>
|
||||||
|
</Split>
|
||||||
|
<Split title={"La forma standard"}>
|
||||||
|
<Panel title={"Funzione obiettivo"}>
|
||||||
|
<p>
|
||||||
|
La funzione da minimizzare/massimizzare, tipicamente indicata con una <Latex>{r`z`}</Latex> al termine noto.
|
||||||
|
</p>
|
||||||
|
</Panel>
|
||||||
|
<Panel title={"Tableu"}>
|
||||||
|
<p>
|
||||||
|
Un modo per rappresentare sistemi in forma standard, anche noto come <b>matrice equivalente completa</b> del sistema.
|
||||||
|
</p>
|
||||||
|
<Example>
|
||||||
|
Il sistema:<br/><br/>
|
||||||
|
<Latex>{r`
|
||||||
|
\begin{cases}
|
||||||
|
2000A + 1000B = z\\
|
||||||
|
1A \leq 3\\
|
||||||
|
1B \leq 3\\
|
||||||
|
2A + 2B \leq 7
|
||||||
|
\end{cases}
|
||||||
|
`}</Latex><br/><br/>
|
||||||
|
Diventa in forma di tableau:<br/><br/>
|
||||||
|
<table class={"right"}>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th><abbr title={"Termine noto"}>TN</abbr></th>
|
||||||
|
<th><Latex>A</Latex></th>
|
||||||
|
<th><Latex>B</Latex></th>
|
||||||
|
<th><Latex>s_1</Latex></th>
|
||||||
|
<th><Latex>s_2</Latex></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><Latex>z</Latex></td>
|
||||||
|
<td><Latex>2000</Latex></td>
|
||||||
|
<td><Latex>1000</Latex></td>
|
||||||
|
<td><Latex>0</Latex></td>
|
||||||
|
<td><Latex>0</Latex></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><Latex>3</Latex></td>
|
||||||
|
<td><Latex>1</Latex></td>
|
||||||
|
<td><Latex>0</Latex></td>
|
||||||
|
<td><Latex>1</Latex></td>
|
||||||
|
<td><Latex>0</Latex></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><Latex>3</Latex></td>
|
||||||
|
<td><Latex>0</Latex></td>
|
||||||
|
<td><Latex>1</Latex></td>
|
||||||
|
<td><Latex>0</Latex></td>
|
||||||
|
<td><Latex>1</Latex></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><Latex>7</Latex></td>
|
||||||
|
<td><Latex>2</Latex></td>
|
||||||
|
<td><Latex>2</Latex></td>
|
||||||
|
<td><Latex>0</Latex></td>
|
||||||
|
<td><Latex>0</Latex></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</Example>
|
||||||
|
</Panel>
|
||||||
|
<Panel title={"Variabili di base"}>
|
||||||
|
<p>
|
||||||
|
<Todo>TODO: come spiegarla?</Todo>
|
||||||
|
</p>
|
||||||
|
</Panel>
|
||||||
|
</Split>
|
||||||
|
<Split title={"Simplex"}>
|
||||||
|
<Panel title={"Simplex"}>
|
||||||
|
<p>
|
||||||
|
Un algoritmo per massimizzare efficientemente variabili di sistemi lineari, derivato da Gauss-Jordan.
|
||||||
|
</p>
|
||||||
|
<Example>
|
||||||
|
E' spiegato semplicemente <a href={"https://web.archive.org/web/20200523052252/https://www.cs.cmu.edu/~15451-f17/handouts/simplex.pdf"}>qui</a>.
|
||||||
|
</Example>
|
||||||
|
</Panel>
|
||||||
|
<Panel title={"I passi"}>
|
||||||
|
<ol>
|
||||||
|
<li>Trasforma il sistema in <b>forma standard</b>.</li>
|
||||||
|
<li>Finchè ci sono variabili con coefficienti positivi nella funzione obiettivo:
|
||||||
|
<ol>
|
||||||
|
<li><b>Scegli</b> una variabile della funzione obiettivo, chiamandola <i>variabile entrante</i>. <Example>Come? Vedi nel prossimo pannello.</Example></li>
|
||||||
|
<li>Trova la variabile di base (detta <i>variabile uscente</i>) con il <b>valore minore</b> per questo rapporto: <Code>termine noto / coeff. variabile entrante</Code></li>
|
||||||
|
<li><b>Riscrivi</b> tutte le funzioni del sistema in termini della variabile entrante.</li>
|
||||||
|
</ol>
|
||||||
|
</li>
|
||||||
|
<li>Il <b>termine noto</b> della funzione obiettivo è il tuo risultato.</li>
|
||||||
|
</ol>
|
||||||
|
</Panel>
|
||||||
|
<Panel title={"Criteri per la variabile entrante"}>
|
||||||
|
<ul>
|
||||||
|
<li>Coefficiente maggiore nella funzione obiettivo.</li>
|
||||||
|
<li>Incremento maggiore della funzione obiettivo.</li>
|
||||||
|
<li>A caso.</li>
|
||||||
|
<li><i>Regola di Bland</i>: scegli variabili entranti e uscenti con indice minore. <Example>Impedisce cicli infiniti!</Example></li>
|
||||||
|
</ul>
|
||||||
|
</Panel>
|
||||||
|
</Split>
|
||||||
|
<Split title={"Metodo delle due fasi"}>
|
||||||
|
<Panel title={"Metodo delle due fasi"}>
|
||||||
|
<p>
|
||||||
|
Un estensione del Simplex per permettere la risoluzione di problemi con termini noti negativi.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Prevede l'introduzione di un <b>problema ausiliario</b>.
|
||||||
</p>
|
</p>
|
||||||
</Panel>
|
</Panel>
|
||||||
</Split>
|
</Split>
|
||||||
|
|
Loading…
Reference in a new issue