Programování. s omezujícími podmínkami. SAT a lokáln. Algoritmus GSAT. Algoritmus GSAT. Roman Barták

Podobné dokumenty
prochází částečná konzistentní ohodnocení dokud nenajde úplné (konzistentní) ohodnocení Základní princip prohledávání s navracení při řešení CSP:

Programování. s omezujícími podmínkami. Roman Barták. roman.bartak@mff.cuni.cz

Optimalizace & soft omezení: algoritmy

Co je obsahem? O čem bude přednáška? plánování a rozvrhování. ono se to někde používá? aplikace? řešící algoritmy.

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML

Heuristické řešení problémů. Seminář APS Tomáš Müller

u odpovědí typu A, B, C, D, E: Obsah: jako 0) CLP Constraint Logic Programming

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

Obsah: CLP Constraint Logic Programming. u odpovědí typu A, B, C, D, E: jako 0)

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Programování. s omezujícími podmínkami. Roman Barták. rová hranová konzistence

Vraťme se k základům: DFS = Depth First Search

SAT řešič pomocí algoritmů inspirovaných přírodou. Jan Klátil, Milan Rybář

ČVUT FEL X36PAA - Problémy a algoritmy. 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu

Výroková a predikátová logika - V

Evoluční algoritmy. Podmínka zastavení počet iterací kvalita nejlepšího jedince v populaci změna kvality nejlepšího jedince mezi iteracemi

Základy umělé inteligence

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Rekurzivní algoritmy

Znalosti budeme nejčastěji vyjadřovat v predikátové logice prvního řádu. Metody:

State Space Search Step Run Editace úloh Task1 Task2 Init Clear Node Goal Add Shift Remove Add Node Goal Node Shift Remove, Add Node

12. Globální metody MI-PAA

Umělá inteligence I. Roman Barták, KTIML.

jednoduchá heuristika asymetrické okolí stavový prostor, kde nelze zabloudit připustit zhoršují cí tahy Pokročilé heuristiky

11. Tabu prohledávání

Markov Chain Monte Carlo. Jan Kracík.

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

Programovani v Maplu Procedura

Výroková logika - opakování

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Umělá inteligence I. Roman Barták, KTIML.

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

Výroková a predikátová logika - III

Logika a logické programování

Metoda Monte Carlo, simulované žíhání

Paralelní grafové algoritmy

Zada ní 1. Semina rní pra ce z pr edme tu Matematický software (KI/MSW)

OPTIMALIZAČNÍ ÚLOHY. Modelový příklad problém obchodního cestujícího:

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Grafové algoritmy. Programovací techniky

Zpětnovazební učení Michaela Walterová Jednoocí slepým,

Úloha ve stavovém prostoru SP je <s 0, C>, kde s 0 je počáteční stav C je množina požadovaných cílových stavů

Počítačové simulace a statistická mechanika

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Výroková a predikátová logika - II

Algoritmus Minimax. Tomáš Kühr. Projektový seminář 1

Paradigmata programování II Korutiny a nedeterminismus

Výroková a predikátová logika - II

Metody návrhu algoritmů, příklady. IB111 Programování a algoritmizace

Optimizing Limousine Service with AI. David Marek

Klasifikace a predikce. Roman LUKÁŠ

popel, glum & nepil 16/28

IV113 Validace a verifikace. Převod LTL formule na Büchi automat. Jiří Barnat

Plánováníá a rozvrhování

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory

2. úkol MI-PAA. Jan Jůna (junajan)

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Slepé prohledávání do šířky Algoritmus prohledávání do šířky Při tomto způsobu prohledávání máme jistotu, že vždy nalezneme koncový stav, musíme ale p

Grafové algoritmy. Programovací techniky

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Aproximativní algoritmy UIN009 Efektivní algoritmy 1

Koncept pokročilého návrhu ve VHDL. INP - cvičení 2

Basic256 - úvod do programování Příklady. ing. petr polách

7. Heuristické metody

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Implementace LL(1) překladů

Programování v jazyce JavaScript

Hanojská věž. T2: prohledávání stavového prostoru. zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3]

Matematická logika. Rostislav Horčík. horcik

