Úvod do celočíselné lineární optimalizace Martin Branda, verze 7.. 7. Motivace Reálné (smíšeně-)celočíselné úlohy Optimalizace portfolia celočíselné počty akcií, modelování fixních transakčních nákladů, Rozvrhování binární proměnné přiřazující úlohy ke strojům, Úlohy rozvozu binární proměnné identifikující následníka na cestě vozidla, a mnoho dalších. Nejprve se podíváme na úlohu umístění skladů (facility location problem): i =,..., m potenciální sklady/pobočky (facilities), j =,..., n zákazníci, x ij převezené množství ze skladu i k zákazníkovi j, y i binární rozhodovací proměnné, je-li sklad postaven =, c ij náklady za dodanou jednotku zákazníkovi j ze skladu i, f i fixní náklady na postavení skladu i, K i kapacita skladu i, D j poptávka zákazníka j. Úlohu můžeme formulovat takto min x ij,y i s.t. n m c ij x ij + f i y i j= i m x ij K i y i, i =,..., n, i= j= n x ij = D j, j =,..., m, i= x ij, y i {, }. Účelová funkce udává náklady na převoz a náklady na postavení skladů. První omezení říká, že je-li sklad postaven, dodávky z něj nepřekročí jeho kapacitu; není-li postaven, nemůže z něj být nic dodáno. Druhá omezení zaručují, že je uspokojena poptávka u všech zákazníků. Poslední jsou omezení na rozhodovací proměnné: dodaná množství jsou nezáporná, sklad je buď postaven nebo ne.
Do úlohy je možné doplnit další logická omezení, např. že je postaven nejvýše jeden ze skladů {i, i, i }: y i + y i + y i, nebo buď je postavena dvojice skladů {i, i } nebo žádný. Obecné vlastnosti úloh Uvažujme obecnou celočíselnou úlohu y i = y i. min c T x () Ax b, () x Z n +. () Předpokládáme, že všechny koeficienty v úloze jsou celočíselné, resp. racionální. Označíme množinu přípustných řešení a její relaxaci S = {x Z n + : Ax b}, () P = {x R n + : Ax b}. () Zřejmě platí S P. Netriviální je následující vztah mezi množinami Obrázek množiny Původní celočíselná úloha S conv(s) P. x + x, () x + x 7, (7) x, x Z n +. (8) min c T x : x S (9) je ekvivalentní následující úloze lineární programování (bez celočíselnosti) min c T x : x conv(s), () viz obrázek. Zkonstruovat explicitní vyjádření conv(s) je však prakticky velice náročné, je nutné velké množství tzv. silných řezů, tedy obvykle prakticky nepoužitelné. Je možné ukázat ext(conv(s)) P, extd(conv(s)) = extd(p ). V praktických úlohách, viz Motivace, se obvykle vyskytují zároveň celočíselné a reálné rozhodovací proměnné. Dostáváme pak úlohu smíšeného-celočíselného programování (mixed-integer programming) min c T x + d T y s.t. Ax + By b, x Z n +, y R n +.
Obrázek : Celočíselná množina S (kříže), relaxace P (červená) a konvexní obal conv(s) (modrá) x x x x. Metoda větvení a mezí (Branch and Bound) Základní metodou pro řešení úloh s celočíselností je metoda větvení a mezí, kde v každém kroku (uzlu stromu) řešíme reálnou lineární úlohu (bez celočíselnosti). Nalezení celočíselného optimálního řešení původní úlohy se snažíme zaručit pomocí následujících iterativních kroků: Vyřešte úlohu LP z fronty (na počátku fronta obsahuje relaxovanou úlohu). Větvení (branching): obsahuje-li optimální řešení neceločíselnou složku, např. ˆx i, vytvořte dvě nové úlohy tak, že přidáme do úlohy předešlé právě jedno z následujících omezení x i ˆx i, x i ˆx i. Omezení (bounding): pamatuj si dosud nejlepší (tj. s nejmenší hodnotou účelové funkce) nalezené celočíselné řešení. Je-li optimální hodnota LP úlohy horší (vyšší) než nejlepší dosud nalezená pro celočíselné řešení, nové větve nevytvářej optimální hodnota by se nezlepšila. Nevětvi ani LP úlohu s celočíselným řešením. Příklad min x + x () Strom reprezentující průběh algoritmu najdeme na obrázku. x + x, () x + x 7, () x, x Z n +. () Branch-and-bound obvykle na reálných větších úlohách nekončí vyprázdněním fronty, ale buď vyčerpáním časového limitu, například hodina, nebo dosažením požadovaného
uzel x =.8 x =.8 ˆf =. x x Obrázek : Metoda větvení a mezí uzel x = x ˆf = = uzel x = x =.7 ˆf =.7 x x uzel x = x = ˆf = uzel x = x = ˆf = x Obrázek : Branch and bound rozklad množiny S x x x
rozdílu mezi dolní a horní mezi na optimální hodnotu. Tyto meze postupně aktualizujeme v průběhu výpočtu, kde dolní mez: LP relaxace, dualita, horní mez: přípustné celočíselné řešení s nejmenší hodnotou účelové funkce.. Další metody řešení Existuje velké množství dalších metod vhodných pro celočíselné úlohy, uvádíme pouze přehled (více Výpočetní aspekty optimalizace:) Metoda sečných nadrovin (cutting plane method) generování řezů (valid inequalities) vedoucí k aproximaci conv(s), řezy odřezávají pouze prvky z P, které nejsou v S Dynamické programování Metoda generování sloupců (columnn generation) Heuristiky (konstrukční heuristiky, tabu search, genetické algoritmy)... Předešlé algoritmy jsou obvykle kombinovány s branch-and-bound, dostaneme tedy například branch-and-cut.. Totální unimodularita Můžeme se setkat s úlohami se speciálním tvarem, které je možné řešit přímo pomocí lineárního programování, kdy při celočíselném vektoru pravých stran existuje celočíselné optimání řešení. Definice. Matice A je totálně unimodulární (TU), jestliže je determinant každé její čtvercové podmatice roven +, -, nebo. Je-li vektor pravých stran b celočíselný, potom je každé bazické řešení celočíselné. Máli tedy úloha optimální řešení, potom existuje celočíselné optimální bazické řešení. Pro každou regulární čtvercovou podmatici B matice omezení (A I) můžeme odvodit inverzní matici tak, že pro její prvky platí (B ) ij = ( ) i+j B ji B, kde matice B ji vznikne z B vynecháním řádku j a sloupce i. Všechny prvky inverzní matice jsou tedy celočíselné, proto je i každé bazické řešení B b celočíselné. Je-li A is TU, potom i A T, A a (A I) je TU.
Postačující podmínkou pro totální unimodularitu je například, obsahuje-li každý sloupec matice právě jeden prvek +, právě jeden - a ostaní jsou nulové. Není to však nutná podmínka: Použít na dopravní problém. Reference [] Wolsey LA (998). Integer programming. Wiley-Interscience series in discrete mathematics and optimization, J. Wiley & sons, New York (N.Y.), Chichester, Weinheim..