Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
statnice:bakalar:b0b33opt [2025/06/04 14:00] – [Vlastní čísla a vektory] zapleka3 | statnice:bakalar:b0b33opt [2025/06/12 10:33] (current) – [Podmínky konvexity podle derivací] el_dusto | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== Použití lineární algebry v optimalizaci. Iterační algoritmy na volné lokální extrémy. Lineární programování. Konvexní množiny a funkce, konvexní úlohy. Dualita. ==== | + | ====== Použití lineární algebry v optimalizaci. Iterační algoritmy na volné lokální extrémy. Lineární programování. Konvexní množiny a funkce, konvexní úlohy. Dualita. |
[[https:// | [[https:// | ||
Line 258: | Line 258: | ||
%%< | %%< | ||
+ | Tato funkce obsahuje jak kvadratický, | ||
**Doplnění na n-tý řád (Taylorův polynom): | **Doplnění na n-tý řád (Taylorův polynom): | ||
Line 288: | Line 289: | ||
- | ===== Optimální proložení bodů podprostorem (PCA) ===== | + | ===== 3. Optimální proložení bodů podprostorem (PCA) ===== |
- | **Motivace:** Ve strojovém učení nebo klasifikaci často pracujeme s daty ve velmi vysoké dimenzi (např. tisíce či miliony rysů). PCA a SVD umožňuje „zcvrknout“ tyto rozměry na menší podprostor tak, aby se zachoval co největší rozptyl | + | Tato kapitola se věnuje metodám, které hledají |
- | PCA lze chápat dvojím způsobem: | + | **Motivace: |
- | **1. Minimální vzdálenost od podprostoru: | + | ==== Singulární rozklad matice |
- | + | ||
- | Hledáme ortonormální matici \(X\in\mathbb{R}^{m\times k}\) tak, aby | + | |
- | %%< | + | |
- | <abbr title=" | + | |
- | **2. Maximální zachycený rozptyl | + | Každou reálnou matici \( A \in \mathbb{R}^{m \times n} \) lze zapsat ve tvaru: |
- | Volíme \(X\) tak, aby projekce dat na podprostor měla co největší celkový rozptyl, tj. | + | %%< |
- | %%< | + | <abbr title=" |
- | = \max_{X^{T}X=I}\|X^{T}A\|_{F}^{2} | + | |
- | = \max_{X^{T}X=I}\mathrm{tr}\bigl(X^{T}A A^{T}X\bigr)</ | + | |
- | <abbr title=" | + | |
- | === Funkce stopa (trace) === | + | * \( U \in \mathbb{R}^{m \times m} \) – levé singulární vektory |
+ | * \( \Sigma \in \mathbb{R}^{m \times n} \) – diagonální matice singulárních čísel | ||
+ | * \( V \in \mathbb{R}^{n \times n} \) – pravé singulární vektory | ||
- | Stopa matice | + | Singulární čísla |
- | %%< | + | **Výpočet SVD: |
- | <abbr title="stopa odpovídá součtu vlastních čísel a je invariantní vůči podobnosti"> | + | * Spočteme spektrální rozklad |
+ | * Singulární čísla \( s_i = \sqrt{S_{ii}} \) | ||
+ | * Pak \( A = U S^{1/2} V^T \) | ||
- | === Výpočet PCA (kuchařka) s příkladem | + | ==== PCA jako optimalizační úloha |
- | 1. Spočtěte matici kovariancí | + | |
- | %%< | + | |
- | + | ||
- | 2. Najděte spektrální rozklad | + | |
- | %%< | + | |
- | 3. Rozdělte ortonormální bázi \(V = [\,X\mid Y\,]\) | + | PCA můžeme chápat dvěma způsoby: |
- | + | ||
- | 4. Projekce dat na \(k\)-rozměrný podprostor: | + | |
- | %%< | + | |
- | + | ||
- | 5. Chyba proložení: | + | |
- | %%< | + | |
- | **Příklad pro** | + | |
- | %%< | + | * Hledáme podprostor dimenze |
- | - %%< | + | |
- | - Eigen: %%< | + | |
- | - %%< | + | |
- | = \tfrac12\begin{pmatrix}1&1\\1& | + | |
- | = \begin{pmatrix}1.5& | + | |
- | - Chyba proložení: | + | |
- | * **Interpretace:** PCA hledá chybu, kterou uděláme, když z matice | + | * **Maximalizace zachyceného rozptylu (stopa):** |
+ | * Volíme \(X\) tak, aby projekce dat na podprostor měla co největší rozptyl: | ||
+ | * %%< | ||
- | ===== Singulární rozklad | + | Tyto dva přístupy vedou ke stejnému výsledku – podprostoru generovanému prvními \(k\) vlastními vektory |
- | **Definice: | + | === Aproximace maticí nižší hodnosti === |
- | \(U\in\mathbb{R}^{m\times m}\), \(V\in\mathbb{R}^{n\times n}\) a diagonální matice | + | |
- | \(\Sigma\in\mathbb{R}^{m\times n}\) se singulárními čísly | + | |
- | \(s_{1}\ge s_{2}\ge\cdots\ge s_{p}\ge0\) \((p=\min\{m, | + | |
- | že | + | |
- | %%< | + | |
- | <abbr title="U, V mají ortonormální sloupce (levé a pravé singulární vektory), S obsahuje singulární čísla"> | + | |
- | **Výpočet SVD:** | + | Nechť \( A \in \mathbb{R}^{m \times n} \), \( p = \min\{m,n\} \) a \( k \le p \). |
+ | Hledáme matici \( B \) hodnosti nejvýše \( k \), která je co nejblíže původní matici \( A \) ve Frobeniově normě: | ||
- | 1. Spočtěte matice | + | %%< |
- | %%< | + | <abbr title=" |
- | <abbr title=" | + | |
- | 2. Sloupce U jsou vlastní vektory matice | + | == Eckart–Youngova věta == |
- | + | ||
- | 3. Singulární čísla | + | Tato úloha má řešení dáno oříznutím SVD rozkladu |
- | + | ||
- | ===Eckart–Youngova věta=== | + | |
- | Nechť \(A\in\mathbb{R}^{m\times n}\), \(p=\min\{m, | ||
- | %%< | ||
- | je matice | ||
%%< | %%< | ||
- | B^{*} | + | A_k = \sum_{i=1}^{k} |
- | = U\, | + | </ |
- | = \sum_{i=1}^{k} | + | |
- | </ | + | |
kde | kde | ||
%%< | %%< | ||
- | S_{k} | + | \Sigma_k |
- | = \mathrm{diag}(s_{1},\dots,s_{k}, | + | |
</ | </ | ||
+ | obsahuje jen první \( k \) singulárních čísel a zbytek nulujeme. | ||
- | **Aplikace SVD: | + | Používáme tedy jen první \( k \) singulárních složek z rozkladu SVD – to zaručuje nejlepší možnou aproximaci v dané dimenzi. |
- | * Data-redukce, | + | |
- | * Řešení nesingulárních či přeurčených soustav | + | |
- | * Komprese obrázků | + | |
- | * Výpočet pseudoinverzí a regularizace | + | |
- | ===== Globální a lokální extrémy funkce na podmnožině ℝⁿ ===== | + | === Funkce stopa (trace) |
- | Nechť | + | Stopa čtvercové matice je součet diagonálních prvků: |
+ | %%< | ||
+ | <abbr title=" | ||
- | === Definice globálních a lokálních extrémů === | + | Stopu si můžeš představit jako míru „energie“ nebo rozptylu, kterou matice zachytává v prostoru – čím větší stopa, tím více informací. |
- | * **Globální minimum**: | + | |
- | bod \(x^{*}\in D\) je globální minimum, pokud | + | ==== Výpočet PCA (krok za krokem) ==== |
- | %%< | + | |
- | * **Globální maximum**: | + | |
- | bod \(x^{*}\in D\) je globální maximum, pokud | + | 1. Spočítáme matici kovariancí: |
- | %%< | + | * Matice \(S = A A^T\) je tzv. kovarianční matice, která říká, jak moc a v jakých směrech se data mění. |
- | * **Lokální minimum**: | + | |
- | bod \(x^{*}\in D\) je lokální minimum, pokud existuje otevřené okolí \(U \subset D\) takové, že | + | 2. Provedeme spektrální rozklad: |
- | %%< | + | |
- | * **Lokální maximum**: | + | |
- | bod \(x^{*}\in D\) je lokální maximum, pokud existuje otevřené okolí | + | 3. Zvolíme první |
- | %%< | + | |
- | Pokud je \(f\) konvexní na celém oboru \(D\), pak lokální minimum je zároveň globálním minimem; obdobně pokud je \(f\) konkávní, pak lokální maximum je globálním maximem. | + | 4. Projekce dat: %%< |
- | Pro nalezení lok min a max použijeme Hessovu matici a nulové první derivace. | + | 5. Chyba projekce: %%< |
- | + | ||
- | ===== Vázané extrémy pomocí Lagrangeových multiplikátorů ===== | + | |
- | Pokud pro funkci \(f(x)\) hledáme extrém pod podmínkami | + | === Příklad === |
- | \[ | + | |
- | g_{i}(x)=0,\quad i=1, | + | |
- | \] | + | |
- | postupujeme následovně: | + | |
- | **Lagrangeova funkce:** | + | Nechť: |
- | + | %%< | |
- | Definujeme | + | |
- | %%< | + | |
- | kde \(\lambda = (\lambda_{1}, | + | |
- | **Nutné podmínky (stacionární body) na hladké | + | 1. Kovarianční matice: %%< |
- | Hledáme \((x^{*}, | + | 2. Spektrální rozklad: |
- | %%< | + | |
- | <abbr title=" | + | |
- | **Kontrola hranic domény (pokud je doména omezená nebo existují jiné ohraničení):** | + | 3. Výběr podprostoru: %%< |
- | + | ||
- | Kromě vnitřních stacionárních bodů na povrchu \(\{g_i(x)=0\}\) je třeba zkontrolovat i body, kde povrch naráží na hranici původní množiny \(D\) (např. krajní body, rohy). V těchto bodech se gradient \(\nabla_{x}\mathcal{L}\) nemusí rovnat nule, ale mohou vzniknout extrémy právě kvůli hranici. Zároveň musíme vyšetřit i původní funkci \(f(x)\) pro extrémy, které spadnou do omezení. | + | |
- | **Druhé řádové podmínky (určení typu extrému) na povrchu:** | + | 4. Projekce: %%< |
- | + | ||
- | Označme Hessian Lagrangeovy funkce vzhledem k \(x\) jako | + | |
- | %%< | + | |
- | Pro každý kandidátní bod \(x^{*}\) (splňující \(g_i(x^{*})=0\) a případně ležící na hranici domény) zkontrolujeme definitnost zrestrikovaného Hessianu \(H(x^{*},\lambda^{*})\) na podprostoru tangentu k množině \(\{g_{i}(x)=0\}\): | + | |
- | * Pokud je zrestrikovaný Hessian pozitivně definitní, pak \(x^{*}\) je lokální minimum. | + | |
- | * Pokud je zrestrikovaný Hessian negativně definitní, pak \(x^{*}\) je lokální maximum. | + | |
- | * Jinak je \(x^{*}\) sedlovým bodem na povrchu definovaném omezeními. | + | |
- | <abbr title=" | + | |
- | **Výběr globálního extrému | + | 5. Chyba proložení: |
- | + | ||
- | | + | **Interpretace: |
- | + | ||
- | ===== Úloha lineárního programování (LP) ===== | + | |
+ | ===== 4. Globální a lokální extrémy funkce na podmnožině ℝⁿ ===== | ||
+ | |||
+ | Extrémy mohou být: | ||
+ | * **volné**, tj. hledáme optimum | ||
+ | * nebo **vázané**, | ||
+ | |||
+ | V praxi často hledáme nejlepší řešení (např. nejnižší cenu, nejkratší trasu, maximální efektivitu), | ||
+ | |||
+ | ==== Definice ==== | ||
+ | |||
+ | Mějme funkci \( f: D \subset \mathbb{R}^n \rightarrow \mathbb{R} \). | ||
+ | |||
+ | | ||
+ | * **Lokální maximum**: | ||
+ | | ||
+ | * **Globální maximum**: | ||
+ | |||
+ | Lokální extrém je jen „nejlepší v okolí“, zatímco globální je nejlepší **v celé množině**. | ||
+ | |||
+ | ==== Kdy je extrém globální ==== | ||
+ | |||
+ | Pokud je funkce **konvexní**, | ||
+ | |||
+ | Tato vlastnost je velmi důležitá v optimalizaci – nemusíme hledat celé globální optimum, stačí najít lokální a víme, že je to ono. | ||
+ | |||
+ | ==== Hledání extrémů ==== | ||
+ | |||
+ | Najít extrém neznamená jen najít hodnotu funkce, ale určit i bod, kde se nachází, a typ extrému. | ||
+ | |||
+ | * **Volné extrémy**: použijeme **podmínku nulového gradientu** a **Hessovu matici** pro test typu extrému. | ||
+ | * **Vázané extrémy**: použijeme **Lagrangeovy multiplikátory**. | ||
+ | |||
+ | ==== Příklady ==== | ||
+ | |||
+ | 1. **Volný extrém: | ||
+ | * Např. funkce %%< | ||
+ | * má globální minimum v bodě %%< | ||
+ | * Jde o tvar trychtýře – minimum je ve středu a zároveň lokální i globální. | ||
+ | |||
+ | 2. **Vázaný extrém: | ||
+ | * Minimalizujeme %%< | ||
+ | * za podmínky %%< | ||
+ | * Extrém se hledá pouze na přímce, ne na celé rovině. | ||
+ | |||
+ | Takové úlohy se řeší metodou **Lagrangeových multiplikátorů**, | ||
+ | |||
+ | ==== Dělení extrémů podle kontextu ==== | ||
+ | |||
+ | | Typ extrému | ||
+ | |---------------|--------------------|-------------------------| | ||
+ | | Volný | ||
+ | | Vázaný | ||
+ | | Globální | ||
+ | | Lokální | ||
+ | |||
+ | ===== 5. Volné lokální extrémy diferencovatelných funkcí ===== | ||
+ | |||
+ | Zde hledáme extrémy hladkých funkcí \( f: | ||
+ | |||
+ | === Podmínka 1. řádu === | ||
+ | |||
+ | Stacionární bod \( x^* \) je kandidát | ||
+ | %%< | ||
+ | <abbr title=" | ||
+ | |||
+ | To znamená, že funkce nemá v tomto bodě žádný směr, kterým by mohla růst nebo klesat – ležíme v „rovnovážné poloze“. | ||
+ | |||
+ | === Podmínka 2. řádu === | ||
+ | |||
+ | Pro rozhodnutí typu stacionárního bodu, zda jde o minimum, maximum nebo sedlový bod, použijeme **Hessovu matici** \( H_f(x) \) – matici druhých derivací. | ||
+ | * Pokud je \( H \succ 0 \), jedná se o ostré lokální minimum. | ||
+ | * Pokud je \( H \succeq 0 \), jde o minimum, které ale nemusí být ostré. | ||
+ | * Pokud je \( H \prec 0 \), máme ostré lokální maximum. | ||
+ | * Pokud je \( H \preceq 0 \), jde o maximum, které nemusí být ostré. | ||
+ | * Pokud je Hessova matice indefinitní, | ||
+ | |||
+ | |||
+ | Tato klasifikace vychází z tvaru funkce v okolí bodu – pomocí křivosti poznáme, zda se funkce chová jako dno mísy, vrchol kopce nebo sedlo. | ||
+ | |||
+ | ==== Numerické metody ==== | ||
+ | |||
+ | Když analyticky nelze najít řešení, použijeme **iterační metody** – postupně se přibližujeme k optimu: | ||
+ | |||
+ | * **Obecná iterace: | ||
+ | * Volíme počáteční bod \(x_0\), směr \(v_k\) | ||
+ | * Iterace: | ||
+ | * Směr \(v_k\) je **sestupný**, | ||
+ | |||
+ | * V každém kroku tedy jdeme směrem, který zaručeně zmenšuje hodnotu funkce – tím se přibližujeme k minimu. | ||
+ | |||
+ | * **Gradientní metoda (největší spád): | ||
+ | * Směr je záporný gradient: | ||
+ | * Jednoduchá, | ||
+ | |||
+ | * Jde o nejjednodušší metodu: jdeme „dolů z kopce“ po nejstrmější cestě, ale bez přizpůsobení křivosti terénu. | ||
+ | |||
+ | * **Newtonova metoda: | ||
+ | * Zohledňuje zakřivení funkce pomocí Hessovy matice: | ||
+ | * Rychlá (kvadratická) konvergence, | ||
+ | |||
+ | * Funguje dobře, pokud máme „dobrý start“ a funkce je pěkně zakřivená – jinak může selhat. | ||
+ | |||
+ | * **Gauss-Newtonova metoda: | ||
+ | * Vhodná pro funkce, které | ||
+ | * Iterace: | ||
+ | * kde \( J \) je Jacobiho matice funkce \( g(x) \) | ||
+ | |||
+ | * Gauss-Newton je zjednodušená verze Newtonovy metody, která používá jen první derivace. | ||
+ | |||
+ | * **Levenberg-Marquardtova metoda: | ||
+ | * Kombinuje robustnost gradientní metody s rychlostí Gauss-Newtonovy | ||
+ | * Iterace: | ||
+ | * Parametr \( \mu > 0 \) umožňuje plynule přecházet mezi oběma metodami | ||
+ | |||
+ | * Pokud Gauss-Newton selhává, přidáme regularizační člen \( \mu I \), čímž omezíme „skoky“ v citlivých oblastech – metoda se chová stabilněji. | ||
+ | |||
+ | |||
+ | |||
+ | ===== 6. Lokální extrémy diferencovatelných funkcí vázané rovnostmi ===== | ||
+ | |||
+ | Pokud hledáme extrém funkce \( f(x) \) za podmínky, že proměnné \( x \in \mathbb{R}^n \) musí splňovat rovnosti \( g_i(x) = 0 \), musíme vzít v úvahu nejen chování samotné funkce, ale i **omezení**, | ||
+ | |||
+ | Taková úloha má tvar: | ||
+ | %%< | ||
+ | |||
+ | Tyto rovnosti určují množinu povolených řešení – tzv. **povrch**. Extrém hledáme **na tomto povrchu**, tedy jen mezi body, které splňují dané podmínky. | ||
+ | |||
+ | === Podmínka prvního řádu – Lagrangeovy multiplikátory === | ||
+ | |||
+ | Podmínky řešíme pomocí **Lagrangeovy funkce**: | ||
+ | %%< | ||
+ | <abbr title=" | ||
+ | |||
+ | Bod \( x^* \in \mathbb{R}^n \) je kandidátem na extrém, pokud existuje vektor multiplikátorů \( \lambda = (\lambda_1, | ||
+ | |||
+ | * %%< | ||
+ | * %%< | ||
+ | |||
+ | Tato podmínka říká, že v bodě \( x^* \) je gradient funkce \( f \) lineární kombinací gradientů omezení \( g_i \) – tedy **ležící v ortogonálním doplňku tečného prostoru**. | ||
+ | |||
+ | Jinými slovy: v optimu se nelze „vydat směrem“ uvnitř množiny bez toho, aby se zvyšovala hodnota funkce. | ||
+ | |||
+ | === Geometrická interpretace === | ||
+ | |||
+ | Tečný prostor k množině \( \{x \mid g(x) = 0\} \) v bodě \( x^* \) je tvořen vektory \( v \), pro které platí: %%< | ||
+ | – tedy množinou vektorů kolmých | ||
+ | |||
+ | Gradient funkce \( f \) musí ležet ve směru normály, tj. být kombinací \(\nabla g_i\). | ||
+ | |||
+ | === Druhý řád – určení typu extrému === | ||
+ | |||
+ | Hessovu matici Lagrangeovy funkce vzhledem k \( x \) označme: | ||
+ | %%< | ||
+ | |||
+ | Pro rozhodnutí o typu extrému: | ||
+ | * Zkoumáme **zrestrikovaný Hessian** na tečný prostor | ||
+ | * Pokud je pozitivně definitní, jde o **lokální minimum**, | ||
+ | * Pokud negativně definitní, jde o **lokální maximum**, | ||
+ | * Pokud není ani jedno – **sedlový bod**. | ||
+ | |||
+ | === Kontrola hranic množiny === | ||
+ | |||
+ | Pokud množina \( D \), na které optimalizujeme, | ||
+ | |||
+ | To zahrnuje: | ||
+ | * krajní body množiny, | ||
+ | | ||
+ | * a další situace, kdy už neplatí standardní podmínky. | ||
+ | |||
+ | === Postup | ||
+ | |||
+ | - Sestavíme Lagrangeovu funkci \( \mathcal{L}(x, | ||
+ | - Najdeme kandidátní body \( (x^*, \lambda^*) \), které splňují: | ||
+ | * \( \nabla_x \mathcal{L}(x^*, | ||
+ | * \( g_i(x^*) = 0 \) | ||
+ | - Zkontrolujeme druhý řád – restrikci Hessovy matice. | ||
+ | - Pokud je doména omezená, zkontrolujeme i hraniční body. | ||
+ | - Vybereme bod s nejlepší hodnotou \( f(x^*) \). | ||
+ | |||
+ | === Aplikace === | ||
+ | |||
+ | Lagrangeovy multiplikátory umožňují řešit mnoho praktických úloh: | ||
+ | * minimalizace nákladů při daných zdrojích, | ||
+ | * optimalizace návrhů pod strukturálními podmínkami, | ||
+ | * nalezení extrému na parametrické křivce nebo ploše, | ||
+ | * ekonomické rovnováhy s rozpočtovým omezením. | ||
+ | |||
+ | ===== 7. Úloha lineárního programování (LP) ===== | ||
- | Lineární programování (LP) je optimalizační disciplína, | + | Lineární programování (LP) je metoda pro **optimalizaci lineární funkce** při **lineárních omezeních**. Typicky |
=== Úvod k teorii lineárního programování, | === Úvod k teorii lineárního programování, | ||
Lineární programování (LP) pracuje s lineární cílovou funkcí | Lineární programování (LP) pracuje s lineární cílovou funkcí | ||
- | %%< | + | %%< |
- | a konvexním polyedrem definovaným lineárními omezeními (rovnicemi či nerovnicemi). | + | a konvexním polyedrem definovaným lineárními omezeními (rovnicemi či nerovnicemi). |
+ | Hlavními body teorie jsou: | ||
* **Konvexní polyedr a vrcholy** | * **Konvexní polyedr a vrcholy** | ||
- | Soubor | + | * soubor |
- | %%< | + | |
- | tvoří konvexní množinu (polyedr). Každý takový polyedr lze popsat buď jako průnik poloprostorů, | + | * = Řešení soustavy omezení \( A x \le b \) tvoří konvexní oblast v prostoru. |
- | * **Vrcholy (extermální body)** | + | * **Vrcholy (extermální body)** |
- | | + | * vrcholem |
- | | + | |
+ | * = Body, které nelze napsat jako průměr jiných bodů v oblasti – právě v těchto bodech může ležet optimum. | ||
- | * **Optimum leží ve vrcholu** | + | * **Optimum leží ve vrcholu** |
- | | + | * vzhledem |
- | %%< | + | |
- | je lineární, musí globální optimum (minimální či maximální hodnota) na konvexním polyedru nastat alespoň v jednom vrcholu. Jinými slovy, pro LP není třeba zkoumat vnitřek polyedru: stačí prohledat vrcholy (popř. hrany mezi dvěma vrcholy, pokud existuje více optimálních vrcholů). | + | * = Pokud má LP optimum, pak existuje alespoň v jednom z vrcholů této oblasti. Nemusíme tedy prohledávat celý prostor, stačí kontrolovat vrcholy. |
* **Více optimálních vrcholů (degenerace)** | * **Více optimálních vrcholů (degenerace)** | ||
- | Pokud existují dva vrcholy \(x^{(1)}, x^{(2)}\) s | + | * Pokud existují dva vrcholy \(x^{(1)}, x^{(2)}\) s %%< |
- | %%< | + | |
- | pak každá konvexní kombinace | + | |
- | %%< | + | * = Pokud má více vrcholů stejnou hodnotu cílové funkce, optimum je libovolná jejich kombinace – tedy i celé hrany mezi nimi. |
- | je také optimální a leží na hraně spojující tyto dva vrcholy. To znamená, že optimální množina může být celá hrana (nejen izolovaný vrchol). | + | |
* **Geometrické důsledky** | * **Geometrické důsledky** | ||
- | | + | |
- | - Pokud je polyedr omezený a nevyprazdňuje se (existuje aspoň jeden vrchol), pak existuje alespoň jedno globální optimum v některém vrcholu. | + | - Pokud je polyedr omezený a nevyprazdňuje se (existuje aspoň jeden vrchol), pak existuje alespoň jedno globální optimum v některém vrcholu. |
=== Základní tvar LP === | === Základní tvar LP === | ||
+ | |||
Obecná formulace (kanonický tvar v „nerovnicích“) je: | Obecná formulace (kanonický tvar v „nerovnicích“) je: | ||
Line 492: | Line 624: | ||
Každou úlohu LP lze převést do tohoto rovnicového tvaru pomocí dvou úprav: | Každou úlohu LP lze převést do tohoto rovnicového tvaru pomocí dvou úprav: | ||
- | 1. **Přidání nezáporných slack proměnných** | + | 1. **Přidání nezáporných slack proměnných** |
- | | + | |
- | %%< | + | |
+ | 2. **Vyjádření neomezených reálných proměnných** (převedení volných proměnných) | ||
+ | * Každou proměnnou bez znaménkového omezení rozložíme jako rozdíl dvou nezáporných: | ||
+ | |||
+ | |||
+ | ==== Varianty zadání ==== | ||
+ | |||
+ | Úlohu LP lze převádět mezi různými tvary – např. aby vyhovovala algoritmům (simplex, metoda vnitřního bodu) nebo vizualizaci. | ||
+ | |||
+ | * **Minimalizace vs. maximalizace: | ||
+ | * Maximalizaci převedeme na minimalizaci změnou znaménka: %%< | ||
+ | |||
+ | * **Rovnosti a nerovnosti: | ||
+ | * Rovnost převedeme na dvě opačné nerovnosti: %%< | ||
+ | |||
+ | * **Proměnné bez znaménka: | ||
+ | * Volná proměnná se nahradí rozdílem dvou nezáporných: | ||
+ | |||
+ | * **Slack proměnné (u nerovností): | ||
+ | * Každou nerovnost \(a_i^T x \le b_i\) převedeme na rovnici přidáním nové nezáporné proměnné: %%< | ||
- | 2. **Vyjádření neomezených reálných proměnných** | + | Tím dostaneme |
- | | + | |
- | %%< | + | |
- | === Převod LP do kanonického tvaru (stručně) | + | ==== Převod LP do kanonického tvaru ==== |
**Původní úloha (max): | **Původní úloha (max): | ||
Line 526: | Line 675: | ||
\] | \] | ||
- | === Typické použití LP === | + | === Typické použití LP === |
- | LP se uplatňuje v mnoha oblastech, například: | + | |
- | * **Plánování výroby a alokace zdrojů** – maximalizace zisku z produktů nebo minimalizace výrobních nákladů, kde \(x_j\) jsou počty vyrobených jednotek, \(A\,x \le b\) zachycuje omezení surovin, kapacit, pracovních hodin. | + | |
- | * **Směrování a toky v síti** – minimalizace nákladů na přepravu z bodu A do B s omezeními kapacit hran; LP formulace pro \emph{min-cost flow}. | + | |
- | * **Optimalizace transportních problémů (assignment, | + | |
- | === Přibližné řešení přeurčených soustav === | + | Lineární programování se používá v různých oborech, kde je třeba nalézt nejlepší možné řešení |
- | Uvažujme přeurčenou soustavu lineárních rovnic \(A\,x \approx b\), kde \(A\in\mathbb{R}^{m\times n}\), \(m>n\). Místo klasického minimaxu v L₂-normě (least squares) můžeme hledat | + | |
- | === L∞-norm (max-norm) | + | * **Plánování výroby a alokace zdrojů** |
- | Chceme minimalizovat největší odchylku: | + | * Např. maximalizace zisku z produktů nebo minimalizace nákladů. |
- | %%< | + | * Omezující podmínky mohou být kapacity strojů, pracovní doba, množství surovin apod. |
- | \min_{x\in\mathbb{R}^{n}} \, | + | * **Směrování a toky v síti** |
- | \; | + | * Minimalizace nákladů na přepravu v dopravní síti. |
- | </ | + | * Omezení tvoří kapacity hran a požadavky na vstup/ |
- | Formulujeme ekvivalentně: | + | * **Transportní a přiřazovací problémy** |
- | %%< | + | * Např. optimální distribuce zboží ze skladů do prodejen. |
- | \min_{x, | + | * Přiřazování pracovníků k úkolům nebo trasám. |
- | \quad\text{za podmínek}\quad | + | * **Dietní problém** |
- | -\,t \;\le\; a_{i}^{T}x - b_{i}\; | + | * Hledání nejlevnější kombinace potravin splňující výživové normy. |
- | </ | + | * Každá potravina má známé nutriční složení a cenu. |
+ | * **Ekonomické rovnováhy a plánování** | ||
+ | * Například v makroekonomii při modelování rovnováh v sektorech nebo při investičním plánování. | ||
+ | |||
+ | LP slouží jako základ pro složitější varianty – např. celočíselné, | ||
+ | |||
+ | ==== Přibližné řešení přeurčené soustavy ==== | ||
+ | |||
+ | Přeurčená soustava rovnic \( A x = b \), kde počet rovnic \( m \) převyšuje počet neznámých \( n \), obvykle nemá přesné řešení. Hledáme proto takové \( x \), které dává nejlepší možné přiblížení – tj. minimalizuje odchylku \( A x - b \) podle zvolené normy. | ||
+ | |||
+ | Typické volby: | ||
+ | |||
+ | * **1-norma (součet absolutních odchylek): | ||
+ | * %%< | ||
+ | |||
+ | * **∞-norma (maximální odchylka): | ||
+ | * %%< | ||
+ | |||
+ | Obě tyto úlohy lze převést na lineární programování (LP) zavedením pomocných proměnných a vhodných lineárních omezení. | ||
+ | |||
+ | == L∞-norm (max-norm) == | ||
+ | | ||
+ | | ||
| | ||
Výsledkem je LP v proměnných \((x_1, | Výsledkem je LP v proměnných \((x_1, | ||
- | === L₁-norm (taxicab-norma) | + | == L₁-norm (taxicab-norma) == |
- | Chceme minimalizovat součet absolutních odchylek: | + | |
- | %%< | + | |
- | \min_{x\in\mathbb{R}^{n}} \, | + | |
- | \; | + | |
- | </ | + | |
- | Formulujeme ekvivalentně: | + | |
- | %%< | + | |
- | \min_{x, | + | |
- | \quad\text{za podmínek}\quad | + | |
- | -\,u_{i} \;\le\; a_{i}^{T}x - b_{i}\; | + | |
- | u_{i}\; | + | |
- | </ | + | |
- | Nalezené \(\{u_{i}^{*}\}\) jsou pak absolutní odchylky a \(\sum_i u_i^*\) je minimální součet. | + | |
=== Kompletní příklad přeurčené soustavy v L₁ a L∞ === | === Kompletní příklad přeurčené soustavy v L₁ a L∞ === | ||
Line 661: | Line 817: | ||
=== Řešení lineárního programu (stručně) === | === Řešení lineárního programu (stručně) === | ||
- | Po převedení LP do kanonického (rovnicového) tvaru | + | Po převedení LP do kanonického (rovnicového) tvaru %%< |
- | %%< | + | |
- | věnujeme pozornost následujícím možnostem: | + | řešíme optimalizační úlohu nad konvexní množinou řešení (polyedrem). Existuje několik přístupů: |
* **Vyhledání vrcholů a porovnání cílové funkce** | * **Vyhledání vrcholů a porovnání cílové funkce** | ||
- | - Najdeme všechny vrcholy | + | * Všechny vrcholy |
- | - **výhoda:** pro malé problémy | + | |
- | | + | * Vyhodnotíme hodnotu cílové funkce \(c^T x\) ve všech vrcholech a zvolíme nejlepší. |
+ | * **Výhoda: | ||
+ | * **Nevýhoda: | ||
* **Simplexová metoda (pohyb po hranách polyedru)** | * **Simplexová metoda (pohyb po hranách polyedru)** | ||
- | | + | * Nehledáme všechny vrcholy – postupně se přesouváme z jednoho vrcholu k sousednímu, |
- | | + | * V každém kroku vybíráme bázové proměnné a aktualizujeme tzv. simplexovou tabulku. |
- | | + | * Algoritmus konverguje k optimu v konečně mnoha krocích, pokud nenastane degenerace. |
- | - **Nevýhoda:** Může se zacyklit | + | * **Výhoda: |
+ | * **Nevýhoda: | ||
+ | |||
+ | ===== 8. Geometrie LP ===== | ||
+ | |||
+ | Geometrie lineárního programování je založena na vlastnostech **konvexních množin** a **mnohostěnů (polyedrů)**. LP úloha se řeší hledáním extrému lineární funkce na takové množině. | ||
+ | |||
+ | ==== Konvexní množiny ==== | ||
+ | |||
+ | * Množina \(C \subseteq \mathbb{R}^n\) je **konvexní**, | ||
+ | |||
+ | * Ekvivalentně: | ||
+ | |||
+ | * Konvexní množiny jsou důležité, | ||
+ | * minimum lineární funkce na konvexní množině je dosaženo na hranici (nejčastěji ve vrcholu), | ||
+ | * každé lokální minimum je zároveň globální. | ||
+ | |||
+ | ==== Polyedr (konvexní mnohostěn) ==== | ||
+ | |||
+ | * **Polyedr** je průnik konečně mnoha poloprostorů, | ||
+ | |||
+ | * Je vždy konvexní, ale nemusí být omezený (např. otevřený klín nebo nekonečný paprsek). | ||
+ | * Pokud polyedr **neobsahuje přímku**, má extrémní body – lze tedy hledat optimum. | ||
+ | * Pokud obsahuje přímku, minimum lineární funkce často neexistuje nebo je dosaženo „v nekonečnu“. | ||
+ | * Každý polyedr má: | ||
+ | * **vrcholy (extrémní body)** – body, které nelze vyjádřit jako konvexní kombinace jiných bodů množiny, | ||
+ | * **hrany, fasety, stěny** – tj. geometrické části různých dimenzí: | ||
+ | * 0D – vrchol, | ||
+ | * 1D – hrana, | ||
+ | * \(n{-}1\)D – faseta. | ||
+ | |||
+ | ==== Extrémní body ==== | ||
+ | |||
+ | * Bod \(x \in P\) je **extrémní bod** (vrchol), pokud neexistují dva různé body \(x_1, x_2 \in P\), že: %%< | ||
+ | |||
+ | * Algebraicky odpovídají **základním řešením** soustavy rovnic. | ||
+ | * Extrémní body existují právě tehdy, když množina řešení neobsahuje přímku. | ||
+ | * V LP se optimální řešení (pokud existuje) nachází vždy v některém extrémním bodě polyedru přípustných řešení. | ||
+ | * Minimum lineární funkce | ||
+ | * Tato stěna je průnik s tzv. **opěrnou nadrovinou**: | ||
+ | |||
+ | |||
+ | ===== 9. Dualita v LP ===== | ||
+ | |||
+ | Každé úloze lineárního programování (tzv. **primární úloze**) odpovídá jiná LP úloha – tzv. **duální úloha**. Obě spolu souvisí: řešení jedné poskytuje informace o řešení druhé a zároveň může sloužit jako nástroj pro jednodušší nalezení optima. | ||
+ | |||
+ | ==== Primární a duální úloha ==== | ||
+ | |||
+ | Nechť máme primární úlohu ve tvaru: %%< | ||
+ | |||
+ | K ní přísluší duální úloha: %%< | ||
+ | * Vektory \(x\) a \(y\) jsou proměnné v primární a duální úloze. | ||
+ | * Matice a vektory jsou převrácené – omezení primalu se stávají cílovou funkcí dualu a naopak. | ||
+ | * Duální úloha je tzv. **reverzibilní úprava** primární – přechod mezi nimi je čistě formální. | ||
+ | |||
+ | ==== Slabá dualita ==== | ||
+ | |||
+ | * **Věta o slabé dualitě: | ||
+ | * Pro každé přípustné řešení \(x\) primární úlohy a každé přípustné \(y\) duální úlohy platí: %%< | ||
+ | * Duální hodnota je tedy **dolní mez** primalu. | ||
+ | |||
+ | * Pokud se stane, že: %%< | ||
+ | * pro nějaké přípustné dvojice \((x^*, y^*)\), pak jsou **obě řešení optimální**. | ||
+ | |||
+ | ==== Silná dualita ==== | ||
+ | |||
+ | * **Věta o silné dualitě: | ||
+ | * Pokud má primární úloha nebo duální úloha **optimální řešení**, | ||
+ | * druhá úloha má také řešení, | ||
+ | * a platí: %%< | ||
+ | |||
+ | * Tato rovnost se označuje jako **certifikát optimality** – potvrzuje, že nalezené řešení je opravdu optimum. | ||
+ | |||
+ | * Ekvivalentně platí: | ||
+ | * Primal má optimum ⇔ dual má optimum ⇔ hodnoty jsou stejné. | ||
+ | |||
+ | ==== Komplementarita ==== | ||
+ | |||
+ | | ||
+ | * Jsou splněny právě tehdy, když jsou obě řešení | ||
+ | * Pro každé \(i\): %%< | ||
+ | * Pro každé \(j\): %%< | ||
+ | * Obecně: %%< | ||
+ | |||
+ | * Jinými slovy: **každá podmínka buď svazuje | ||
+ | |||
+ | ==== Význam a využití ==== | ||
+ | * Dualita v LP umožňuje: | ||
+ | * jednodušší konstrukci algoritmů (např. dual simplex), | ||
+ | * odhad kvality řešení primalu pomocí dualu (dolní/ | ||
+ | * výpočet **stínových cen** – jak moc se zlepší optimum, když uvolníme omezení, | ||
+ | * rozhodování o významu jednotlivých omezení a jejich dopadu na výsledek. | ||
+ | |||
+ | * V praxi se primal a duální řešení často hledají současně – např. v simplexové metodě se během výpočtu tvoří i informace o duálu. | ||
+ | |||
+ | ===== 10. Konvexní funkce a konvexní optimalizace ===== | ||
+ | |||
+ | Konvexní funkce tvoří základ moderní optimalizace – mají příznivé geometrické i analytické vlastnosti. Hledání minima konvexní funkce je jednodušší, | ||
+ | |||
+ | ==== Definice konvexní funkce ==== | ||
+ | |||
+ | * Funkce \( f: \mathbb{R}^n \to \mathbb{R} \) je **konvexní**, | ||
+ | |||
+ | * Funkce je **striktně konvexní**, | ||
+ | |||
+ | * Konvexita znamená, že graf funkce je „ohnutý směrem nahoru“. | ||
+ | |||
+ | ==== Epigraf a subkontura ==== | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | ==== Podmínky konvexity podle derivací ==== | ||
+ | |||
+ | Pokud je \(f\) diferencovatelná: | ||
+ | |||
+ | | ||
+ | |||
+ | Pokud je \(f\) dvakrát diferencovatelná: | ||
+ | |||
+ | | ||
+ | |||
+ | ==== Úloha konvexní optimalizace ==== | ||
+ | |||
+ | * Obecná úloha konvexní optimalizace má tvar: %%< | ||
+ | * kde: | ||
+ | * \( f: \mathbb{R}^n \to \mathbb{R} \) je konvexní funkce, | ||
+ | * \( C \subseteq \mathbb{R}^n \) je konvexní množina (např. množina omezení). | ||
+ | |||
+ | * Důležité vlastnosti: | ||
+ | * Pokud je funkce i množina omezení konvexní ⇒ **každé lokální minimum je globální**. | ||
+ | * Existují efektivní algoritmy (např. metoda vnitřního bodu, subgradienty, | ||
+ | |||
+ | * Typické aplikace: | ||
+ | * Optimalizace ztrátové funkce v machine learningu (ridge, LASSO), | ||
+ | * Portfolio management (mean-variance model), | ||
+ | * Řízení systémů a model prediktivního řízení (MPC), | ||
+ | * Design sítí, rozpočtové plánování. | ||
- | ===== Dualita v LP ===== | ||
- | ===== Konvexní funkce ====== |