Přednáška 3. Rekurze 1

Počítačové šachy. Otakar Trunda

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Dynamické programování

Dynamické rozvrhování

Dynamické programování

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Booleova algebra. ZákonyBooleovy algebry Vyjádření logických funkcí

Metoda hrubé sily, backtracking a branch-and-bound

Výroková a predikátová logika - II

Vyberte oblečení tak, aby navzájem ladilo. Proměnné: shirt: {red, white}

Alternativní metody prohledávání stavového prostoru. Gerstner Laboratory Agent Technology Group, Czech Technical University in Prague

Heuristiky UNIVERZITA PALACKÉHO V OLOMOUCI KATEDRA MATEMATICKÉ ANALÝZY A APLIKACÍ MATEMATIKY. Vypracovala:

Dynamické programování

Výroková a predikátová logika - III

Rezoluce ve výrokové logice

Evolučníalgoritmy. Dále rozšiřována, zde uvedeme notaci a algoritmy vznikléna katedře mechaniky, Fakulty stavební ČVUT. Moderní metody optimalizace 1

8. Simulované ochlazování Simulated Annealing, SA

Logické programování s omezujícími podmínkami. Constraint Logic Programming: CLP

CLP(F D) program. Základní struktura CLP programu solve( Variables ) :- 1. definice proměnných a jejich domén declare_variables( Variables),

IB111 Úvod do programování skrze Python

Hraní her. (Teorie a algoritmy hraní her) Řešení úloh hraní her. Václav Matoušek /

Usuzování za neurčitosti

Katedra kybernetiky skupina Inteligentní Datové Analýzy (IDA) 9. dubna Filip Železný (ČVUT) Vytěžování dat 9.

Pokročilé simulace ve fyzice mnoha částic:

Třídy složitosti P a NP, NP-úplnost

Projekční algoritmus. Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění. Jan Klíma

Transkript:

Lokáln lní prohledávání Programování s omezujícími podmínkami Roman Barták Katedra teoretické informatiky a matematické logiky roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak prochází úplná nekonzistentní ohodnocení dokud nenajde konzistentní ohodnocení oproti metodě generuj a testuj je další kandidát na řešení generován na základě výsledku testu splnění podmínek cíleně se snažíme splnit více podmínek Algoritmy lokálního prohledávání definují okolí současného stavu (ohodnocení proměnných) a metodu výběru stavu z okolí (intenzifikace) HC heuristika výběr nejlepšího ohodnocení lišícího se v jedné proměnné někdy se bere první lepší ohodnocení MC heuristika výběr nejlepšího ohodnocení lišícího se ve vybrané konfliktní proměnné metodu úniku z lokálního optima (diverzifikace) restart začneme ve zcela jiném stavu RW vybereme stav náhodně Tabu zakážeme opakování kroků SAT a lokáln lní prohledávání Řadu problémů lze formulovat v podobě SAT = splnitelnost logické formule v konjunktivní normální formě CNF = konjunkce klauzulí klauzule = disjunkce literálů (podmínka) literál = atom nebo negace atomu Příklad: (A B) ( B C) ( C A) Podobně jako CSP je SAT také NP-úplný problém, nelze tedy očekávat rychlý úplný algoritmus. Lokálním prohledáváním lze řešit poměrně velké formule. Poznámky: splnitelnost formule v disjunktivně normální formě lze řešit v lineárním čase SAT je speciálním případem CSP a naopak, CSP lze převést na SAT Algoritmus GSAT GSAT řeší SAT problém postupným překlápěním proměnných. Cílem je maximalizovat (vážený) počet splněných klauzulí. Algoritmus GSAT procedure GSAT(A,Max_Tries,Max_Moves) A: is a CNF formula for i:=1 to Max_Tries do S random assignment of variables for j:=1 to Max_Moves do if A satisfiable by S then return S V the variable whose flip yield the most important raise in the number of satisfied clauses S S with V flipped return the best assignment found end GSAT

