1 / 18

Celočíselné programování

Celočíselné programování. RNDr. Jiří Dvořák, CSc. dvorak @uai.fme.vutbr.cz. Úloha celočíselného programování. Minimalizovat f ( x 1 , x 2 , … , x n ) za podmínek kde Z je množina celých čísel. Klasifikace úloh celočíselného programování. Úlohy plně ( ryze ) celočíselné:

adara
Download Presentation

Celočíselné programování

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Celočíselné programování RNDr. Jiří Dvořák, CSc. dvorak@uai.fme.vutbr.cz Teorie systémů a operační analýza

  2. Úloha celočíselného programování Minimalizovat f(x1, x2, … , xn) za podmínek kde Z je množina celých čísel. TSOA: Celočíselné programování

  3. Klasifikace úloh celočíselného programování • Úlohy plně (ryze) celočíselné: J = {1, 2, … , n} Podmínka celočíselnosti se vztahuje na všechny proměnné. • Úlohy částečně (smíšeně) celočíselné: J  {1, 2, … , n} Některé proměnné nemusejí být celočíselné. • Ú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í

  4. Úloha celočíselného LP ve standardním tvaru kde Z je množina celých čísel. TSOA: Celočíselné programování

  5. Příklady úloh celočíselného LP • Úloha optimalizace výrobního programu, kde množství výrobků se počítá v kusech. • Ř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ů). • 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). • Ú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í

  6. 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í

  7. Přístupy k řešení celočíselných úloh • 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í. • Použití metod celočíselného programování. TSOA: Celočíselné programování

  8. Metody řešení celočíselných úloh • Metody sečných nadrovin (např. Gomoryho metody) • Metodyvětví a mezí • Metodydynamického programová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) • 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í

  9. 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í

  10. Konstrukce sečné nadroviny Nechť B je optimální báze. Označme symboly ij prvky matice B–1A a i prvky vektoruB–1b. 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í

  11. 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í

  12. Metoda větví a mezí pro maximalizační úlohu LP • 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ě. • 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í

  13. Ú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í

  14. Ř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í d1 d2 …  dn , kde dj = cj /aj . Nechť množina Mk byla získána dosazením hodnot j  {0, 1} zaprvý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í

  15. 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: y1= b, yj+1 = yj – ajxj 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í

  16. 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í

  17. Ř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í

  18. Vybrané metaheuristiky • 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. • 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í

More Related