Optimalizace: Optimalizační a příliš podmíněné problémy a jejich řešení. Lineární, celočíselné a dynamické programování.
Optimalizační problém je 6-tice , kde:
Optimalizační problémy je možné řešit pomocí CSP (constraint satisfactory problem) algoritmů, lineárního (celočíselného), nebo dynamického programování.
Příliš podmíněný problém je CSP problém, pro který řešení neexistuje. Tyto problémy se řeší pomocí stanovení ceny jednotlivých omezení a řešící program se snaží nalézt řešení, které minimalizuje celkovou cenu nesplněných omezení: MAX-CSP, omezení s váhami, fuzzy omezení, semiring-based (polookruhy).
MAX-CSP využívá součet cen nesplněných omezení jako optimalizační kritérium, omezení s váhami převádí cenu na váhu omezení, fuzzy CSP modeluje cenu pomocí fuzzy množin (čísla z intervalu <0, 1> pro vyjádření preference prvků). Polookruhy využívají -polokruh: :
Vstupem úlohy lineárního programování je lineární funkce (nazývá se taky účelová funkce) a sada lineárních ohraničení na proměnnými . Cílem je najít takové hodnoty proměnných, které splňují lineární ohraničení a zároveň maximalizují (resp. minimalizují) hodnotu účelové funkce.
Variantou lineárního programování je celočíselné programování, ve kterém požadujeme navíc aby proměnné měli celočíselné hodnoty. Jinou variantou je 0/1-lineární programování, ve kterém můžou proměnné mít hodnoty pouze 0 nebo 1.
Pro řešení úloh lineárního programování nad je možné využít nasledovné algoritmy:
Celočíselné úlohy a 0/1-úlohy jsou NP těžké. Pro polynomiální řešení nad celými čísly se využívají techniky zaokrouhlování (aproximativní algoritmy) nebo schéma primární a duální úlohy (aproximace pomocí přibližování hodnot jejich účelových funkcí).
Schéma primární a duální úlohy obvykle pracuje se standardním tvarem úlohy LP: všechny lineární ohraničení mají tvar nerovnosti a hodnoty proměnných jsou nezáporné. Každá úloha LP se dá převést do standardního tvaru.
Dynamické programování je založeno na myšlence že optimální řešení problému obsahuje v sobě optimální řešení podproblémů.
Dynamické programování využívá následovný postup:
Technika je vhodná pro řešení optimalizačních problémů, u kterých dochází k překrývání podproblémů. Dynamické programování „ořezává“ strom prohledávaného stavového prostoru od větví, které nemůžou vést k nalezení optimálního řešení.
FI:IA101 Algoritmika pro těžké problémy (podzim 2011), prof. RNDr. Ivana Černá, CSc.
FI:PA163 Programování s omezujícími podmínkami (podzim 2011), doc. Mgr. Hana Rudová, Ph.D.
-
DevelX - Martin Jurča
stav - 90 %