GSAT a heuristiky GSAT lze kombinovat s různými heuristikami, které zvyšují jeho efektivitu (zvláště při řešení strukturovaných problémů): Random-Walk stejně jako u MCRW Vážení klauzulí vychází z pozorování, že některé klauzule zůstávají po řadu iterací nesplněné, klauzule tedy nemají v problému stejnou důležitost splnění těžké klauzule lze preferovat přidáním váhy váhu může systém sám odvodit na začátku mají všechny klauzule stejnou váhu po každé iteraci je zvětšena váha u nesplněných klauzulí Průměrování řešení standardně každý pokus začíná z náhodného ohodnocení, tj. zapomene se již získané řešení lze zachovat společné části předchozích řešení restartovací stav se vypočte ze dvou posledních výsledků bitovým srovnáním (stejné bity jsou zachovány, ostatní nastaveny náhodně) Konekcionistický přístup Založen na myšlence reprezentovat problém jako síť jednoduchých procesorů. procesory nabývají různých stavů (typicky on a off). následující stav procesoru je odvozen od stavu připojených procesorů (roli hraje i síla spojení). Cílem je najít stabilní stav celé sítě, tj. procesory nejsou nuceny změnit svůj stav. Tento stabilní stav reprezentuje řešení problému. Vlastnosti: možnost masivního paralelismu (tj. rychlé řešení problémů) černá skříňka (není zcela jasné, co se děje uvnitř) asi nejznámějším reprezentantem jsou umělé neuronové sítě (NN) ale na podobném principu pracují i celulární automaty GENET - CSP jako NN Proměnné s doménou odpovídá cluster neuronů (pro každou hodnotu jeden neuron) Dva neurony jsou spojeny inhibiční hranou s negativní váhou pokud jsou příslušné hodnoty nekompatibilní (binární CSP). Příklad: A::{1,,} A+B je sudé A= v E= B::{1,,} B+C je sudé C::{1,,} C+D je sudé E::{1,,} D+E je sudé D::{1,,} (proměnné) 1 1 Počítání s GENETem Na začátku je v každém clusteru vybrán jeden aktivní neuron. Neurony mění své stavy synchronně (všechny najednou) na základě svého vstupu (Σ w*s vážený součet stavů z okolí) v každém clusteru se vybere neuron s největším vstupem Výpočet končí ve stabilním stavu. (hodnoty) = zapnutý neuron; čísla indikují vstup neuronu

1 Počítání s GENETem pokračov ování Útěk k z lokáln lního optima Co dělat ve stabilním stavu, který není koncový? Dosud jsme používali restart nebo šum. Můžeme ale také změnit prostor ohodnocení. Jak? Změnou hodnotící funkce! dynamické lokální prohledávání = zapnutý neuron; čísla indikují vstup neuronu U GENETu můžeme měnit váhy spojnic! Pokud hrana spojuje dva aktivní neurony (= porušená podmínka), posílí svojí váhu. nová váha x,y = stará váha x,y s x * s y Tím vlastně měníme evaluační funkci (Guided Local Search). Posilování vah u GENET V lokálním minimu se posílí váhy vybraných hran (což poruší rovnováhu). () () () () () ()... Algoritmus GENET procedure GENET(connectionist network) one arbitrary node per cluster is switched on; repeat repeat % network convergence modified <- false; for each cluster C do in parallel on_node <- currently switched on node in cluster C; label_set <- the set of nodes in C which input are maximum; if on_node is not in label_set then switch off on_node; modified <- true; switch on arbitrary node in label_set; until not modified if sum of input to all switched-on nodes < then for each connection c connecting nodes x & y do in parallel if both x & y are switched on then decrease the weight of c by 1; until input to all switched-on nodes are end GENET

