Kvadratické programování - Quadratic programming
![]() | tento článek potřebuje pozornost odborníka na matematiku. Specifický problém je: Některé položky na této stránce vyžadují vysvětlení a / nebo odborné ověření.Února 2017) ( |
Kvadratické programování (QP) je proces řešení speciálního typu matematická optimalizace problém —Konkrétně (lineárně omezený) problém kvadratické optimalizace, tj. Problém optimalizace (minimalizace nebo maximalizace) a kvadratická funkce několika proměnných podléhajících lineárnímu omezení na tyto proměnné. Kvadratické programování je zvláštní typ nelineární programování.
Formulace problému
Kvadratický problém programování s n proměnné a m omezení lze formulovat následovně.[1]Dané:
- skutečnou hodnotu, n-dimenzionální vektor C,
- an n × n-dimenzionální skutečné symetrická matice Q,
- an m × n-dimenzionální skutečná matice A, a
- an m-dimenzionální reálný vektor b,
cílem kvadratického programování je najít n-dimenzionální vektor X, to bude
kde XT označuje vektor přemístit z . Zápis AX ⪯ b znamená, že každá položka vektoru AX je menší než nebo se rovná odpovídajícímu vstupu vektoru b (nerovnost po částech).
Nejmenší čtverce
Jako zvláštní případ, když Q je symetrický pozitivní určitý, nákladová funkce se sníží na nejmenší čtverečky:
kde Q = RTR vyplývá z Choleský rozklad z Q a C = -RT d. Naopak jakýkoli takto omezený program nejmenších čtverců lze ekvivalentně zarámovat jako QP, a to i pro generické nečtverečné R matice.
Zobecnění
Při minimalizaci funkce F v sousedství nějakého referenčního bodu X0, Q je nastaven na jeho Hesenská matice H(F(X0)) a C je nastaven na svůj gradient ∇F(X0). Související problém s programováním, kvadraticky omezené kvadratické programování, lze představovat přidáním kvadratických omezení k proměnným.
Metody řešení
U obecných problémů se běžně používá řada metod, včetně
V případě, že Q je pozitivní určitý, problémem je speciální případ obecnější oblasti konvexní optimalizace.
Omezení rovnosti
Kvadratické programování je obzvláště jednoduché, když Q je pozitivní určitý a existují pouze omezení rovnosti; konkrétně je proces řešení lineární. Používáním Lagrangeovy multiplikátory a při hledání extrému Lagrangeova, lze snadno ukázat, že řešení problému omezeného rovností
je dána lineárním systémem
kde je sada Lagrangeových multiplikátorů, které společně vycházejí z řešení .
Nejjednodušší způsob přístupu k tomuto systému je přímé řešení (například Faktorizace LU ), což je pro malé problémy velmi praktické. U velkých problémů systém představuje určité neobvyklé obtíže, zejména to, že problém není nikdy kladně definitivní (i když je), takže je potenciálně velmi obtížné najít dobrý numerický přístup a existuje mnoho přístupů, z nichž si můžete vybrat v závislosti na problému.[4]
Pokud omezení nepropojují proměnné příliš těsně, relativně jednoduchým útokem je změna proměnných tak, aby byla omezení bezpodmínečně splněna. Předpokládejme například (zobecnění na nenulovou hodnotu je jednoduché). Podíváme-li se na omezující rovnice:
zavést novou proměnnou definován
kde má rozměr minus počet omezení. Pak
a pokud je vybrán tak, aby rovnice omezení bude vždy splněna. Nalezení takové znamená najít prázdný prostor z , což je víceméně jednoduché v závislosti na struktuře . Nahrazení do kvadratické formy dává neomezený problém s minimalizací:
jehož řešení je dáno:
Za určitých podmínek dne , redukovaná matice bude kladně definitivní. Je možné napsat variaci na metoda konjugovaného gradientu který se vyhýbá výslovnému výpočtu .[5]
Lagrangeova dualita
Lagrangian dvojí QP je také QP. Abychom to viděli, zaměřme se na případ, kdy a Q je kladně definitivní. Píšeme Lagrangian fungovat jako
Definování (Lagrangeovy) duální funkce tak jako , najdeme infimum z , použitím a pozitivní definitivnost Q:
Proto je duální funkce
a tak Lagrangeova dvojka QP je
Kromě Lagrangeovy teorie duality existují i další dvojice dualit (např. Wolfe, atd.).
Složitost
Pro pozitivní určitý Q, elipsoidní metoda řeší problém v (slabě) polynomiální čas.[6] Pokud na druhou stranu Q je neurčitý, pak je problém NP-tvrdé.[7] Ve skutečnosti, i když Q má pouze jeden zápor vlastní číslo, problém je (silně) NP-tvrdé.[8]
Omezení na celé číslo
Existují situace, kdy jeden nebo více prvků vektor bude muset nabrat celočíselné hodnoty. To vede k formulaci problému se smíšeným celočíselným kvadratickým programováním (MIQP).[9] Aplikace MIQP zahrnují vodní zdroje[10] a výstavba indexových fondů.[11]
Řešiče a skriptovací (programovací) jazyky
název | Stručné informace |
---|---|
CÍLE | Softwarový systém pro modelování a řešení problémů optimalizace a plánování |
ALGLIB | Duální licencovaná (GPL / proprietární) numerická knihovna (C ++, .NET). |
AMPL | Populární modelovací jazyk pro rozsáhlou matematickou optimalizaci. |
APMonitor | Sada pro modelování a optimalizaci pro LP, QP, NLP, MILP, MINLP, a DAE systémy v MATLABu a Pythonu. |
CGAL | Balíček výpočetní geometrie s otevřeným zdrojovým kódem, který obsahuje kvadratické programovací řešení. |
CPLEX | Populární řešitel s API (C, C ++, Java, .Net, Python, Matlab a R). Zdarma pro akademické pracovníky. |
Vynikat Funkce řešitele | Nelineární řešič upravený na tabulky, ve kterých jsou vyhodnocení funkcí založena na přepočítávajících buňkách. Základní verze je k dispozici jako standardní doplněk pro Excel. |
HRY | Systém modelování na vysoké úrovni pro matematickou optimalizaci |
Gurobi | Řešitel s paralelními algoritmy pro rozsáhlé lineární programy, kvadratické programy a smíšené celočíselné programy. Zdarma pro akademické použití. |
IMSL | Sada matematických a statistických funkcí, které mohou programátoři začlenit do svých softwarových aplikací. |
IPOPT | Ipopt (Interior Point OPTimizer) je softwarový balíček pro rozsáhlou nelineární optimalizaci |
Artelys Knitro | Integrovaný balíček pro nelineární optimalizaci |
Javor | Univerzální programovací jazyk pro matematiku. Řešení kvadratického problému v Maple se provádí pomocí jeho QPSolve příkaz. |
MATLAB | Univerzální a maticově orientovaný programovací jazyk pro numerické výpočty. Kvadratické programování v MATLABu vyžaduje kromě základního produktu MATLAB Optimization Toolbox |
Mathematica | Univerzální programovací jazyk pro matematiku, včetně symbolických a numerických schopností. |
MOSEK | Řešitel pro rozsáhlou optimalizaci s API pro několik jazyků (C ++, Java, .Net, Matlab a Python) |
Číselná knihovna NAG | Sbírka matematických a statistických rutin vyvinutých Skupina numerických algoritmů pro více programovacích jazyků (C, C ++, Fortran, Visual Basic, Java a C #) a balíčky (MATLAB, Excel, R, LabVIEW). Kapitola Optimalizace knihovny NAG obsahuje rutiny pro problémy s kvadratickým programováním s maticemi řídkých i nesmělých lineárních omezení, spolu s rutinami pro optimalizaci lineárních, nelineárních, součtů čtverců lineárních nebo nelineárních funkcí s nelineárními, omezenými nebo žádnými omezeními . Knihovna NAG obsahuje rutiny jak pro místní, tak pro globální optimalizaci a pro problémy s průběžnými nebo celočíselnými problémy. |
NASOQ | Numericky přesný řešitel QP Sparsity je řešitel QP s otevřeným zdrojovým kódem pod licencí MIT a napsaný v C ++. NASOQ je metoda aktivního nastavení, která poskytuje přesné řešení problémů QP v jakémkoli měřítku a je velmi rychlá. |
GNU oktáva | Zdarma (jeho licence je GPLv 3) univerzální a maticově orientovaný programovací jazyk pro numerické výpočty, podobný MATLABu. Kvadratické programování v GNU Octave je dostupné přes jeho qp příkaz |
R (Fortran) | GPL licencovaný univerzální statistický výpočetní rámec pro různé platformy. |
SAS /NEBO | Sada řešičů pro lineární, celé číslo, nelineární, bez derivací, síťové, kombinatorické a optimalizační omezení; the Jazyk algebraického modelování OPTMODEL; a řada vertikálních řešení zaměřených na konkrétní problémy / trhy, které jsou všechny plně integrovány do Systém SAS. |
Řešitel TK | Softwarový systém pro matematické modelování a řešení problémů založený na deklarativním jazyce založeném na pravidlech, komercializovaný společností Universal Technical Systems, Inc. |
TOMLAB | Podporuje globální optimalizaci, celočíselné programování, všechny typy nejmenších čtverců, lineární, kvadratické a neomezené programování pro MATLAB. TOMLAB podporuje řešitele jako Gurobi, CPLEX, SNOPT a KNITRO. |
XPRESS | Řešitel pro rozsáhlé lineární programy, kvadratické programy, obecné nelineární a smíšené celočíselné programy. Má API pro několik programovacích jazyků, má také modelovací jazyk Mosel a pracuje s AMPL, HRY. Zdarma pro akademické použití. |
Viz také
- Podporujte vektorový stroj
- Sekvenční kvadratické programování
- Lineární programování
- Metoda kritické linky
Reference
- ^ Nocedal, Jorge; Wright, Stephen J. (2006). Numerická optimalizace (2. vyd.). Berlín, New York: Springer-Verlag. p.449. ISBN 978-0-387-30303-1..
- ^ A b Murty, Katta G. (1988). Lineární komplementarita, lineární a nelineární programování. Série Sigma v aplikované matematice. 3. Berlín: Heldermann Verlag. str. xlviii + 629 str. ISBN 978-3-88538-403-8. PAN 0949214. Archivovány od originál dne 01.04.2010.
- ^ Delbos, F .; Gilbert, J.Ch. (2005). „Globální lineární konvergence rozšířeného Lagrangeova algoritmu pro řešení konvexních kvadratických optimalizačních problémů“ (PDF). Journal of Convex Analysis. 12: 45–69.
- ^ Google vyhledávání.
- ^ Gould, Nicholas I. M .; Hribar, Mary E .; Nocedal, Jorge (duben 2001). „K řešení problémů s kvadratickým programováním omezeným na rovnost, které vyvstávají v optimalizaci“. SIAM J. Sci. Comput. 23 (4): 1376–1395. CiteSeerX 10.1.1.129.7555. doi:10.1137 / S1064827598345667.
- ^ Kozlov, M. K .; S. P. Tarasov; Leonid G. Khachiyan (1979). "[Polynomiální řešitelnost konvexního kvadratického programování]". Doklady Akademii Nauk SSSR. 248: 1049–1051. Přeloženo do: Sovětská matematika - Doklady. 20: 1108–1111. Chybějící nebo prázdný
| název =
(Pomoc) - ^ Sahni, S. (1974). „Výpočtově související problémy“ (PDF). SIAM Journal on Computing. 3 (4): 262–279. CiteSeerX 10.1.1.145.8685. doi:10.1137/0203021.
- ^ Pardalos, Panos M .; Vavasis, Stephen A. (1991). "Kvadratické programování s jednou zápornou vlastní hodnotou je (silně) NP tvrdé". Journal of Global Optimization. 1 (1): 15–22. doi:10.1007 / bf00120662. S2CID 12602885.
- ^ Lazimy, Rafael (01.12.1982). "Mixed-integer quadratic programování". Matematické programování. 22 (1): 332–349. doi:10.1007 / BF01581047. ISSN 1436-4646. S2CID 8456219.
- ^ Propato Marco; Uber James G. (01.07.2004). „Návrh zesilovacího systému pomocí kvadratického programování se smíšenými celými čísly“. Journal of Water Resources Planning and Management. 130 (4): 348–352. doi:10.1061 / (ASCE) 0733-9496 (2004) 130: 4 (348).
- ^ Cornuéjols, Gérard; Peña, Javier; Tütüncü, Reha (2018). Optimalizační metody ve financích (2. vyd.). Cambridge, Velká Británie: Cambridge University Press. 167–168. ISBN 9781107297340.
Další čtení
- Cottle, Richard W .; Pang, Jong-Shi; Kámen, Richard E. (1992). Problém lineární komplementarity. Počítačová věda a vědecké výpočty. Boston, MA: Academic Press, Inc. s. Xxiv + 762 s. ISBN 978-0-12-192350-1. PAN 1150683.
- Garey, Michael R.; Johnson, David S. (1979). Počítače a neodolatelnost: Průvodce po teorii NP-úplnosti. W.H. Freemane. ISBN 978-0-7167-1045-5. A6: MP2, str. 245.
- Gould, Nicholas I. M .; Toint, Philippe L. (2000). „Kvadratická programovací bibliografie“ (PDF). Interní zpráva skupiny číselných analýz RAL 2000-1.