Celoseln programovn RNDr Ji Dvok CSc dvorakuai fme
- Slides: 18
Celočíselné programování RNDr. Jiří Dvořák, CSc. dvorak@uai. fme. vutbr. cz Teorie systémů a operační analýza 1
Úloha celočíselného programování Minimalizovat f(x 1, x 2, … , xn) za podmínek kde Z je množina celých čísel. TSOA: Celočíselné programování 2
Klasifikace úloh celočíselného programování n Úlohy plně (ryze) celočíselné: J = {1, 2, … , n} Podmínka celočíselnosti se vztahuje na všechny proměnné. n Úlohy částečně (smíšeně) celočíselné: J {1, 2, … , n} Některé proměnné nemusejí být celočíselné. n Úlohy bivalentního (nula-jedničkového) programování: Mj = {0, 1} Proměnné mohou nabývat pouze hodnot nula nebo jedna. TSOA: Celočíselné programování 3
Úloha celočíselného LP ve standardním tvaru kde Z je množina celých čísel. TSOA: Celočíselné programování 4
Příklady úloh celočíselného LP n Úloha optimalizace výrobního programu, kde množství výrobků se počítá v kusech. n Řezný problém (rozhodovací proměnné vyjadřují počty kusů výchozího materiálu, rozřezané podle jednotlivých řezných plánů). n Přiřazovací problém (rozhodovací proměnné xij nabývají hodnoty jedna nebo nula podle toho, zda i-tý objekt z 1. skupiny je či není přiřazen j-tému objektu ze 2. skupiny). n Úloha o batohu (rozhodovací proměnné xj nabývají hodnoty jedna nebo nula podle toho, zda j-tý předmět je či není vložen do batohu). TSOA: Celočíselné programování 5
Přiřazovací problém Jsou dány dvě skupiny objektů, každá o n objektech. Každému objektu 1. skupiny je třeba přiřadit právě jeden objekt 2. skupiny. Přiřazení i-tého objektu 1. skupiny j-tému objektu 2. skupiny přinese zisk resp. ztrátu cij. Je-li i-tému objektu 1. skupiny přiřazen j-tý objekt 2. skupiny, je xij = 1, jinak xij = 0. TSOA: Celočíselné programování 6
Přístupy k řešení celočíselných úloh n Zanedbání podmínek celočíselnosti, použití vhodné metody LP nebo NLP a upravení výsledků na celá čísla. Při tomto způsobu hrozí nebezpečí, že se dopustíme příliš velké chyby nebo dokonce získáme nepřípustné řešení. Na druhé straně u některých úloh, jako je např. přiřazovací problém nebo dopravní problém s celočíselnými hodnotami pravých stran omezení, je při zanedbání podmínek celočíselnosti a použití simplexové metody teoreticky zaručeno získání celočíselného optimálního řešení. n Použití metod celočíselného programování. TSOA: Celočíselné programování 7
Metody řešení celočíselných úloh n Metody sečných nadrovin (např. Gomoryho metody) n Metody větví a mezí n Metody dynamického programování n Speciální metody pro řešení problému určitého typu · (např. maďarská metoda pro řešení přiřazovacího problému) n Heuristické metody · obecné heuristiky (metaheuristiky) - např. lokální hledání, genetické algoritmy, simulované žíhání, zakázané hledání · problémově specifické heuristiky TSOA: Celočíselné programování 8
Metoda sečných nadrovin pro lineární úlohy 1. Zanedbáme podmínky celočíselnosti. 2. Úlohu řešíme simplexovou metodou. Splňuje-li získané optimální řešení podmínky celočíselnosti, pak končíme. 3. V opačném případě do úlohy přidáme lineární omezení, které má tyto vlastnosti: · je splněno pro libovolné přípustné řešení původní celočíselné úlohy, · není splněno pro optimální neceločíselné řešení (příslušná nadrovina toto řešení „odřízne“). Vracíme se na krok 2 a pokračujeme duálně simplexovou metodou. Pozn. : V některých případech může dojít k velkému nárůstu rozměrnosti úlohy a ke zpomalení konvergence. TSOA: Celočíselné programování 9
Konstrukce sečné nadroviny Nechť B je optimální báze. Označme symboly ij prvky matice B– 1 A a i prvky vektoru B– 1 b. Dále budeme označovat symbolem [x] největší celé číslo menší nebo rovné hodnotě x. Nechť k není celočíselné. K soustavě rovnic z poslední simplexové tabulky připojíme rovnici kde rkj = kj – [ kj], Rk = k – [ k] a xn+1 je další nezáporná proměnná. TSOA: Celočíselné programování 10
Metoda větví a mezí Uvažujme úlohu 1. Položme MR = M, p = 0 (MR označuje rozkládanou množinu). 2. Větvení: Množinu MR rozložíme na r po dvou disjunktních podmnožin Mp+1 , Mp+2 , … , Mp+r , jejichž sjednocením je množina MR. 3. Omezování: Určíme horní mez h(Mk) hodnot funkce f(x) pro každou podmnožinu Mk vzniklou v posledním rozkladu. 4. Lze-li nalézt přípustné řešení xo takové, že pro všechny dosud nerozložené podmnožiny platí f(xo) h(Mk), pak postup končí a xo je optimální řešení. V opačném případě za množinu MR zvolíme podmnožinu s největší horní mezí, položíme p = p+r a vracíme se na krok 2. TSOA: Celočíselné programování 11
Metoda větví a mezí pro maximalizační úlohu LP n Omezování: Každá z podmnožin vzniklých rozkladem je charakterizována soustavou lineárních omezení a podmínek celočíselnosti. Zanedbáme podmínky celočíselnosti a vzniklou úlohu řešíme simplexovou metodou. Získaná optimální hodnota účelové funkce je horní mezí hodnot účelové funkce na příslušné podmnožině. n Větvení: Nechť xo je optimální řešení neceločíselné úlohy odpovídající rozkládané množině a nechť je neceločíselná hodnota proměnné xk. Množinu rozdělíme na dvě podmnožiny tak, že k původním podmínkám přidáme poprvé podmínku xk [ ] a podruhé podmínku xk [ ] + 1, kde [ ] je celá část hodnoty . TSOA: Celočíselné programování 12
Úloha o batohu Máme n věcí, jejichž celková hmotnost převyšuje limit hmotnosti obsahu batohu. Úkolem je naplnit batoh tak, aby byla maximalizována celková cena obsahu batohu. Matematický model: kde aj je hmotnost j-té věci, cj je cena j-té věci, b je limit hmotnosti, xj = 1 znamená, že j-tou věc vezmeme, a xj = 0 znamená, že j-tou věc nevezmeme. TSOA: Celočíselné programování 13
Řešení úlohy o batohu metodou větví a mezí Větvení provádíme do dvou větví dosazením hodnoty nula nebo jedna za nějakou proměnnou. Předpokládejme, že proměnné jsou očíslovány tak, že platí d 1 d 2 … dn , kde dj = cj /aj. Nechť množina Mk byla získána dosazením hodnot j {0, 1} za prvých p proměnných. Pak horní mez lze určit takto: kde q je takové, že kromě dosud vložených věcí se do batohu vejdou ještě věci s indexy p+1 až q– 1 a z q-té věci pouze část o hmotnosti kq. TSOA: Celočíselné programování 14
Formulace úlohy o batohu pomocí dynamického programování Úlohu o batohu chápeme jako n-etapový rozhodovací proces, kde stavem procesu na začátku j-té etapy je zbývající kapacita batohu (označme ji yj) a rozhodnutím v j-té etapě je určení hodnoty proměnné xj (1 znamená j-tou věc vzít a 0 znamená nevzít). Stavy procesu: y 1 = b, yj+1 = yj – aj xj Přípustná rozhodnutí: Úloha se převede na systém n funkcionálních rovnic, přičemž j-tá rovnice určuje optimální hodnotu účelové funkce spojené s (n – j + 1)-etapovým procesem, začínajícím ve stavu yj. TSOA: Celočíselné programování 15
Systém funkcionálních rovnic pro úlohu o batohu Označme symbolem n – j + 1(yj) optimální hodnotu účelové funkce spojené s (n – j + 1)-etapovým procesem, začínajícím ve stavu yj. Pak platí TSOA: Celočíselné programování 16
Řešení systému funkcionálních rovnic Systém funkcionálních rovnic se řeší pro j = n, n – 1, … , 1 a pro hodnoty stavů a získané optimální hodnoty xjo(yj) se zaznamenávají do tabulek. Optimální řešení úlohy x* o batohu se pak z těchto tabulek získá takto: kde TSOA: Celočíselné programování 17
Vybrané metaheuristiky n Genetický algoritmus pracuje nad populací tvořenou vektory rozhodovacích proměnných. Pomocí operátorů selekce, křížení, mutace a reprodukce se algoritmus snaží získat řešení s lepšími hodnotami účelové funkce. n Simulované žíhání (simulated annealing, SA) a zakázané hledání (tabu search, TS) používají operaci zvanou pohyb pro přechod k dalšímu řešení. Tyto metody připouštějí za určitých podmínek i pohyb k řešení horšímu, než je řešení aktuální, což jim umožňuje uniknout z řešení, které je pouze lokálně optimální. · SA je založeno na analogii mezi optimalizací a simulací procesu chladnutí materiálu. · TS snižuje nebezpečí návratu k již prozkoumanému řešení tak, že každé získané řešení (resp. odpovídající pohyb) je po jistou dobu zaznamenáno v seznamu zakázaných (tabu) řešení (resp. pohybů). TSOA: Celočíselné programování 18