Lineární programování - Linear programming
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/70/Linear_optimization_in_a_2-dimensional_polytope.svg/220px-Linear_optimization_in_a_2-dimensional_polytope.svg.png)
Lineární programování (LP, také zvaný lineární optimalizace) je metoda k dosažení nejlepšího výsledku (jako je maximální zisk nebo nejnižší cena) v a matematický model jejichž požadavky jsou reprezentovány lineární vztahy. Lineární programování je speciální případ matematického programování (také známý jako matematická optimalizace ).
Formálně je lineární programování technikou pro optimalizace a lineární Objektivní funkce, s výhradou lineární rovnost a lineární nerovnost omezení. Své proveditelný region je konvexní mnohostěn, což je sada definovaná jako průsečík konečně mnoha poloviční mezery, z nichž každý je definován lineární nerovností. Jeho objektivní funkcí je a nemovitý -hodnota afinní (lineární) funkce definované na tomto mnohostěnu. Lineární programování algoritmus najde bod v polytop kde tato funkce má nejmenší (nebo největší) hodnotu, pokud takový bod existuje.
Lineární programy jsou problémy, které lze vyjádřit kanonická forma tak jako
kde X představuje vektor proměnných (bude určen), C a b jsou vektory (známých) koeficientů, A je (známý) matice koeficientů a je maticová transpozice. Výraz, který má být maximalizován nebo minimalizován, se nazývá Objektivní funkce (CTX v tomto případě). Nerovnosti AX ≤ b a X ≥ 0 jsou omezení, která specifikují a konvexní mnohostěn nad kterou má být optimalizována objektivní funkce. V tomto kontextu jsou dva vektory srovnatelný když mají stejné rozměry. Pokud je každá položka v první menší nebo rovna odpovídající položce ve druhé, pak lze říci, že první vektor je menší nebo roven druhému vektoru.
Lineární programování lze aplikovat na různé studijní obory. Je široce používán v matematice a v menší míře v podnikání, ekonomika a pro některé technické problémy. Odvětví, která používají modely lineárního programování, zahrnují dopravu, energetiku, telekomunikace a výrobu. Ukázalo se užitečné při modelování různých typů problémů v systému Windows plánování, směrování, plánování, úkol a design.
Dějiny
Problém řešení systému lineárních nerovností sahá přinejmenším tak daleko Fourier, který v roce 1827 zveřejnil metodu jejich řešení,[1] a po kom metoda Vyřazení Fourier-Motzkin je pojmenován.
V roce 1939 dala formulace lineárního programování problému, který je ekvivalentní obecnému problému lineárního programování, sovětský matematik a ekonom Leonid Kantorovič, který také navrhl způsob jeho řešení.[2] Je to způsob, jakým se vyvinul během druhá světová válka, plánovat výdaje a výnosy za účelem snížení nákladů na armádu a zvýšení ztrát uvalených na nepřítele.[Citace je zapotřebí ] Kantorovichova práce byla původně v SSSR.[3] Přibližně ve stejné době jako Kantorovich, holandsko-americký ekonom T. C. Koopmans formuloval klasické ekonomické problémy jako lineární programy. Kantorovich a Koopmans později sdíleli 1975 Nobelova cena za ekonomii.[1] V roce 1941 Frank Lauren Hitchcock také formuloval dopravní problémy jako lineární programy a poskytl řešení velmi podobné pozdějšímu simplexní metoda.[2] Hitchcock zemřel v roce 1957 a Nobelova cena není udělována posmrtně.
V letech 1946–1947 George B. Dantzig nezávisle vyvinul obecnou formulaci lineárního programování pro použití při plánování problémů v US Air Force.[4] V roce 1947 Dantzig také vynalezl simplexní metoda že poprvé ve většině případů efektivně řešilo problém lineárního programování.[4] Když Dantzig domluvil schůzku s John von Neumann aby diskutoval o své simplexní metodě, Neumann si okamžitě vymyslel teorii dualita tím, že si uvědomil, že problém, ve kterém pracoval herní teorie byl ekvivalentní.[4] Dantzig poskytl formální důkaz v nepublikované zprávě „Věta o lineárních nerovnostech“ 5. ledna 1948.[3] Dantzigova práce byla zpřístupněna veřejnosti v roce 1951. V poválečných letech ji mnoho průmyslových odvětví uplatnilo při každodenním plánování.
Dantzigovým původním příkladem bylo najít nejlepší úkol 70 lidí na 70 pracovních míst. Výpočetní výkon potřebný k testování všech permutací k výběru nejlepšího přiřazení je obrovský; počet možných konfigurací překračuje počet částic v pozorovatelný vesmír. Hledání optimálního řešení však trvá jen chvilku, když se problém zobrazí jako lineární program a použije se simplexní algoritmus. Teorie lineárního programování drasticky snižuje počet možných řešení, která je třeba zkontrolovat.
Problém lineárního programování se poprvé ukázal jako řešitelný v polynomiálním čase pomocí Leonid Khachiyan v roce 1979,[5] ale větší teoretický a praktický průlom v této oblasti přišel v roce 1984, kdy Narendra Karmarkar představil nový metoda vnitřního bodu pro řešení problémů lineárního programování.[6]
Použití
Lineární programování je široce používaným polem optimalizace z několika důvodů. Mnoho praktických problémů v operační výzkum lze vyjádřit jako problémy lineárního programování.[3] Určité zvláštní případy lineárního programování, jako např tok sítě problémy a tok více akomodit problémy jsou považovány za dostatečně důležité na to, aby vygenerovaly mnoho výzkumů specializovaných algoritmů pro jejich řešení. Řada algoritmů pro jiné typy optimalizačních problémů funguje tak, že LP problémy řeší jako dílčí problémy. Historicky nápady z lineárního programování inspirovaly mnoho ústředních konceptů teorie optimalizace, jako například dualita, rozklad, a důležitost konvexnost a jeho zobecnění. Rovněž lineární programování bylo těžce používáno v rané tvorbě mikroekonomie a v současné době se používá ve vedení společnosti, jako je plánování, výroba, doprava, technologie a další záležitosti. Ačkoli se moderní problémy s řízením neustále mění, většina společností by chtěla maximalizovat zisky a minimalizovat náklady s omezenými zdroji. Mnoho problémů lze tedy charakterizovat jako problémy lineárního programování.
Standardní forma
Standardní forma je obvyklá a nejintuitivnější forma popisu problému lineárního programování. Skládá se z následujících tří částí:
- A lineární funkce, která má být maximalizována
- např.
- Omezení problému následujícího formuláře
- např.
- Nezáporné proměnné
- např.
Problém je obvykle vyjádřen v matice formulář, a poté se stane:
Jiné formy, jako jsou problémy s minimalizací, problémy s omezeními alternativních forem, stejně jako problémy zahrnující negativní proměnné lze vždy přepsat na ekvivalentní problém ve standardní formě.
Příklad
Řekněme, že zemědělec má kus zemědělské půdy L km2, které mají být osázeny pšenicí nebo ječmenem nebo kombinací obou. Zemědělec má omezené množství hnojiv, F kilogramů a pesticidů, P kilogramů. Každý kilometr čtvereční pšenice vyžaduje F1 kilogramů hnojiva a P1 kilogramů pesticidů, zatímco každý kilometr čtvereční ječmene vyžaduje F2 kilogramů hnojiva a P2 kilogramů pesticidů. Pojďme1 být prodejní cena pšenice za kilometr čtvereční a S.2 být prodejní cenou ječmene. Pokud bychom označili plochu půdy osázené pšenicí a ječmenem X1 a X2 respektive pak lze zisk maximalizovat výběrem optimálních hodnot pro X1 a X2. Tento problém lze vyjádřit následujícím problémem lineárního programování ve standardní podobě:
Maximalizovat: | (maximalizovat výnos - příjem je „objektivní funkce“) | |
Předmět: | (limit na celkovou plochu) | |
(limit na hnojivo) | ||
(limit na pesticidy) | ||
(nelze zasadit negativní plochu). |
V maticové formě se stává:
- maximalizovat
- podléhá
Rozšířená forma (uvolněná forma)
Problémy s lineárním programováním lze převést na rozšířená forma za účelem použití společné formy simplexní algoritmus. Tento formulář zavádí nezáporné uvolněné proměnné nahradit nerovnosti rovnostmi v omezeních. Problémy lze potom zapsat do následujícího textu bloková matice formulář:
- Maximalizovat :
kde jsou nově zavedené proměnné slack, jsou rozhodovací proměnné a je proměnná, která má být maximalizována.
Příklad
Výše uvedený příklad je převeden do následující rozšířené formy:
Maximalizovat: (Objektivní funkce) podléhá: (rozšířené omezení) (rozšířené omezení) (rozšířené omezení)
kde jsou (nezáporné) uvolněné proměnné, které v tomto příkladu představují nevyužitou plochu, množství nepoužitého hnojiva a množství nepoužitého pesticidu.
V maticové formě se stává:
- Maximalizovat :
Dualita
Každý problém lineárního programování, označovaný jako a původní problém, lze převést na a dvojí problém, který poskytuje horní hranici optimální hodnoty primárního problému. V maticové formě můžeme vyjádřit původní problém jako:
- Maximalizovat CTX podléhá AX ≤ b, X ≥ 0;
- s odpovídajícím symetrický dvojí problém,
- Minimalizovat bTy podléhá ATy ≥ C, y ≥ 0.
Alternativní primární formulace je:
- Maximalizovat CTX podléhá AX ≤ b;
- s odpovídajícím asymetrický dvojí problém,
- Minimalizovat bTy podléhá ATy = C, y ≥ 0.
Teorie duality má zásadní význam. Jedním z nich je skutečnost, že (pro symetrický duální) je duální dvojitý lineární program původním prvotním lineárním programem. Každé proveditelné řešení pro lineární program navíc poskytuje hranici optimální hodnoty objektivní funkce jeho duálního programu. The slabá dualita věta říká, že hodnota objektivní funkce duálu v jakémkoli proveditelném řešení je vždy větší nebo rovna hodnotě objektivní funkce primálu v jakémkoli proveditelném řešení. The silná dualita věta říká, že pokud má primál optimální řešení, X*, pak má duální také optimální řešení, y*, a CTX*=bTy*.
Lineární program může být také neomezený nebo neproveditelný. Teorie duality nám říká, že pokud je primal neomezený, pak je duální pomocí slabé věty o dualitě nemožné. Stejně tak je-li dvojník neomezený, musí být primál neproveditelný. Je však možné, aby duál i primál byli neproveditelní. Vidět duální lineární program pro podrobnosti a několik dalších příkladů.
Variace
Krycí / balicí duality
A krycí LP je lineární program ve tvaru:
- Minimalizovat: bTy,
- podléhá: ATy ≥ C, y ≥ 0,
tak, že matice A a vektory b a C jsou nezáporné.
Duál krycího LP je a balení LP, lineární program ve tvaru:
- Maximalizovat: CTX,
- podléhá: AX ≤ b, X ≥ 0,
tak, že matice A a vektory b a C jsou nezáporné.
Příklady
Krytí a balení LP obvykle vznikají jako relaxace lineárního programování kombinatorického problému a jsou důležité při studiu aproximační algoritmy.[7] Například LP relaxace nastavit problém s balením, problém nezávislé množiny a problém se shodou balí LP. LP relaxace nastavit problém s krytem, problém s vrcholovým krytem a dominující množinový problém pokrývají také LP.
Hledání a frakční zbarvení a graf je dalším příkladem krycího LP. V tomto případě existuje jedno omezení pro každý vrchol grafu a jedna proměnná pro každý nezávislá sada grafu.
Doplňková ochablost
Je možné získat optimální řešení duálu, když je známo pouze optimální řešení primalu pomocí věty o komplementární slabosti. Věta říká:
Předpokládejme to X = (X1, X2, ... , Xn) je prvotní proveditelné a to y = (y1, y2, ... , ym) je dvojí proveditelné. Nechť (w1, w2, ..., wm) označí odpovídající proměnné počátečního uvolnění a necháme (z1, z2, ... , zn) označují odpovídající proměnné s dvojitým uvolněním. Pak X a y jsou optimální pro jejich příslušné problémy právě tehdy
- Xj zj = 0, pro j = 1, 2, ... , n, a
- wi yi = 0, pro i = 1, 2, ... , m.
Takže pokud i-tá proměnná uvolnění primalu není nula, pak i-tá proměnná duálu se rovná nule. Stejně tak, pokud j-tá volná proměnná duálu není nula, pak j-tá proměnná primalu se rovná nule.
Tato nezbytná podmínka optimality vyjadřuje poměrně jednoduchý ekonomický princip. Ve standardní formě (při maximalizaci), pokud je v omezeném primárním zdroji volno (tj. Existují „zbytky“), pak další množství tohoto zdroje nesmí mít žádnou hodnotu. Podobně, pokud je v požadavku omezení negativity dvojí (stínové) cenové negativity nedostatek, tj. Cena není nula, pak musí existovat omezené zásoby (žádné „zbytky“).
Teorie
Existence optimálních řešení
Geometricky lineární vazby definují proveditelný region, což je konvexní mnohostěn. A lineární funkce je konvexní funkce, což znamená, že každý místní minimum je globální minimum; podobně je lineární funkce a konkávní funkce, což znamená, že každý místní maximum je globální maximum.
Optimální řešení nemusí existovat, a to ze dvou důvodů. Nejprve, pokud jsou omezení nekonzistentní, neexistuje žádné proveditelné řešení: Například omezení X ≥ 2 a X ≤ 1 nelze společně uspokojit; v tomto případě říkáme, že LP je nemožné. Zadruhé, když polytop je neomezený ve směru gradientu objektivní funkce (kde gradient objektivní funkce je vektorem koeficientů objektivní funkce), pak není dosaženo optimální hodnoty, protože je vždy možné udělat lépe než jakoukoli konečnou hodnotu objektivní funkce.
Optimální vrcholy (a paprsky) mnohostěnů
V opačném případě, pokud existuje proveditelné řešení a pokud je sada omezení omezena, pak je optimální hodnoty vždy dosaženo na hranici sady omezení pomocí maximální princip pro konvexní funkce (alternativně, minimální princip pro konkávní funkce ) protože lineární funkce jsou konvexní i konkávní. Některé problémy však mají zřetelná optimální řešení; například problém nalezení proveditelného řešení systému lineárních nerovností je problém lineárního programování, ve kterém je objektivní funkcí funkce nula (tj. konstantní funkce všude s nulovou hodnotou). Pro tento problém proveditelnosti s nulovou funkcí pro jeho objektivní funkci, pokud existují dvě odlišná řešení, je řešení každá konvexní kombinace řešení.
Také se nazývají vrcholy mnohostěnu základní proveditelná řešení. Důvod této volby jména je následující. Nechat d označte počet proměnných. Potom ze základní věty o lineárních nerovnostech vyplývá (pro proveditelné problémy), že pro každý vrchol X* proveditelné oblasti LP existuje sada d (nebo méně) omezení nerovnosti z LP taková, že když s nimi zacházíme d omezení jako rovnost, jedinečné řešení je X*. Tímto způsobem můžeme tyto vrcholy studovat pomocí pohledu na určité podmnožiny množiny všech omezení (diskrétní množina), spíše než na kontinuum LP řešení. Tento princip je základem simplexní algoritmus pro řešení lineárních programů.
Algoritmy
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/Linear_Programming_Feasible_Region.svg/250px-Linear_Programming_Feasible_Region.svg.png)
Algoritmy výměny základů
Simplexní Dantzigův algoritmus
The simplexní algoritmus, vyvinutý společností George Dantzig v roce 1947 řeší problémy s LP konstrukcí proveditelného řešení na vrcholu polytop a poté kráčet po cestě na okrajích mnohostěnu k vrcholům s neklesajícími hodnotami objektivní funkce, dokud nebude jistě dosaženo optima. V mnoha praktických problémech, “pozastavení "dochází: mnoho čepů je vyrobeno bez zvýšení objektivní funkce.[8][9] Ve vzácných praktických problémech mohou obvyklé verze simplexního algoritmu skutečně „cyklovat“.[9] Aby se zabránilo cyklům, vyvinuli vědci nová pravidla otáčení.[10][11][8][9][12][13]
V praxi simplex algoritmus je docela efektivní a lze mu zaručit nalezení globálního optima, pokud budou dodržena určitá preventivní opatření cyklistika jsou převzaty. Ukázalo se, že simplexní algoritmus řeší „náhodné“ problémy efektivně, tj. V kubickém počtu kroků,[14] což je podobné jeho chování při praktických problémech.[8][15]
Algoritmus simplexu má však špatné chování v nejhorším případě: Klee a Minty zkonstruovali rodinu problémů lineárního programování, u nichž simplexová metoda vyžaduje řadu kroků exponenciálních ve velikosti problému.[8][11][12] Ve skutečnosti po nějakou dobu nebylo známo, zda je problém lineárního programování řešitelný polynomiální čas, tj třída složitosti P.
Křížový algoritmus
Stejně jako Dantzigův simplexní algoritmus, i křížový algoritmus je algoritmus výměny báze, který se otáčí mezi základnami. Algoritmus křížového přechodu však nemusí udržovat proveditelnost, ale může se otáčet spíše od proveditelného základu k neproveditelnému základu. Křížový algoritmus nemá polynomiální časová složitost pro lineární programování. Oba algoritmy navštíví všechny 2D rohy (rozrušený) krychle v rozměruD, Klee – Minty kostka, v nejhorší případ.[13][16]
Vnitřní bod
Na rozdíl od simplexního algoritmu, který najde optimální řešení procházením hran mezi vrcholy na mnohostěnné sadě, se metody vnitřních bodů pohybují vnitřkem proveditelné oblasti.
Allipsoidní algoritmus, sledující Khachiyana
Toto je první nejhorší případ polynomiální čas algoritmus, který byl kdy nalezen pro lineární programování. Vyřešit problém, který má n proměnné a lze je zakódovat do L vstupních bitů, tento algoritmus běží čas.[5] Leonid Khachiyan vyřešil tento dlouhodobý problém složitosti v roce 1979 zavedením elipsoidní metoda. Konvergenční analýza má předchůdce (v reálném počtu), zejména iterační metody vyvinutý uživatelem Naum Z. Shor a aproximační algoritmy Arkadi Nemirovski a D. Yudin.
Projektivní algoritmus Karmarkaru
Khachiyanův algoritmus měl zásadní význam pro stanovení polynomiálně-časové řešitelnosti lineárních programů. Algoritmus nebyl výpočtovým průlomem, protože simplexní metoda je efektivnější pro všechny, ale speciálně konstruované rodiny lineárních programů.
Khachiyanův algoritmus však inspiroval nové linie výzkumu lineárního programování. V roce 1984 N. Karmarkar navrhl a projektivní metoda pro lineární programování. Karmarkarův algoritmus[6] vylepšil Khachiyan[5] nejhorší polynomiální vazba (dávající ). Karmarkar tvrdil, že jeho algoritmus byl mnohem rychlejší v praktickém LP než simplexní metoda, což je tvrzení, které vyvolalo velký zájem o metody vnitřních bodů.[17] Od objevu Karmarkara bylo navrženo a analyzováno mnoho metod vnitřních bodů.
Algoritmus Vaidya 87
V roce 1987 Vaidya navrhl algoritmus, který běží dovnitř čas.[18]
Algoritmus Vaidya 89
V roce 1989 vyvinula Vaidya algoritmus, který funguje čas.[19] Formálně vzato, algoritmus trvá v nejhorším případě aritmetické operace, kde je počet omezení, je počet proměnných a je počet bitů.
Algoritmy časových vstupů
V roce 2015 Lee a Sidford ukázali, že to lze vyřešit v čas,[20] kde představuje počet nenulových prvků a stále trvá v nejhorším případě.
Algoritmus násobení aktuální matice
V roce 2019 Cohen, Lee a Song vylepšili provozní dobu čas, je exponent násobení matic a je dvojitý exponent násobení matic.[21] je (zhruba) definován jako největší číslo tak, že lze znásobit matice a matice v čas. V následné práci Lee, Songa a Zhanga reprodukují stejný výsledek jinou metodou.[22] Tyto dva algoritmy zůstávají když a . Výsledek díky Jiangovi, Songovi, Weinsteinovi a Zhangovi se zlepšil na .[23]
Porovnání vnitřních bodových metod a simplexních algoritmů
Současný názor je, že efektivita dobrých implementací metod založených na simplexu a metod vnitřních bodů je u rutinních aplikací lineárního programování podobná. U konkrétních typů problémů s LP však může dojít k tomu, že jeden typ řešiče je lepší než jiný (někdy mnohem lepší) a že struktura řešení generovaných metodami vnitřních bodů oproti metodám založeným na simplexu se výrazně liší s podporou sada aktivních proměnných, která je u druhé obvykle menší.[24]
Otevřené problémy a nedávná práce
![]() | Nevyřešený problém v informatice: Připouští lineární programování algoritmus silně polynomiálního času? (více nevyřešených problémů v informatice) |
V teorii lineárního programování existuje několik otevřených problémů, jejichž řešení by představovalo zásadní průlom v matematice a potenciálně významný pokrok v naší schopnosti řešit rozsáhlé lineární programy.
- Připouští LP a silně polynomický -časový algoritmus?
- Připouští LP algoritmus silně polynomiálního času, aby našel striktně komplementární řešení?
- Připouští LP algoritmus polynomiálního času ve výpočetním modelu reálného počtu (jednotkových nákladů)?
Tento úzce související soubor problémů byl citován Stephen Smale jako mezi 18 největších nevyřešených problémů 21. století. Podle Smaleových slov je třetí verze problému „hlavním nevyřešeným problémem teorie lineárního programování“. Zatímco existují algoritmy pro řešení lineárního programování ve slabě polynomiálním čase, jako je elipsoidní metody a techniky vnitřních bodů, dosud nebyly nalezeny žádné algoritmy, které by umožňovaly silně polynomiálně-časový výkon v počtu omezení a počtu proměnných. Vývoj takových algoritmů by byl velkým teoretickým zájmem a možná by umožnil praktické zisky také při řešení velkých LP.
Ačkoliv Hirschova domněnka byl nedávno vyvrácen pro vyšší dimenze, ponechává otevřené následující otázky.
- Existují pravidla pivot, která vedou k simplexním variantám v polynomiálním čase?
- Mají všechny polytopální grafy polynomiálně ohraničený průměr?
Tyto otázky se týkají analýzy výkonu a vývoje simplexních metod. Obrovská účinnost simplexního algoritmu v praxi navzdory jeho teoretickému výkonu v exponenciálním čase naznačuje, že mohou existovat variace simplexu, které běží v polynomiálním nebo dokonce silně polynomiálním čase. Bylo by velmi praktické a teoreticky důležité vědět, zda takové varianty existují, zejména jako přístup k rozhodnutí, zda lze LP vyřešit v silně polynomiálním čase.
Simplexový algoritmus a jeho varianty spadají do rodiny algoritmů sledujících hrany, tak pojmenovaných, protože řeší problémy lineárního programování pohybem od vrcholu k vrcholu po hranách mnohostěnu. To znamená, že jejich teoretický výkon je omezen maximálním počtem hran mezi libovolnými dvěma vrcholy na polytopu LP. Výsledkem je, že máme zájem znát maximum graficko-teoretický průměr polytopalu grafy. Bylo prokázáno, že všechny polytopy mají subexponenciální průměr. Nedávné vyvrácení Hirschova domněnky je prvním krokem k prokázání, zda má jakýkoli polytop superpolynomiální průměr. Pokud takové polytopy existují, nemůže v polynomiálním čase běžet žádná varianta sledující hrany. Otázky týkající se průměru mnohostěn jsou předmětem nezávislého matematického zájmu.
Simplexní pivotní metody zachovávají prvotní (nebo dvojí) proveditelnost. Na druhé straně metody křížového otočení nezachovávají (prvotní nebo dvojí) proveditelnost - mohou navštěvovat základní proveditelné, duální proveditelné nebo primární a duální neproveditelné základny v jakémkoli pořadí. Pivotní metody tohoto typu byly studovány od 70. let.[Citace je zapotřebí ] Tyto metody se v zásadě pokoušejí najít nejkratší cestu otočení na uspořádání mnohostěn pod problém lineárního programování. Na rozdíl od polytopálních grafů je známo, že grafy uspořádání polytopů mají malý průměr, což umožňuje možnost silně polynomiálně-časově zkříženého pivotního algoritmu bez řešení otázek o průměru obecných polytopů.[13]
Celé číslo neznámé
Pokud se požaduje, aby všechna neznámá proměnná byla celá čísla, problém se nazývá an celočíselné programování (IP) nebo celočíselné lineární programování (ILP) problém. Na rozdíl od lineárního programování, které lze v nejhorším případě efektivně vyřešit, jsou problémy s celočíselným programováním v mnoha praktických situacích (ty s omezenými proměnnými) NP-tvrdé. Programování celého čísla 0–1 nebo binární celočíselné programování (BIP) je speciální případ celočíselného programování, kde se vyžaduje, aby proměnné byly 0 nebo 1 (namísto libovolných celých čísel). Tento problém je také klasifikován jako NP-hard a ve skutečnosti byla rozhodovací verze jednou z Karpových 21 NP-úplných problémů.
Pokud se vyžaduje, aby celá čísla byla pouze některá z neznámých proměnných, problém se nazývá a smíšené celočíselné programování (MIP) problém. Ty jsou obecně také NP-tvrdé, protože jsou ještě obecnější než programy ILP.
Existují však některé důležité podtřídy problémů s IP a MIP, které jsou efektivně řešitelné, zejména problémy, kde je matice omezení naprosto unimodulární a pravá strana omezení jsou celá čísla nebo - obecněji - kde systém má úplná duální integrita (TDI) vlastnost.
Mezi pokročilé algoritmy pro řešení celočíselných lineárních programů patří:
- metoda roviny řezu
- Větvené a svázané
- Větve a řez
- Pobočka a cena
- pokud má problém nějakou zvláštní strukturu, je možné jej použít generování zpožděného sloupce.
O takových celočíselných programovacích algoritmech pojednává Padberg a v Beasley.
Integrované lineární programy
Lineární program v reálných proměnných je považován za integrální pokud má alespoň jedno optimální řešení, které je integrální. Podobně mnohostěn se říká, že je integrální pokud pro všechny ohraničené proveditelné objektivní funkce Clineární program má optimum s celočíselnými souřadnicemi. Jak pozorovali Edmonds a Giles v roce 1977, lze rovnocenně říci, že mnohostěn je integrální, pokud pro každou omezenou proveditelnou integrální objektivní funkci C, optimální hodnota lineárního programu je celé číslo.
Integrální lineární programy mají v polyedrickém aspektu ústřední význam kombinatorická optimalizace protože poskytují alternativní charakterizaci problému. Konkrétně pro jakýkoli problém je konvexní trup řešení integrální mnohostěn; pokud má tento mnohostěn pěkný / kompaktní popis, můžeme efektivně najít optimální proveditelné řešení pod jakýmkoli lineárním cílem. Naopak, pokud dokážeme, že a relaxace lineárního programování je integrální, pak je to požadovaný popis konvexního trupu proveditelných (integrálních) řešení.
Terminologie není v literatuře jednotná, proto je třeba rozlišovat následující dva pojmy,
- v celočíselný lineární program, popsané v předchozí části, proměnné jsou násilně omezeny na celá čísla a tento problém je obecně NP-těžký,
- v integrální lineární program, popsané v této části, proměnné nejsou omezeny na celá čísla, ale spíše se nějak dokázalo, že spojitý problém má vždy integrální optimální hodnotu (za předpokladu C je integrální) a tuto optimální hodnotu lze najít efektivně, protože všechny lineární programy o velikosti polynomu lze vyřešit v polynomiálním čase.
Jedním z běžných způsobů, jak dokázat, že mnohostěn je nedílnou součástí, je ukázat, že je naprosto unimodulární. Existují i další obecné metody, včetně vlastnost rozkladu celého čísla a úplná duální integrita. Mezi další specifické známé integrální LP patří odpovídající polytop, mřížkový mnohostěn, submodulární tok mnohostěnů a průsečík dvou zobecněných polymatroidů /G-polymatroidy - např. viz Schrijver 2003.
Řešiče a skriptovací (programovací) jazyky
Tolerantní licence:
název | Licence | Stručné informace |
---|---|---|
Pyomo | BSD | Open-source modelovací jazyk pro rozsáhlou lineární, smíšenou integer a nelineární optimalizaci |
HiGHS | MIT | Sériový a paralelní řešič s otevřeným zdrojovým kódem pro rozsáhlé modely řídkého lineárního programování (LP) |
Copyleft (reciproční) licence:
název | Licence | Stručné informace |
---|---|---|
Řešitel omezení Cassowary | LGPL | sada nástrojů pro řešení přírůstkových omezení, která efektivně řeší systémy lineárních rovností a nerovností |
CLP | CPL | řešitel LP od COIN-OR |
glpk | GPL | GNU Linear Programming Kit, řešení LP / MILP s nativním C. API a mnoho (15) balíčků třetích stran pro jiné jazyky. Specializovaná podpora pro tokové sítě. Balíčky AMPL -jako GNU MathProg modelovací jazyk a překladatel. |
Qoca | GPL | knihovna pro postupné řešení systémů lineárních rovnic s různými cílovými funkcemi |
R-projekt | GPL | programovací jazyk a softwarové prostředí pro statistické výpočty a grafiku |
MINTO (Mixed Integer Optimizer, an celočíselné programování řešitel, který používá algoritmus větvení a vázanosti) má veřejně dostupný zdrojový kód[25] ale není open source.
Proprietární licence:
název | Stručné informace |
---|---|
CÍLE | Modelovací jazyk, který umožňuje modelovat lineární, smíšené celé číslo a nelineární optimalizační modely. Nabízí také nástroj pro programování omezení. Lze také implementovat algoritmus ve formě heuristiky nebo přesných metod, jako je Branch-and-Cut nebo Column Generation. Nástroj volá vhodného řešitele, jako je CPLEX, Gurobi apod., Aby vyřešil problém s optimalizací po ruce. Akademické licence jsou zdarma. |
AMPL | Populární modelovací jazyk pro rozsáhlou lineární, smíšenou integer a nelineární optimalizaci s bezplatnou studentskou omezenou verzí (500 proměnných a 500 omezení). |
APMonitor | API pro MATLAB a Python. Vyřešit příklad Problémy s lineárním programováním (LP) prostřednictvím MATLABu, Pythonu nebo webového rozhraní. |
CPLEX | Populární řešitel s API pro několik programovacích jazyků, má také modelovací jazyk a pracuje s AIMMS, AMPL, HRY, MPL, OpenOpt, OPL Development Studio a TOMLAB. Zdarma pro akademické použití. |
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. |
FortMP | |
HRY | |
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í. |
Numerické knihovny IMSL | Kolekce matematických a statistických algoritmů dostupných v C / C ++, Fortran, Java a C # /. NET. Optimalizační rutiny v knihovnách IMSL zahrnují neomezené, lineárně a nelineárně omezené minimalizace a algoritmy lineárního programování. |
LINDO | Řešitel s API pro rozsáhlou optimalizaci lineárních, celočíselných, kvadratických, kónických a obecných nelineárních programů se stochastickými programovými rozšířeními. Nabízí postup globální optimalizace pro nalezení zaručeného globálně optimálního řešení obecných nelineárních programů se spojitými a diskrétními proměnnými. Má také API pro statistické vzorkování, které integruje simulace Monte-Carlo do optimalizačního rámce. Má algebraický jazyk pro modelování (ŽARGON ) a umožňuje modelování v tabulce (WhatBest ). |
Javor | Univerzální programovací jazyk pro symbolické a numerické výpočty. |
MATLAB | Univerzální a maticově orientovaný programovací jazyk pro numerické výpočty. Lineární programování v MATLABu vyžaduje Optimalizace nástrojů kromě základního produktu MATLAB; dostupné rutiny zahrnují INTLINPROG a LINPROG |
Mathcad | Matematický editor WYSIWYG. Má funkce pro řešení lineárních i nelineárních optimalizačních problémů. |
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 lineárního programování s maticemi řídkých i nesrovnatelných lineárních omezení spolu s rutinami pro optimalizaci kvadratický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. |
Statistiky NMath | A general-purpose .SÍŤ statistical library containing a simplex solver.[26] |
OptimJ | A Java-based modeling language for optimization with a free version available.[27][28] |
SAS /OR | A suite of solvers for Linear, Integer, Nonlinear, Derivative-Free, Network, Combinatorial and Constraint Optimization; the Algebraic modeling language OPTMODEL; and a variety of vertical solutions aimed at specific problems/markets, all of which are fully integrated with the Systém SAS. |
SCIP | A general-purpose constraint integer programming solver with an emphasis on MIP. Kompatibilní s Zimpl modelling language. Free for academic use and available in source code. |
XPRESS | Solver for large-scale linear programs, quadratic programs, general nonlinear and mixed-integer programs. Has API for several programming languages, also has a modelling language Mosel and works with AMPL, HRY. Free for academic use. |
VisSim | A visual blokové schéma language for simulation of dynamické systémy. |
Viz také
- Konvexní programování
- Dynamické programování
- Expected shortfall § Optimization of expected shortfall
- Vstupně-výstupní model
- Plánování práce
- Linear production game
- Linear-fractional programming (LFP)
- LP-type problem
- Matematické programování
- Nelineární programování
- Orientovaný matroid
- Kvadratické programování, a superset of linear programming
- Semidefinitní programování
- Stínová cena
- Simplexní algoritmus, used to solve LP problems
Poznámky
- ^ A b Gerard Sierksma; Yori Zwols (2015). Lineární a celočíselná optimalizace: teorie a praxe (3. vyd.). CRC Press. p. 1. ISBN 978-1498710169.
- ^ A b Alexander Schrijver (1998). Teorie lineárního a celočíselného programování. John Wiley & Sons. str. 221–222. ISBN 978-0-471-98232-6.
- ^ A b C George B. Dantzig (April 1982). "Reminiscences about the origins of linear programming". Dopisy o operačním výzkumu. 1 (2): 43–48. doi:10.1016/0167-6377(82)90043-8.
- ^ A b C Dantzig, George B.; Thapa, Mukund Narain (1997). Lineární programování. New York: Springer. p. xxvii. ISBN 0387948333. OCLC 35318475.
- ^ A b C Leonid Khachiyan (1979). "A Polynomial Algorithm for Linear Programming". Doklady Akademii Nauk SSSR. 224 (5): 1093–1096.
- ^ A b Narendra Karmarkar (1984). "A New Polynomial-Time Algorithm for Linear Programming". Combinatorica. 4 (4): 373–395. doi:10.1007/BF02579150. S2CID 7257867.
- ^ Vazirani (2001, str. 112)
- ^ A b C d Dantzig & Thapa (2003)
- ^ A b C Padberg (1999)
- ^ Bland (1977)
- ^ A b Murty (1983)
- ^ A b Papadimitriou & Steiglitz
- ^ A b C Fukuda, Komei; Terlaky, Tamás (1997). Thomas M. Liebling; Dominique de Werra (eds.). "Křížové metody: nový pohled na pivotní algoritmy". Matematické programování, řada B.. 79 (1–3): 369–395. CiteSeerX 10.1.1.36.9373. doi:10.1007 / BF02614325. PAN 1464775. S2CID 2794181.
- ^ Borgwardt (1987)
- ^ Todd (2002)
- ^ Roos, C. (1990). "Exponenciální příklad Terlakyho otočného pravidla pro metodu criss-cross simplex". Matematické programování. Řada A. 46 (1): 79–84. doi:10.1007 / BF01585729. PAN 1045573. S2CID 33463483.
- ^ Strang, Gilbert (1 June 1987). "Karmarkar's algorithm and its place in applied mathematics". Matematický zpravodaj. 9 (2): 4–10. doi:10.1007/BF03025891. ISSN 0343-6993. PAN 0883185. S2CID 123541868.
- ^ Vaidya, Pravin M. (1987). An algorithm for linear programming which requires aritmetické operace. 28th Annual IEEE Symposium on Foundations of Computer Science. FOCS.
- ^ Vaidya, Pravin M. (1989). Speeding-up linear programming using fast matrix multiplication. 30th Annual Symposium on Foundations of Computer Science. FOCS. doi:10.1109/SFCS.1989.63499.
- ^ Lee, Yin-Tat; Sidford, Aaron (2015). Efficient inverse maintenance and faster algorithms for linear programming. FOCS '15 Foundations of Computer Science. arXiv:1503.01752.
- ^ Cohen, Michael B .; Lee, Yin-Tat; Song, Zhao (2018). Solving Linear Programs in the Current Matrix Multiplication Time. 51st Annual ACM Symposium on the Theory of Computing. STOC'19. arXiv:1810.07896.
- ^ Lee, Yin-Tat; Song, Zhao; Zhang, Qiuyi (2019). Solving Empirical Risk Minimization in the Current Matrix Multiplication Time. Conference on Learning Theory. COLT'19. arXiv:1905.04447.
- ^ Jiang, Shunhua; Song, Zhao; Weinstein, Omri; Zhang, Hengjie (2020). Faster Dynamic Matrix Inverse for Faster LPs. arXiv:2004.07470.
- ^ Illés, Tibor; Terlaky, Tamás (2002). "Pivot versus interior point methods: Pros and cons". Evropský žurnál operačního výzkumu. 140 (2): 170. CiteSeerX 10.1.1.646.3539. doi:10.1016/S0377-2217(02)00061-9.
- ^ "COR@L – Computational Optimization Research At Lehigh". lehigh.edu.
- ^ "C# Linear Programming". centerspace.net.[trvalý mrtvý odkaz ]
- ^ http://www.in-ter-trans.eu/resources/Zesch_Hellingrath_2010_Integrated+Production-Distribution+Planning.pdf OptimJ used in an optimization model for mixed-model assembly lines, University of Münster
- ^ http://www.aaai.org/ocs/index.php/AAAI/AAAI10/paper/viewFile/1769/2076 OptimJ used in an Approximate Subgame-Perfect Equilibrium Computation Technique for Repeated Games
Reference
- Kantorovich, L. V. (1940). "Об одном эффективном методе решения некоторых классов экстремальных проблем" [A new method of solving some classes of extremal problems]. Doklady Akad Sci SSSR. 28: 211–214.
- F. L. Hitchcock: The distribution of a product from several sources to numerous localities, Journal of Mathematics and Physics, 20, 1941, 224–230.
- G.B Dantzig: Maximization of a linear function of variables subject to linear inequalities, 1947. Published pp. 339–347 in T.C. Koopmans (ed.):Analýza činnosti výroby a přidělení, New York-London 1951 (Wiley & Chapman-Hall)
- J. E. Beasley, editor. Advances in Linear and Integer Programming. Oxford Science, 1996. (Collection of surveys)
- Bland, Robert G. (1977). "New Finite Pivoting Rules for the Simplex Method". Matematika operačního výzkumu. 2 (2): 103–107. doi:10,1287 / bř. 2.2.23. JSTOR 3689647.
- Karl-Heinz Borgwardt, The Simplex Algorithm: A Probabilistic Analysis, Algorithms and Combinatorics, Volume 1, Springer-Verlag, 1987. (Average behavior on random problems)
- Richard W. Cottle, ed. The Basic George B. Dantzig. Stanford Business Books, Stanford University Press, Stanford, California, 2003. (Selected papers by George B. Dantzig )
- George B. Dantzig and Mukund N. Thapa. 1997. Linear programming 1: Introduction. Springer-Verlag.
- George B. Dantzig and Mukund N. Thapa. 2003. Lineární programování 2: Teorie a rozšíření. Springer-Verlag. (Comprehensive, covering e.g. otočný and interior-point algorithms, large-scale problems, decomposition following Dantzig–Wolfe a Ohýbače, and introducing stochastic programming.)
- Edmonds, Jack; Giles, Rick (1977). "A Min-Max Relation for Submodular Functions on Graphs". Studies in Integer Programming. Annals of Discrete Mathematics. 1. pp. 185–204. doi:10.1016/S0167-5060(08)70734-9. ISBN 978-0-7204-0765-5.
- Fukuda, Komei; Terlaky, Tamás (1997). Thomas M. Liebling; Dominique de Werra (eds.). "Křížové metody: nový pohled na pivotní algoritmy". Matematické programování, řada B.. 79 (1–3): 369–395. CiteSeerX 10.1.1.36.9373. doi:10.1007 / BF02614325. PAN 1464775. S2CID 2794181.
- Gondzio, Jacek; Terlaky, Tamás (1996). "3 A computational view of interior point methods". V J. E. Beasley (ed.). Pokroky v lineárním a celočíselném programování. Oxford Lecture Series in Mathematics and its Applications. 4. New York: Oxford University Press. pp. 103–144. PAN 1438311. Postscript file at website of Gondzio a at McMaster University website of Terlaky.
- Murty, Katta G. (1983). Lineární programování. New York: John Wiley & Sons, Inc., str. Xix + 482. ISBN 978-0-471-09725-9. PAN 0720547. (comprehensive reference to classical approaches).
- Evar D. Nering and Albert W. Tucker, 1993, Linear Programs and Related Problems, Academic Press. (elementary)
- M. Padberg, Lineární optimalizace a rozšíření, Second Edition, Springer-Verlag, 1999. (carefully written account of primal and dual simplex algorithms and projective algorithms, with an introduction to integer linear programming – featuring the problém obchodního cestujícího pro Odysseus.)
- Christos H. Papadimitriou and Kenneth Steiglitz, Combinatorial Optimization: Algorithms and Complexity, Corrected republication with a new preface, Dover. (počítačová věda)
- Michael J. Todd (February 2002). "The many facets of linear programming". Matematické programování. 91 (3): 417–436. doi:10.1007/s101070100261. S2CID 6464735. (Invited survey, from the International Symposium on Mathematical Programming.)
- Vanderbei, Robert J. (2001). Lineární programování: základy a rozšíření. Springer Verlag.
- Vazirani, Vijay V. (2001). Aproximační algoritmy. Springer-Verlag. ISBN 978-3-540-65367-7. (Computer science)
Další čtení
Prostředky knihovny o Lineární programování |
- Dmitris Alevras and Manfred W. Padberg, Linear Optimization and Extensions: Problems and Solutions, Universitext, Springer-Verlag, 2001. (Problems from Padberg with solutions.)
- Mark de Berg, Marc van Kreveld, Mark Overmars, and Otfried Schwarzkopf (2000). Výpočetní geometrie (2. přepracované vydání). Springer-Verlag. ISBN 978-3-540-65620-3.CS1 maint: více jmen: seznam autorů (odkaz) Chapter 4: Linear Programming: pp. 63–94. Describes a randomized half-plane intersection algorithm for linear programming.
- Michael R. Garey a David S. Johnson (1979). Počítače a neodolatelnost: Průvodce po teorii NP-úplnosti. W.H. Freemane. ISBN 978-0-7167-1045-5. A6: MP1: INTEGER PROGRAMMING, pg.245. (computer science, complexity theory)
- Gärtner, Bernd; Matoušek, Jiří (2006). Porozumění a používání lineárního programování. Berlín: Springer. ISBN 3-540-30697-8. (elementary introduction for mathematicians and computer scientists)
- Cornelis Roos, Tamás Terlaky, Jean-Philippe Vial, Interior Point Methods for Linear Optimization, Second Edition, Springer-Verlag, 2006. (Graduate level)
- Alexander Schrijver (2003). Combinatorial optimization: polyhedra and efficiency. Springer.
- Alexander Schrijver, Teorie lineárního a celočíselného programování. John Wiley & synové, 1998, ISBN 0-471-98232-6 (mathematical)
- Gerard Sierksma; Yori Zwols (2015). Lineární a celočíselná optimalizace: teorie a praxe. CRC Press. ISBN 978-1-498-71016-9.
- Gerard Sierksma; Diptesh Ghosh (2010). Networks in Action; Text and Computer Exercises in Network Optimization. Springer. ISBN 978-1-4419-5512-8. (linear optimization modeling)
- H. P. Williams, Model Building in Mathematical Programming, Fifth Edition, 2013. (Modeling)
- Stephen J. Wright, 1997, Primal-Dual Interior-Point Methods, SIAM. (Graduate level)
- Yinyu Ye, 1997, Interior Point Algorithms: Theory and AnalysisWiley. (Advanced graduate-level)
- Ziegler, Günter M., Chapters 1–3 and 6–7 in Lectures on Polytopes, Springer-Verlag, New York, 1994. (Geometry)