Simulované žíhání (SA) Založeno na myšlence simulace procesu ochlazování kovů. Při vyšší teplotě atomy více kmitají a pravděpodobnost změny krystalické mřížky je vyšší. Postupným ohlazování se atomy usazují do nejlepší polohy polohy s nejmenší energií. Stejný proces lze aplikovat v optimalizačních algoritmech tzv. simulované žíhání (simulated annealing): začneme s náhodným stavem lokální krok je akceptován jen pokud vede ke zlepšení stavu vede ke zhoršení stavu (v tomto případě je krok přijat jen s určitou pravděpodobností odvozenou od aktuální teploty ) teplota je postupně snižována, tj. snižuje se pravděpodobnost zhoršení stavu dle tzv. ochlazovací křivky procedure SA(InitT, MinT, MaxMoves) s random assignment of variables best s T InitT while MinT<T do num_errors while num_error<maxmoves do next_s a random local change of s if eval(next_s) < eval(s) then s next_s if eval(s) < eval(best_s) then best s else p random number in [,1) if p < e (eval(s)-eval(next_s))/t then s next_s else num_errors num_errors+1 T.8 x T return best end SA evaluace Algoritmus SA ochlazovací křivka Metropolisova heuristika čas Localizer Prezentované algoritmy lokálního prohledávání mají společnou kostru, kterou lze doplnit procedurami realizujícími konkrétní algoritmus. Algoritmus Local Search procedure local-search(max_tries,max_moves) s random valuation of variables for i:=1 to Max_Tries while Gcondition do for j:=1 to Max_Moves while Lcondition do if eval(s)= then return s select n in neighbourhood(s) if acceptable(n) then s n s restartstate(s) return best s end local-search Shrnutí lokáln lního prohledávání Algoritmy lokálního prohledávání začínají v nějakém stavu a přechodem do stavu z okolí se snaží najít cílový stav. Obecně jsou definovány volbou okolí a v něm přípustných stavů heuristikou výběru lepšího stavu z okolí (intenzifikace) meta-heuristikou pro vyskočení z lokálního optima (diverzifikace) www.comet-online.org Z Lokalizeru vychází systém Comet (MaxOS X, Linux, Win), který umožňuje popisovat algoritmy lokálního prohledávání deklarativním způsobem

Pro připomenutí: metoda generuj a testuj otestuje splnění podmínek až po vygenerování kandidáta na řešení (úplného ohodnocení proměnných) kandidáty generujeme systematicky Splnění podmínky můžeme otestovat, jakmile známe hodnoty proměnných v podmínce! fázi testování v GT děláme zároveň s generováním Zpět t ke GT procedure generate_first(variables) for each V in Variables do label V by the first value in D V end generate_first procedure generate_next(assignment) find first X in Assignment such that all following variables are labelled by the last value from their respective domains (name the set of these variables Vs) if X is labelled by the last value then return fail label X by next value in D X for each Y in Vs do assign first value in D Y to Y end generate_next Backtracking Asi nejběžnější algoritmus systematického prohledávání, který testuje podmínky ihned, jak je to možné. při neúspěchu (nějaká podmínka nelze splnit) se vrátí k poslední ohodnocené proměnné a zkusí jinou hodnotu prohledávání do hloubky s navracením Základní princip prohledávání s navracení při řešení CSP: 1. postupně ohodnocuj proměnné. po každém ohodnocení otestuj podmínky, jejichž všechny proměnné již mají hodnotu Otevřené otázky (které zodpovíme později): v jakém pořadí se mají proměnné ohodnocovat? v jakém pořadí se mají zkoušet hodnoty? Algoritmus prohledávání s navracením postupně prochází částečná konzistentní ohodnocení, dokud nenajde úplné (konzistentní) ohodnocení. procedure BT(X:variables, V:assignment, C:constraints) if X={} then return V x select a not-yet assigned variable from X for each value h from the domain of x do if constraints C are consistent with V {x/h} then R BT(X {x}, V {x/h}, C) if R fail then return R return fail end BT volá se BT(X, {}, C) Chronologický backtracking rekurzivně Poznámka: Pokud můžeme test provést nad částečně vygenerovaným kandidátem řešením, je BT vždy lepší než GT, protože nemusí procházet všechny kandidáty. Chronologický backtracking iterativně procedure BT(X:variables, C:constraints) i 1, D i D i while 1 i n do instantiate_and_check(i, C) if x i = null then i i 1 else i i + 1, D i D i if i = then return fail return {x 1,, x n } end BT procedure instantiate_and_check(i, C:constraints) while D i is not empty do select and delete some element b from D i x i b if constraints C are consistent with {x 1,, x i } then return x i null end instantiate_and_check