mirror of
https://github.com/Steffo99/unisteffo.git
synced 2024-11-25 17:34:20 +00:00
0.5.7
This commit is contained in:
parent
5e6c609af9
commit
ba5993be0f
28 changed files with 343 additions and 188 deletions
File diff suppressed because one or more lines are too long
1
docs/bundle.37914.esm.js.LICENSE.txt
generated
Normal file
1
docs/bundle.37914.esm.js.LICENSE.txt
generated
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/*! For license information please see bundle.37914.esm.js.LICENSE.txt */
|
|
@ -1 +1 @@
|
||||||
{"version":3,"sources":[],"names":[],"mappings":"","file":"bundle.4481a.esm.js","sourceRoot":""}
|
{"version":3,"sources":[],"names":[],"mappings":"","file":"bundle.37914.esm.js","sourceRoot":""}
|
1
docs/bundle.4481a.esm.js.LICENSE.txt
generated
1
docs/bundle.4481a.esm.js.LICENSE.txt
generated
|
@ -1 +0,0 @@
|
||||||
/*! For license information please see bundle.4481a.esm.js.LICENSE.txt */
|
|
6
docs/bundle.5b1dd.js → docs/bundle.8c1d9.js
generated
6
docs/bundle.5b1dd.js → docs/bundle.8c1d9.js
generated
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
docs/index.html
generated
2
docs/index.html
generated
|
@ -1 +1 @@
|
||||||
<!DOCTYPE html><html lang="it"><head><meta charset="utf-8"><title>appuntiweb</title><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico" type="image/x-icon"><link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"><style>body{background-color:#0d193b}</style><link rel="manifest" href="/manifest.json"><link href="/bundle.aa325.css" rel="preload" as="style" onload="this.rel='stylesheet'"><noscript><link rel="stylesheet" href="/bundle.aa325.css"></noscript></head><body><script type="__PREACT_CLI_DATA__">{"preRenderData":{"url":"/"}}</script><script nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" src="/bundle.4481a.esm.js" type="module"></script><script nomodule="" src="/polyfills.be97c.js"></script><script nomodule="" defer="defer" src="/bundle.5b1dd.js"></script></body></html>
|
<!DOCTYPE html><html lang="it"><head><meta charset="utf-8"><title>appuntiweb</title><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico" type="image/x-icon"><link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"><style>body{background-color:#0d193b}</style><link rel="manifest" href="/manifest.json"><link href="/bundle.aa325.css" rel="preload" as="style" onload="this.rel='stylesheet'"><noscript><link rel="stylesheet" href="/bundle.aa325.css"></noscript></head><body><script type="__PREACT_CLI_DATA__">{"preRenderData":{"url":"/"}}</script><script nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" src="/bundle.37914.esm.js" type="module"></script><script nomodule="" src="/polyfills.bd396.js"></script><script nomodule="" defer="defer" src="/bundle.8c1d9.js"></script></body></html>
|
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
||||||
{"version":3,"sources":[],"names":[],"mappings":"","file":"polyfills.87c03.esm.js","sourceRoot":""}
|
{"version":3,"sources":[],"names":[],"mappings":"","file":"polyfills.36dba.esm.js","sourceRoot":""}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
docs/push-manifest.json
generated
2
docs/push-manifest.json
generated
|
@ -1 +1 @@
|
||||||
{"/":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.4481a.esm.js":{"type":"script","weight":1}},"/AlgoritmiEStruttureDati":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.4481a.esm.js":{"type":"script","weight":1},"route-AlgoritmiEStruttureDati.chunk.8a667.esm.js":{"type":"script","weight":0.9}},"/ApprendimentoSistemiArtificiali":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.4481a.esm.js":{"type":"script","weight":1},"route-ApprendimentoSistemiArtificiali.chunk.3425b.esm.js":{"type":"script","weight":0.9},"route-ApprendimentoSistemiArtificiali.chunk.82e5f.css":{"type":"style","weight":0.9}},"/BasiDiDati":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.4481a.esm.js":{"type":"script","weight":1},"route-BasiDiDati.chunk.d4d6f.esm.js":{"type":"script","weight":0.9},"route-BasiDiDati.chunk.15069.css":{"type":"style","weight":0.9}},"/CalcoloNumerico":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.4481a.esm.js":{"type":"script","weight":1},"route-CalcoloNumerico.chunk.4e5d4.esm.js":{"type":"script","weight":0.9},"route-CalcoloNumerico.chunk.15069.css":{"type":"style","weight":0.9}},"/Fisica":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.4481a.esm.js":{"type":"script","weight":1},"route-Fisica.chunk.76887.esm.js":{"type":"script","weight":0.9},"route-Fisica.chunk.19284.css":{"type":"style","weight":0.9}},"/Home":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.4481a.esm.js":{"type":"script","weight":1},"route-Home.chunk.a0405.esm.js":{"type":"script","weight":0.9}},"/MingwInstall":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.4481a.esm.js":{"type":"script","weight":1},"route-MingwInstall.chunk.60ba6.esm.js":{"type":"script","weight":0.9}},"/NetLogo":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.4481a.esm.js":{"type":"script","weight":1},"route-NetLogo.chunk.1d020.esm.js":{"type":"script","weight":0.9},"route-NetLogo.chunk.15069.css":{"type":"style","weight":0.9}},"/OttimizzazioneLineare":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.4481a.esm.js":{"type":"script","weight":1},"route-OttimizzazioneLineare.chunk.c0d16.esm.js":{"type":"script","weight":0.9},"route-OttimizzazioneLineare.chunk.c062e.css":{"type":"style","weight":0.9}},"/Statistica":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.4481a.esm.js":{"type":"script","weight":1},"route-Statistica.chunk.9206d.esm.js":{"type":"script","weight":0.9},"route-Statistica.chunk.28f43.css":{"type":"style","weight":0.9}},"/VlDiGeometria":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.4481a.esm.js":{"type":"script","weight":1},"route-VlDiGeometria.chunk.a614e.esm.js":{"type":"script","weight":0.9}}}
|
{"/":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.37914.esm.js":{"type":"script","weight":1}},"/AlgoritmiEStruttureDati":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.37914.esm.js":{"type":"script","weight":1},"route-AlgoritmiEStruttureDati.chunk.8a667.esm.js":{"type":"script","weight":0.9}},"/ApprendimentoSistemiArtificiali":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.37914.esm.js":{"type":"script","weight":1},"route-ApprendimentoSistemiArtificiali.chunk.3425b.esm.js":{"type":"script","weight":0.9},"route-ApprendimentoSistemiArtificiali.chunk.82e5f.css":{"type":"style","weight":0.9}},"/BasiDiDati":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.37914.esm.js":{"type":"script","weight":1},"route-BasiDiDati.chunk.d4d6f.esm.js":{"type":"script","weight":0.9},"route-BasiDiDati.chunk.15069.css":{"type":"style","weight":0.9}},"/CalcoloNumerico":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.37914.esm.js":{"type":"script","weight":1},"route-CalcoloNumerico.chunk.4e5d4.esm.js":{"type":"script","weight":0.9},"route-CalcoloNumerico.chunk.15069.css":{"type":"style","weight":0.9}},"/Fisica":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.37914.esm.js":{"type":"script","weight":1},"route-Fisica.chunk.76887.esm.js":{"type":"script","weight":0.9},"route-Fisica.chunk.19284.css":{"type":"style","weight":0.9}},"/Home":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.37914.esm.js":{"type":"script","weight":1},"route-Home.chunk.a0405.esm.js":{"type":"script","weight":0.9}},"/MingwInstall":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.37914.esm.js":{"type":"script","weight":1},"route-MingwInstall.chunk.60ba6.esm.js":{"type":"script","weight":0.9}},"/NetLogo":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.37914.esm.js":{"type":"script","weight":1},"route-NetLogo.chunk.1d020.esm.js":{"type":"script","weight":0.9},"route-NetLogo.chunk.15069.css":{"type":"style","weight":0.9}},"/OttimizzazioneLineare":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.37914.esm.js":{"type":"script","weight":1},"route-OttimizzazioneLineare.chunk.39056.esm.js":{"type":"script","weight":0.9},"route-OttimizzazioneLineare.chunk.f1a43.css":{"type":"style","weight":0.9}},"/Statistica":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.37914.esm.js":{"type":"script","weight":1},"route-Statistica.chunk.9206d.esm.js":{"type":"script","weight":0.9},"route-Statistica.chunk.28f43.css":{"type":"style","weight":0.9}},"/VlDiGeometria":{"bundle.aa325.css":{"type":"style","weight":1},"bundle.37914.esm.js":{"type":"script","weight":1},"route-VlDiGeometria.chunk.a614e.esm.js":{"type":"script","weight":0.9}}}
|
40
docs/route-OttimizzazioneLineare.chunk.39056.esm.js
generated
Normal file
40
docs/route-OttimizzazioneLineare.chunk.39056.esm.js
generated
Normal file
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
||||||
{"version":3,"sources":[],"names":[],"mappings":"","file":"route-OttimizzazioneLineare.chunk.c0d16.esm.js","sourceRoot":""}
|
{"version":3,"sources":[],"names":[],"mappings":"","file":"route-OttimizzazioneLineare.chunk.39056.esm.js","sourceRoot":""}
|
2
docs/route-OttimizzazioneLineare.chunk.6e7b4.js
generated
Normal file
2
docs/route-OttimizzazioneLineare.chunk.6e7b4.js
generated
Normal file
File diff suppressed because one or more lines are too long
1
docs/route-OttimizzazioneLineare.chunk.6e7b4.js.map
generated
Normal file
1
docs/route-OttimizzazioneLineare.chunk.6e7b4.js.map
generated
Normal file
File diff suppressed because one or more lines are too long
2
docs/route-OttimizzazioneLineare.chunk.abf33.js
generated
2
docs/route-OttimizzazioneLineare.chunk.abf33.js
generated
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
40
docs/route-OttimizzazioneLineare.chunk.c0d16.esm.js
generated
40
docs/route-OttimizzazioneLineare.chunk.c0d16.esm.js
generated
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
||||||
.red__2y1B_{color:#ff7d7d}.orange__dD2kx{color:#ffbb7d}.yellow__OEpwl{color:#ffff7d}.lime__CVe41{color:#7dff7d}.cyan__26ZAg{color:#7dffff}.blue__LO7Xm{color:#7d7dff}.magenta__1Akee{color:#ff7dff}.example__2PzAa{color:#d3a1ff;padding:4px;border-radius:4px;margin:4px 0}.example__2PzAa,.example__2PzAa table{background-color:rgba(211,161,255,.05)}.example__2PzAa table{border-spacing:0;border:2px solid rgba(211,161,255,.1);border-collapse:collapse}.example__2PzAa table tbody td,.example__2PzAa table tbody th,.example__2PzAa table thead td,.example__2PzAa table thead th{padding:4px;border:1px solid rgba(211,161,255,.1)}.example__2PzAa table thead{background-color:rgba(211,161,255,.1);color:#fff}.red__UmOgB{color:#ff7d7d}.orange__1FTS8{color:#ffbb7d}.yellow__3dJAV{color:#ffff7d}.lime__3kPc-{color:#7dff7d}.cyan__11RpC{color:#7dffff}.blue__320AC{color:#7d7dff}.magenta__VPUPe{color:#ff7dff}.unbounded__25UN8{color:#7d7dff}.unfeasible__2MuIF{color:#ff7d7d}.finite__2EP_f{color:#7dff7d}.min__3lPpn{color:#7dffff}.max__1hxKl{color:#ffbb7d}
|
.red__2y1B_{color:#ff7d7d}.orange__dD2kx{color:#ffbb7d}.yellow__OEpwl{color:#ffff7d}.lime__CVe41{color:#7dff7d}.cyan__26ZAg{color:#7dffff}.blue__LO7Xm{color:#7d7dff}.magenta__1Akee{color:#ff7dff}.example__2PzAa{color:#d3a1ff;padding:4px;border-radius:4px;margin:4px 0}.example__2PzAa,.example__2PzAa table{background-color:rgba(211,161,255,.05)}.example__2PzAa table{border-spacing:0;border:2px solid rgba(211,161,255,.1);border-collapse:collapse}.example__2PzAa table tbody td,.example__2PzAa table tbody th,.example__2PzAa table thead td,.example__2PzAa table thead th{padding:4px;border:1px solid rgba(211,161,255,.1)}.example__2PzAa table thead{background-color:rgba(211,161,255,.1);color:#fff}.red__UmOgB{color:#ff7d7d}.orange__1FTS8{color:#ffbb7d}.yellow__3dJAV{color:#ffff7d}.lime__3kPc-{color:#7dff7d}.cyan__11RpC{color:#7dffff}.blue__320AC{color:#7d7dff}.magenta__VPUPe{color:#ff7dff}.unbounded__25UN8{color:#7d7dff}.unfeasible__2MuIF{color:#ff7d7d}.finite__2EP_f{color:#7dff7d}.min__3lPpn{color:#7dffff}.max__1hxKl{color:#ffbb7d}.red__ipSoq{color:#ff7d7d}.orange__1nmkj{color:#ffbb7d}.yellow__353ge{color:#ffff7d}.lime__3FW1E{color:#7dff7d}.cyan__2xhu7{color:#7dffff}.blue__3MvDe{color:#7d7dff}.magenta__i03ie{color:#ff7dff}.plus__1eV4_,.red__3phX0{color:#ff7d7d}.orange__1OSkI{color:#ffbb7d}.yellow__2pQOr{color:#ffff7d}.lime__3vRUg{color:#7dff7d}.cyan__1cBtG{color:#7dffff}.blue__1G1wb{color:#7d7dff}.magenta__3Wagv{color:#ff7dff}.minus__2qLyv{color:#7d7dff}.red__3r1Jz{color:#ff7d7d}.orange__2q18p{color:#ffbb7d}.yellow__3cyw6{color:#ffff7d}.lime__2GJfI{color:#7dff7d}.cyan__k_5Y_{color:#7dffff}.blue__ejrIP{color:#7d7dff}.magenta__1Zdi7{color:#ff7dff}.example__22j7L{color:#d3a1ff}.example__22j7L,.example__22j7L table{background-color:rgba(211,161,255,.05)}.example__22j7L table,.example__22j7L table tbody td,.example__22j7L table tbody th,.example__22j7L table thead td,.example__22j7L table thead th{border-color:rgba(211,161,255,.1)}.example__22j7L table thead{background-color:rgba(211,161,255,.1);color:#fff}
|
2
docs/sw-esm.js
generated
2
docs/sw-esm.js
generated
File diff suppressed because one or more lines are too long
2
docs/sw.js
generated
2
docs/sw.js
generated
File diff suppressed because one or more lines are too long
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
"name": "appuntiweb",
|
"name": "appuntiweb",
|
||||||
"version": "0.5.6",
|
"version": "0.5.7",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "preact watch --template src/template.html",
|
"start": "preact watch --template src/template.html",
|
||||||
|
|
File diff suppressed because one or more lines are too long
3
src/components/ExampleBoxColor.js
Normal file
3
src/components/ExampleBoxColor.js
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import style from "./ExampleBoxColor.less";
|
||||||
|
|
||||||
|
export default style.example;
|
25
src/components/ExampleBoxColor.less
Normal file
25
src/components/ExampleBoxColor.less
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
@import "../styles/constants.less";
|
||||||
|
|
||||||
|
@eplus: fade(@example, 5%);
|
||||||
|
@eplusplus: fade(@example, 10%);
|
||||||
|
|
||||||
|
.example {
|
||||||
|
color: @example;
|
||||||
|
background-color: @eplus;
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-color: @eplusplus;
|
||||||
|
background-color: @eplus;
|
||||||
|
|
||||||
|
thead, tbody {
|
||||||
|
th, td {
|
||||||
|
border-color: @eplusplus;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
thead {
|
||||||
|
background-color: @eplusplus;
|
||||||
|
color: @accent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,11 +1,25 @@
|
||||||
import {Section, Latex, Panel, Todo, Timer, PLatex, TablePanel, LatexDefaultInline, ILatex, BLatex} from "bluelib";
|
import {
|
||||||
|
Section,
|
||||||
|
Latex,
|
||||||
|
Panel,
|
||||||
|
Todo,
|
||||||
|
Timer,
|
||||||
|
PLatex,
|
||||||
|
TablePanel,
|
||||||
|
LatexDefaultInline,
|
||||||
|
ILatex,
|
||||||
|
BLatex,
|
||||||
|
BaseLink
|
||||||
|
} from "bluelib";
|
||||||
import Example from "../components/Example";
|
import Example from "../components/Example";
|
||||||
|
|
||||||
import Empty from "../components/OttimizzazioneLineare/Empty";
|
import Empty from "../components/OttimizzazioneLineare/Empty";
|
||||||
import Unbounded from "../components/OttimizzazioneLineare/Unbounded";
|
import Unbounded from "../components/OttimizzazioneLineare/Unbounded";
|
||||||
import Finite from "../components/OttimizzazioneLineare/Finite";
|
import Finite from "../components/OttimizzazioneLineare/Finite";
|
||||||
import Min from "../components/OttimizzazioneLineare/Min";
|
import Min from "../components/OttimizzazioneLineare/Min";
|
||||||
import Max from "../components/OttimizzazioneLineare/Max";
|
import Max from "../components/OttimizzazioneLineare/Max";
|
||||||
|
import Plus from "../components/Fisica/Plus";
|
||||||
|
import Minus from "../components/Fisica/Minus";
|
||||||
|
import ExampleBoxColor from "../components/ExampleBoxColor";
|
||||||
|
|
||||||
const r = String.raw;
|
const r = String.raw;
|
||||||
|
|
||||||
|
@ -178,16 +192,6 @@ export default function(props) {
|
||||||
</TablePanel>
|
</TablePanel>
|
||||||
</Section>
|
</Section>
|
||||||
</LatexDefaultInline.Provider>
|
</LatexDefaultInline.Provider>
|
||||||
<Section title={"Le basi"}>
|
|
||||||
<Panel title={"Funzione obiettivo"}>
|
|
||||||
<p>
|
|
||||||
La funzione obiettivo è la funzione con valore noto sconosciuto:
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<Latex>{r`z = C_1 \cdot x_1 + C_2 \cdot x_2 + C_n \cdot x_n`}</Latex>
|
|
||||||
</p>
|
|
||||||
</Panel>
|
|
||||||
</Section>
|
|
||||||
<Section title={"Problemi di ottimizzazione lineare"}>
|
<Section title={"Problemi di ottimizzazione lineare"}>
|
||||||
<Panel title={"Cosa sono?"}>
|
<Panel title={"Cosa sono?"}>
|
||||||
<p>
|
<p>
|
||||||
|
@ -204,6 +208,26 @@ export default function(props) {
|
||||||
<p>
|
<p>
|
||||||
Il vettore dei suoi coefficienti è detto <Latex>{r`\mathbf{c}`}</Latex>, mentre quello delle sue incognite <Latex>{r`\mathbf{x}`}</Latex>.
|
Il vettore dei suoi coefficienti è detto <Latex>{r`\mathbf{c}`}</Latex>, mentre quello delle sue incognite <Latex>{r`\mathbf{x}`}</Latex>.
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
In genere, la funzione obiettivo è scritta in questa forma:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<Latex>{r`z(\mathbf{x}) = c_1 \cdot x_1 + c_2 \cdot x_2 + \dots + c_n \cdot x_n`}</Latex>
|
||||||
|
</p>
|
||||||
|
</Panel>
|
||||||
|
<Panel title={"Gradiente"}>
|
||||||
|
<p>
|
||||||
|
<b>Funzione</b> della funzione obiettivo che restituisce la direzione del suo aumento più veloce.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<Latex>{r`\nabla (f) = \frac{d f}{d x_1} I_1 + \frac{d f}{d x_2} I_2 + \frac{d f}{d x_n} I_n`}</Latex>
|
||||||
|
</p>
|
||||||
|
<Example>
|
||||||
|
La matrice <Latex>{r`\mathbf{I}`}</Latex> è la matrice identità.
|
||||||
|
</Example>
|
||||||
|
<Example>
|
||||||
|
Se la funzione obiettivo è <Latex>z = 2w + 3x + 4y</Latex>, il suo gradiente è <Latex>{r`\nabla z = (2, 3, 4)`}</Latex>.
|
||||||
|
</Example>
|
||||||
</Panel>
|
</Panel>
|
||||||
<Panel title={"Vincoli"}>
|
<Panel title={"Vincoli"}>
|
||||||
<p>
|
<p>
|
||||||
|
@ -213,21 +237,10 @@ export default function(props) {
|
||||||
I loro coefficienti sono contenuti nella matrice <Latex>{r`\mathbf{A}`}</Latex>, mentre i loro termini noti nel vettore <Latex>{r`\mathbf{b}`}</Latex>.
|
I loro coefficienti sono contenuti nella matrice <Latex>{r`\mathbf{A}`}</Latex>, mentre i loro termini noti nel vettore <Latex>{r`\mathbf{b}`}</Latex>.
|
||||||
</p>
|
</p>
|
||||||
</Panel>
|
</Panel>
|
||||||
<Panel title={"Valore ottimo"}>
|
|
||||||
<p>
|
|
||||||
La <b>soluzione</b> di un problema, ricavabile dal prodotto <Latex>{r`\mathbf{c}^T \mathbf{x}`}</Latex>.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Spesso, la funzione obiettivo è indicata con il nome <Latex>{r`z(\dots)`}</Latex>.
|
|
||||||
</p>
|
|
||||||
</Panel>
|
|
||||||
<Panel title={"Poliedro"}>
|
<Panel title={"Poliedro"}>
|
||||||
<p>
|
<p>
|
||||||
L'<b>insieme</b> che racchiunde tutte le <b>soluzioni ammissibili</b> di un problema.
|
L'<b>insieme</b> che racchiunde tutte le <b>soluzioni ammissibili</b> di un problema.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
|
||||||
In particolare, il valore ottimo è un <b>vertice</b> del poliedro, detto <i>vertice ottimo</i>.
|
|
||||||
</p>
|
|
||||||
<p>
|
<p>
|
||||||
Può essere <i><Finite/></i>, <i><Empty/></i> oppure <i><Unbounded/></i>.
|
Può essere <i><Finite/></i>, <i><Empty/></i> oppure <i><Unbounded/></i>.
|
||||||
</p>
|
</p>
|
||||||
|
@ -235,19 +248,13 @@ export default function(props) {
|
||||||
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>.
|
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>.
|
||||||
</Example>
|
</Example>
|
||||||
</Panel>
|
</Panel>
|
||||||
<Panel title={"Gradiente"}>
|
<Panel title={"Valore ottimo"}>
|
||||||
<p>
|
<p>
|
||||||
<b>Funzione</b> della funzione obiettivo che restituisce la direzione del suo aumento più veloce.
|
La <b>soluzione</b> di un problema, ricavabile dal prodotto <Latex>{r`\mathbf{c}^T \mathbf{x}`}</Latex>.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<Latex>{r`\nabla f = \frac{\delta f}{\delta x_1} \mathbf{I}_1 + \frac{\delta f}{\delta x_2} \mathbf{I}_2 + \frac{\delta f}{\delta x_n} \mathbf{I}_n`}</Latex>
|
In particolare, il valore ottimo è un <b>vertice</b> del poliedro, detto <i>vertice ottimo</i>.
|
||||||
</p>
|
</p>
|
||||||
<Example>
|
|
||||||
La matrice <Latex>{r`\mathbf{I}`}</Latex> è la matrice identità.
|
|
||||||
</Example>
|
|
||||||
<Example>
|
|
||||||
Se la funzione obiettivo è <Latex>z = 2w + 3x + 4y</Latex>, il suo gradiente è <Latex>{r`\nabla z = (2, 3, 4)`}</Latex>.
|
|
||||||
</Example>
|
|
||||||
</Panel>
|
</Panel>
|
||||||
</Section>
|
</Section>
|
||||||
<Section title={"Forme di un problema di ottimizzazione"}>
|
<Section title={"Forme di un problema di ottimizzazione"}>
|
||||||
|
@ -256,8 +263,8 @@ export default function(props) {
|
||||||
Un problema con:
|
Un problema con:
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Equazioni e disequazioni</b></li>
|
<li><Plus>Equazioni e disequazioni</Plus></li>
|
||||||
<li><b>Variabili non vincolate</b></li>
|
<li><Plus>Variabili non vincolate</Plus></li>
|
||||||
</ul>
|
</ul>
|
||||||
<PLatex>{r`min \left\{ \mathbf{c}^T \mathbf{x} : \mathbf{A} \mathbf{x} = b,\quad \mathbf{A'} \mathbf{x} \geq \mathbf{b'} \quad x_j \geq 0,\quad j = 1 \dots n \right\}`}</PLatex>
|
<PLatex>{r`min \left\{ \mathbf{c}^T \mathbf{x} : \mathbf{A} \mathbf{x} = b,\quad \mathbf{A'} \mathbf{x} \geq \mathbf{b'} \quad x_j \geq 0,\quad j = 1 \dots n \right\}`}</PLatex>
|
||||||
</Panel>
|
</Panel>
|
||||||
|
@ -266,8 +273,8 @@ export default function(props) {
|
||||||
Un problema con:
|
Un problema con:
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Solo disequazioni</b></li>
|
<li><Plus>Solo disequazioni</Plus></li>
|
||||||
<li><b>Vincoli di non-negatività sulle incognite</b></li>
|
<li><Minus>Vincoli di non-negatività sulle incognite</Minus></li>
|
||||||
</ul>
|
</ul>
|
||||||
<PLatex>{r`min \left\{ \mathbf{c}^T \mathbf{x} : \mathbf{A} \mathbf{x} \geq b,\quad x_j \geq 0,\quad j = 1 \dots n \right\}`}</PLatex>
|
<PLatex>{r`min \left\{ \mathbf{c}^T \mathbf{x} : \mathbf{A} \mathbf{x} \geq b,\quad x_j \geq 0,\quad j = 1 \dots n \right\}`}</PLatex>
|
||||||
</Panel>
|
</Panel>
|
||||||
|
@ -276,8 +283,8 @@ export default function(props) {
|
||||||
Un problema con:
|
Un problema con:
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Solo equazioni</b></li>
|
<li><Minus>Solo equazioni</Minus></li>
|
||||||
<li><b>Vincoli di non-negatività sulle incognite</b></li>
|
<li><Minus>Vincoli di non-negatività sulle incognite</Minus></li>
|
||||||
</ul>
|
</ul>
|
||||||
<PLatex>{r`min \left\{ \mathbf{c}^T \mathbf{x} : \mathbf{A} \mathbf{x} = b,\quad x_j \geq 0,\quad j = 1 \dots n \right\}`}</PLatex>
|
<PLatex>{r`min \left\{ \mathbf{c}^T \mathbf{x} : \mathbf{A} \mathbf{x} = b,\quad x_j \geq 0,\quad j = 1 \dots n \right\}`}</PLatex>
|
||||||
</Panel>
|
</Panel>
|
||||||
|
@ -325,63 +332,28 @@ export default function(props) {
|
||||||
</p>
|
</p>
|
||||||
</Panel>
|
</Panel>
|
||||||
</Section>
|
</Section>
|
||||||
<Section title={"La forma standard"}>
|
<Section>
|
||||||
<Panel title={"Tableau"}>
|
Valore attuale
|
||||||
|
</Section>
|
||||||
|
<Section title={"Tableau"}>
|
||||||
|
<Panel title={"Cos'è?"}>
|
||||||
<p>
|
<p>
|
||||||
Un modo per rappresentare sistemi in forma standard, anche noto come <b>matrice equivalente completa</b> del sistema.
|
Un modo per rappresentare sistemi in forma standard, anche noto come <b>matrice equivalente completa</b> del sistema.
|
||||||
</p>
|
</p>
|
||||||
|
</Panel>
|
||||||
|
<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> un'intera riga per una costante.</li>
|
||||||
|
<li><b>Sommare</b> una riga a un'altra</li>
|
||||||
|
</ul>
|
||||||
<Example>
|
<Example>
|
||||||
Il sistema:<br/><br/>
|
Suona familiare? Sì, lo abbiamo fatto anche in Algebra Lineare.
|
||||||
<Latex inline={false}>{r`
|
|
||||||
\begin{cases}
|
|
||||||
2000x_1 + 1000x_2 = z\\
|
|
||||||
1x_1 \leq 3\\
|
|
||||||
1x_2 \leq 3\\
|
|
||||||
2x_1 + 2x_2 \leq 7
|
|
||||||
\end{cases}
|
|
||||||
`}</Latex><br/><br/>
|
|
||||||
Diventa il tableau:<br/><br/>
|
|
||||||
<table class={"right"}>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th><Latex>x_1</Latex></th>
|
|
||||||
<th><Latex>x_2</Latex></th>
|
|
||||||
<th><Latex>s_1</Latex></th>
|
|
||||||
<th><Latex>s_2</Latex></th>
|
|
||||||
<th><abbr title={"Termine noto"}>TN</abbr></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><Latex>2000</Latex></td>
|
|
||||||
<td><Latex>1000</Latex></td>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
<td><Latex>z</Latex></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><Latex>1</Latex></td>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
<td><Latex>1</Latex></td>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
<td><Latex>3</Latex></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
<td><Latex>1</Latex></td>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
<td><Latex>1</Latex></td>
|
|
||||||
<td><Latex>3</Latex></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><Latex>2</Latex></td>
|
|
||||||
<td><Latex>2</Latex></td>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
<td><Latex>0</Latex></td>
|
|
||||||
<td><Latex>7</Latex></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</Example>
|
</Example>
|
||||||
</Panel>
|
</Panel>
|
||||||
<Panel title={"Variabili nella base"}>
|
<Panel title={"Variabili nella base"}>
|
||||||
|
@ -392,24 +364,107 @@ export default function(props) {
|
||||||
La loro controparte sono le <i>variabili fuori base</i>, che hanno qualsiasi altro valore.
|
La loro controparte sono le <i>variabili fuori base</i>, che hanno qualsiasi altro valore.
|
||||||
</p>
|
</p>
|
||||||
</Panel>
|
</Panel>
|
||||||
|
<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>
|
||||||
|
</Panel>
|
||||||
|
</Section>
|
||||||
|
<Section>
|
||||||
|
<Panel color={ExampleBoxColor} title={"Un esempio"}>
|
||||||
|
<p>
|
||||||
|
Il sistema:
|
||||||
|
</p>
|
||||||
|
<PLatex>{r`
|
||||||
|
\begin{cases}
|
||||||
|
2000x_1 + 1000x_2 = z\\
|
||||||
|
1x_1 \leq 3\\
|
||||||
|
1x_2 \leq 3\\
|
||||||
|
2x_1 + 2x_2 \leq 7
|
||||||
|
\end{cases}
|
||||||
|
`}</PLatex>
|
||||||
|
<p>
|
||||||
|
Diventa il tableau:
|
||||||
|
</p>
|
||||||
|
<table className={"right"}>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th><Latex>x_1</Latex></th>
|
||||||
|
<th><Latex>x_2</Latex></th>
|
||||||
|
<th><Latex>s_1</Latex></th>
|
||||||
|
<th><Latex>s_2</Latex></th>
|
||||||
|
<th><Latex>s_3</Latex></th>
|
||||||
|
<th><abbr title={"Termine noto"}>TN</abbr></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><Latex>1</Latex></td>
|
||||||
|
<td><Latex>0</Latex></td>
|
||||||
|
<td style={"background-color: rgba(0, 0, 255, 0.1);"}><Latex>1</Latex></td>
|
||||||
|
<td style={"background-color: rgba(0, 0, 255, 0.1);"}><Latex>0</Latex></td>
|
||||||
|
<td style={"background-color: rgba(0, 0, 255, 0.1);"}><Latex>0</Latex></td>
|
||||||
|
<td style={"background-color: rgba(255, 0, 0, 0.1);"}><Latex>3</Latex></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><Latex>0</Latex></td>
|
||||||
|
<td><Latex>1</Latex></td>
|
||||||
|
<td style={"background-color: rgba(0, 0, 255, 0.1);"}><Latex>0</Latex></td>
|
||||||
|
<td style={"background-color: rgba(0, 0, 255, 0.1);"}><Latex>1</Latex></td>
|
||||||
|
<td style={"background-color: rgba(0, 0, 255, 0.1);"}><Latex>0</Latex></td>
|
||||||
|
<td style={"background-color: rgba(255, 0, 0, 0.1);"}><Latex>3</Latex></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><Latex>2</Latex></td>
|
||||||
|
<td><Latex>2</Latex></td>
|
||||||
|
<td style={"background-color: rgba(0, 0, 255, 0.1);"}><Latex>0</Latex></td>
|
||||||
|
<td style={"background-color: rgba(0, 0, 255, 0.1);"}><Latex>0</Latex></td>
|
||||||
|
<td style={"background-color: rgba(0, 0, 255, 0.1);"}><Latex>1</Latex></td>
|
||||||
|
<td style={"background-color: rgba(255, 0, 0, 0.1);"}><Latex>7</Latex></td>
|
||||||
|
</tr>
|
||||||
|
<tr style={"background-color: rgba(0, 255, 0, 0.1);"}>
|
||||||
|
<td><Latex>2000</Latex></td>
|
||||||
|
<td><Latex>1000</Latex></td>
|
||||||
|
<td><Latex>0</Latex></td>
|
||||||
|
<td><Latex>0</Latex></td>
|
||||||
|
<td><Latex>0</Latex></td>
|
||||||
|
<td style={"background-color: rgba(255, 255, 0, 0.2);"}><Latex>0</Latex></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<u style={"color: #7dff7d;"}>Verde</u>: funzione obiettivo
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<u style={"color: #ffff7d;"}>Giallo</u>: valore attuale della funzione
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<u style={"color: #ff7d7d;"}>Rosso</u>: termini noti
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<u style={"color: #7d7dff;"}>Blu</u>: Variabili slack
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</Panel>
|
||||||
</Section>
|
</Section>
|
||||||
<Section title={"Simplex primale"}>
|
<Section title={"Simplex primale"}>
|
||||||
<Panel title={"Cos'è?"}>
|
<Panel title={"Cos'è?"}>
|
||||||
<p>
|
<p>
|
||||||
Un algoritmo per <Min>minimizzare</Min>/<Max>massimizzare</Max> trovare efficientemente <b>valore ottimo</b> di problemi di ottimizzazione lineare, derivato da Gauss-Jordan.
|
Un algoritmo per trovare efficientemente il <b>valore ottimo</b> e le coordinate di un <b>vertice ottimo</b> in problemi di ottimizzazione lineare.
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Da esso si può anche ricavare un <b>vertice ottimo ammissibile</b>.<br/>
|
|
||||||
C'è la possibilità che ne esistano anche altri: quello ottenuto dipende da come è stata effettuata la scelta delle variabili entranti.
|
|
||||||
</p>
|
</p>
|
||||||
<Example>
|
<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 ci sono dei codici sorgenti di esempio <a href={"https://www.cs.cmu.edu/~15451-f17/handouts/simplexcodes/"}>qui</a>.
|
Ricordi <BaseLink href={"/vldigeometria"}>Gauss-Jordan</BaseLink>? Il Simplex è la stessa cosa, aggiungendo criteri per la selezione del pivot.
|
||||||
</Example>
|
</Example>
|
||||||
<Example title={"Esempio"}>
|
<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</code></a>.
|
<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</code></a>.
|
||||||
</p>
|
|
||||||
</Example>
|
</Example>
|
||||||
|
<p>
|
||||||
|
Perchè sia possibile effettuare il Simplex è necessario che l'<b>origine sia nel poliedro</b>: pertanto, <b>non</b> è possibile che un problema risolto con il Simplex sia <Empty/>.
|
||||||
|
</p>
|
||||||
</Panel>
|
</Panel>
|
||||||
<Panel title={"I passi"}>
|
<Panel title={"I passi"}>
|
||||||
<ol>
|
<ol>
|
||||||
|
@ -419,20 +474,17 @@ export default function(props) {
|
||||||
<ol>
|
<ol>
|
||||||
<li>
|
<li>
|
||||||
<b>Scegli</b> la prima variabile fuori base con coefficiente <Min>positivo</Min>/<Max>negativo</Max> nella funzione obiettivo: essa è la <i>variabile entrante</i>.<br/>
|
<b>Scegli</b> la prima variabile fuori base con coefficiente <Min>positivo</Min>/<Max>negativo</Max> nella funzione obiettivo: essa è la <i>variabile entrante</i>.<br/>
|
||||||
<aside><i>Regola di Bland</i>: Si potrebbe scegliere qualsiasi variabile come entrante, ma scegliendo sempre la prima ammissibile ci si assicura che l'algoritmo termini.</aside>
|
<aside><u>Regola di Bland</u>: Si potrebbe scegliere qualsiasi variabile come entrante, ma scegliendo sempre la prima ammissibile ci si assicura che l'algoritmo termini.</aside>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<b>Scegli</b> la variabile in base con il minor rapporto positivo <Latex>{r`\frac{termine\ noto}{coeff.\ variabile\ entrante}`}</Latex>.
|
<b>Scegli</b> la variabile in base con il minor rapporto positivo <Latex>{r`\frac{termine\ noto}{coeff.\ variabile\ entrante}`}</Latex>.
|
||||||
<aside>Se non sei riuscito a trovare nessuna variabile con un rapporto positivo, significa che il poliedro è <Unbounded/>.</aside>
|
<aside>Se non sei riuscito a trovare nessuna variabile con un rapporto positivo, significa che il poliedro è <Unbounded/>.</aside>
|
||||||
</li>
|
</li>
|
||||||
<li><u>Pivot</u>: <b>riscrivi</b> tutte le funzioni del sistema in termini della variabile entrante.</li>
|
<li><u>Pivot</u>: <b>trasforma</b> tutte le funzioni del sistema in modo che abbiano 0 nella colonna della variabile entrante, tranne nella riga della variabile uscente, in cui avrà 1.</li>
|
||||||
</ol>
|
</ol>
|
||||||
</li>
|
</li>
|
||||||
<li>Il poliedro è <Finite/>: i <b>termini noti dei vincoli</b> sono le coordinate del suo vertice ottimo, mentre il <b>termine noto della funzione obiettivo</b> è il valore ottimo.</li>
|
<li>Il poliedro è <Finite/>: i <b>termini noti dei vincoli</b> sono le coordinate del suo vertice ottimo, mentre il <b>termine noto della funzione obiettivo</b> è il valore ottimo.</li>
|
||||||
</ol>
|
</ol>
|
||||||
<Example>
|
|
||||||
È praticamente l'algoritmo di Gauss-Jordan applicato al tableau, con delle regole aggiuntive per la decisione delle variabili di pivot.
|
|
||||||
</Example>
|
|
||||||
</Panel>
|
</Panel>
|
||||||
<Panel title={"Soluzioni di base degenerata"}>
|
<Panel title={"Soluzioni di base degenerata"}>
|
||||||
<p>
|
<p>
|
||||||
|
@ -446,7 +498,7 @@ export default function(props) {
|
||||||
<Section title={"Metodo delle due fasi"}>
|
<Section title={"Metodo delle due fasi"}>
|
||||||
<Panel title={"Metodo delle due fasi"}>
|
<Panel title={"Metodo delle due fasi"}>
|
||||||
<p>
|
<p>
|
||||||
Un estensione del Simplex per permettere la risoluzione di problemi la cui origine non è una soluzione ammissibile.
|
Un <b>estensione del Simplex</b> per permettere la risoluzione di problemi la cui <b>origine non è una soluzione ammissibile</b>.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Prevede l'introduzione di un <i>problema ausiliario</i>, le cui incognite sono dette <i>artificiali</i>.
|
Prevede l'introduzione di un <i>problema ausiliario</i>, le cui incognite sono dette <i>artificiali</i>.
|
||||||
|
@ -454,19 +506,16 @@ export default function(props) {
|
||||||
<p>
|
<p>
|
||||||
Il vettore delle incognite artificiali è solitamente chiamato <Latex>{r`\mathbf{y}`}</Latex>.
|
Il vettore delle incognite artificiali è solitamente chiamato <Latex>{r`\mathbf{y}`}</Latex>.
|
||||||
</p>
|
</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>.
|
|
||||||
</Example>
|
|
||||||
</Panel>
|
</Panel>
|
||||||
<Panel title={"Procedimento"}>
|
<Panel title={"Procedimento"}>
|
||||||
<ol>
|
<ol>
|
||||||
<li>Crea un nuovo tableau, <b>aggiungendo variabili artificiali</b> in modo da avere una base ammissibile.</li>
|
<li>Crea un nuovo tableau, <b>aggiungendo variabili artificiali</b> in modo da avere una base ammissibile.</li>
|
||||||
<li>Sostituisci la vecchia funzione obiettivo con una nuova che <b>minimizzi la somma</b> di tutte le variabili artificiali.</li>
|
<li>Sostituisci la vecchia funzione obiettivo con una nuova che <b>minimizzi la somma</b> di tutte le variabili artificiali.</li>
|
||||||
<li><u>Fase 1</u>: <b>Risolvi</b> il nuovo problema con il simplex primale.</li>
|
<li><u>Fase 1</u>: <b>Risolvi</b> il nuovo problema con il Simplex primale.</li>
|
||||||
<li>Se il Simplex termina quando ci sono ancora <b>variabili artificiali nella base</b>, allora il poliedro è <b><Empty/></b>.</li>
|
<li>Se il Simplex termina quando ci sono ancora <b>variabili artificiali nella base</b>, allora il poliedro è <b><Empty/></b>.</li>
|
||||||
<li>Una volta che le variabili artificiali sono fuori base, <b>elimina</b> le loro colonne e la nuova funzione obiettivo.<br/></li>
|
<li>Una volta che le variabili artificiali sono fuori base, <b>elimina</b> le loro colonne e la nuova funzione obiettivo.<br/></li>
|
||||||
<li>Riporta il tableau in forma base compiendo operazioni per <b>azzerare i coefficienti</b> delle variabili di base nella funzione obiettivo.</li>
|
<li>Riporta il tableau in forma base compiendo operazioni per <b>azzerare i coefficienti</b> delle variabili di base nella funzione obiettivo.</li>
|
||||||
<li><u>Fase 2</u>: <b>Risolvi</b> il tableau con il simplex primale.</li>
|
<li><u>Fase 2</u>: <b>Risolvi</b> il tableau con il Simplex primale.</li>
|
||||||
</ol>
|
</ol>
|
||||||
</Panel>
|
</Panel>
|
||||||
</Section>
|
</Section>
|
||||||
|
@ -533,6 +582,56 @@ export default function(props) {
|
||||||
<li>Se un problema è <b><Unbounded/></b>, allora il suo duale sarà certamente <Empty/>.</li>
|
<li>Se un problema è <b><Unbounded/></b>, allora il suo duale sarà certamente <Empty/>.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</Panel>
|
</Panel>
|
||||||
|
<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</th>
|
||||||
|
<th>Duale</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><Min/></td>
|
||||||
|
<td><Max/></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><Max/></td>
|
||||||
|
<td><Min/></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Vincolo <ILatex>\leq</ILatex></td>
|
||||||
|
<td>Variabile <ILatex>\leq</ILatex></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Vincolo <ILatex>\geq</ILatex></td>
|
||||||
|
<td>Variabile <ILatex>\geq</ILatex></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Vincolo <ILatex>=</ILatex></td>
|
||||||
|
<td>Variabile <b>libera</b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Variabile <ILatex>\leq</ILatex></td>
|
||||||
|
<td>Vincolo <ILatex>\geq</ILatex></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Variabile <ILatex>\geq</ILatex></td>
|
||||||
|
<td>Vincolo <ILatex>\leq</ILatex></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Variabile <b>libera</b></td>
|
||||||
|
<td>Vincolo <ILatex>=</ILatex></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</Panel>
|
||||||
</Section>
|
</Section>
|
||||||
<Section title={"Un po' di teoria"}>
|
<Section title={"Un po' di teoria"}>
|
||||||
<Panel title={"Lemma di Farkas"}>
|
<Panel title={"Lemma di Farkas"}>
|
||||||
|
@ -541,9 +640,6 @@ export default function(props) {
|
||||||
</p>
|
</p>
|
||||||
<PLatex>{r`\mathbf{c}^T \geq \mathbf{u}^T \mathbf{A}`}</PLatex>
|
<PLatex>{r`\mathbf{c}^T \geq \mathbf{u}^T \mathbf{A}`}</PLatex>
|
||||||
<PLatex>{r`c_0 \leq \mathbf{u}^T \mathbf{b}`}</PLatex>
|
<PLatex>{r`c_0 \leq \mathbf{u}^T \mathbf{b}`}</PLatex>
|
||||||
<p>
|
|
||||||
<Todo>TODO: Cioè?</Todo>
|
|
||||||
</p>
|
|
||||||
</Panel>
|
</Panel>
|
||||||
<Panel title={"Dualità forte"}>
|
<Panel title={"Dualità forte"}>
|
||||||
<p>
|
<p>
|
||||||
|
@ -594,11 +690,8 @@ export default function(props) {
|
||||||
</Panel>
|
</Panel>
|
||||||
<Panel title={"Come funziona?"}>
|
<Panel title={"Come funziona?"}>
|
||||||
<p>
|
<p>
|
||||||
Funziona esattamente come il Simplex primale, ma opera sulle righe invece che sulle colonne, cercando di rendere <Min>positivi</Min>/<Max>negativi</Max> tutti i termini noti.
|
Funziona esattamente come il Simplex primale, ma opera sul duale.
|
||||||
</p>
|
</p>
|
||||||
<Todo>
|
|
||||||
TODO: Significa che si possono moltiplicare tutti i valori di una riga per lo stesso numero e il risultato non cambia...?
|
|
||||||
</Todo>
|
|
||||||
</Panel>
|
</Panel>
|
||||||
</Section>
|
</Section>
|
||||||
<Section title={"Analisi di sensibilità"}>
|
<Section title={"Analisi di sensibilità"}>
|
||||||
|
@ -622,7 +715,7 @@ export default function(props) {
|
||||||
</Panel>
|
</Panel>
|
||||||
<Panel title={"Rilassamento lineare"}>
|
<Panel title={"Rilassamento lineare"}>
|
||||||
<p>
|
<p>
|
||||||
Un rilassamento che rimuove il vincolo di <Todo>TODO: integrità</Todo> a un problema, trovando la sua soluzione continua.
|
Un rilassamento che rimuove il <b>vincolo di integrità</b> a un problema, trovando la sua <b>soluzione continua</b>.
|
||||||
</p>
|
</p>
|
||||||
</Panel>
|
</Panel>
|
||||||
</Section>
|
</Section>
|
||||||
|
@ -694,7 +787,7 @@ export default function(props) {
|
||||||
<td><BLatex>{r`3`}</BLatex></td>
|
<td><BLatex>{r`3`}</BLatex></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><BLatex>{r`0`}</BLatex></td>
|
<td><BLatex>{r`\frac{3}{2}`}</BLatex></td>
|
||||||
<td><BLatex>{r`\frac{1}{2}`}</BLatex></td>
|
<td><BLatex>{r`\frac{1}{2}`}</BLatex></td>
|
||||||
<td><BLatex>{r`0`}</BLatex></td>
|
<td><BLatex>{r`0`}</BLatex></td>
|
||||||
<td><BLatex>{r`1`}</BLatex></td>
|
<td><BLatex>{r`1`}</BLatex></td>
|
||||||
|
@ -734,7 +827,7 @@ export default function(props) {
|
||||||
<td><BLatex>{r`3`}</BLatex></td>
|
<td><BLatex>{r`3`}</BLatex></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><BLatex>{r`0`}</BLatex></td>
|
<td><BLatex>{r`\frac{3}{2}`}</BLatex></td>
|
||||||
<td><BLatex>{r`\frac{1}{2}`}</BLatex></td>
|
<td><BLatex>{r`\frac{1}{2}`}</BLatex></td>
|
||||||
<td><BLatex>{r`0`}</BLatex></td>
|
<td><BLatex>{r`0`}</BLatex></td>
|
||||||
<td><BLatex>{r`1`}</BLatex></td>
|
<td><BLatex>{r`1`}</BLatex></td>
|
||||||
|
@ -742,7 +835,7 @@ export default function(props) {
|
||||||
<td><BLatex>{r`\frac{6}{5}`}</BLatex></td>
|
<td><BLatex>{r`\frac{6}{5}`}</BLatex></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style={"background-color: rgba(255, 255, 0, 0.1);"}>
|
<tr style={"background-color: rgba(255, 255, 0, 0.1);"}>
|
||||||
<td><BLatex>{r`0`}</BLatex></td>
|
<td><BLatex>{r`-\frac{1}{2}`}</BLatex></td>
|
||||||
<td><BLatex>{r`-\frac{1}{2}`}</BLatex></td>
|
<td><BLatex>{r`-\frac{1}{2}`}</BLatex></td>
|
||||||
<td><BLatex>{r`0`}</BLatex></td>
|
<td><BLatex>{r`0`}</BLatex></td>
|
||||||
<td><BLatex>{r`0`}</BLatex></td>
|
<td><BLatex>{r`0`}</BLatex></td>
|
||||||
|
@ -754,6 +847,40 @@ export default function(props) {
|
||||||
</p>
|
</p>
|
||||||
</Example>
|
</Example>
|
||||||
</Panel>
|
</Panel>
|
||||||
|
<Panel title={"Divide et impera"}>
|
||||||
|
<p>
|
||||||
|
È possibile usare la tecnica <i>divide et impera</i> per rendere più efficiente l'<b>enumerazione totale</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> dell'albero:
|
||||||
|
<ul>
|
||||||
|
<li><b>depth-first</b>: permette di raggiungere immediatamente a una soluzione accettabile (ma non ottimale)</li>
|
||||||
|
<li><b>best-first</b>: permette di raggiungere più velocemente alla soluzione corretta</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
</Panel>
|
||||||
|
<Panel title={"Seca et impera"}>
|
||||||
|
<p>
|
||||||
|
È possibile combinare il metodo dei <b>tagli secanti</b> con la tecnica <b>divide et impera</b> per raggiungere ancora più velocemente a una soluzione.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Si effettuano <b>poche iterazioni</b> del metodo dei tagli secanti, e sul risultato di quelle iterazioni si applica il <b>divide et impera</b>.
|
||||||
|
</p>
|
||||||
|
</Panel>
|
||||||
|
</Section>
|
||||||
|
<Section title={"Teoria dei grafi"}>
|
||||||
|
<Panel title={"TODO"}>
|
||||||
|
<Todo>TODO: fare?</Todo>
|
||||||
|
</Panel>
|
||||||
</Section>
|
</Section>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue