Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:dydaktyka:problog:lab2 [2017/06/04 14:54]
msl [Zombie Epidemics]
en:dydaktyka:problog:lab2 [2019/06/27 15:49] (current)
Line 1: Line 1:
-====== Probabilistic Programming — Probabilistic Graphs ======+====== Probabilistic Programming — Probabilistic Graphs ​and Decision Theory ​======
  
 Graph structures are commonly used to represent knowledge across various domains and problems. It shouldn'​t be surprising that they are also present in many probabilistic models. In this class we will introduce probabilistic graphs --- weighted graphs with weights representing probabilities. Next, there will be very short introduction to decision theory in Problog. Finally we will try to escape from zombies which clearly shows usefulness of this class. Graph structures are commonly used to represent knowledge across various domains and problems. It shouldn'​t be surprising that they are also present in many probabilistic models. In this class we will introduce probabilistic graphs --- weighted graphs with weights representing probabilities. Next, there will be very short introduction to decision theory in Problog. Finally we will try to escape from zombies which clearly shows usefulness of this class.
Line 16: Line 16:
 0.2::​edge(2,​3). 0.2::​edge(2,​3).
 0.7::​edge(3,​5). 0.7::​edge(3,​5).
-0.3::edge(4.5).+0.3::edge(4,5).
 </​code>​ </​code>​
  
Line 29: Line 29:
 path(A,C) :- edge(A,B), path(A,C) :- edge(A,B),
              B \= C,              B \= C,
-             edge(B,C).+             path(B,C).
 </​code>​ </​code>​
  
Line 63: Line 63:
  
 <code prolog> <code prolog>
-% X \= Y, because you can meet with yourself+% X \= Y, because you can'​t ​meet yourself
 0.1::​contact(X,​Y) :- human(X), human(Y), X \= Y. 0.1::​contact(X,​Y) :- human(X), human(Y), X \= Y.
 </​code>​ </​code>​
Line 72: Line 72:
     * you can be already infected     * you can be already infected
     * you can get infected because of the bad air     * you can get infected because of the bad air
-    * you can get infected ​because meeting and contacting an infected person+    * you can get infected ​via contacting an infected person
   - check what is the probability that any human gets infected   - check what is the probability that any human gets infected
-    * how would it change if there was only one infected person in beginning?​ +    * how would it change if there was only one infected person in the beginning?​ 
-    * how would it change if couldn'​t get infected via air? +    * how would it change if one couldn'​t get infected via air? 
   - introduce a new element to the model: some people are naturally resistant to the virus   - introduce a new element to the model: some people are naturally resistant to the virus
     * if you are resistant, you can't get infected by air     * if you are resistant, you can't get infected by air
Line 83: Line 83:
     * what is the impact of the resistant people on the whole population?     * what is the impact of the resistant people on the whole population?
  
 +==== Left 4 Dead ====
 +
 +{{ :​en:​dydaktyka:​problog:​left4dead.jpg?​direct&​200|}}
 +OK. The epidemics started and unfortunately you and your three friend are the only ones who remained human in the whole shopping mall. Now you have to escape. After the initial disbelief and inevitable panic, you start planning your escape. You are aware of only two viable escape routes: you have a car in the parking lot and there is a helicopter pad on the roof of the mall. 
 +
 +Despite the high risk of meeting zombies on every route, both targets have additional sets of problems:
 +  * you have to get gas from the nearby gas station if you want to use the car
 +  * the cellular network is dead (what happened?!) and you have to get to the only radio station (security room) in the mall to contact the army so the can send the helicopter; what's more you're not sure if the helicopter will be here soon enough to save you.
 +
 +The graph below shows both plans --- graph weights represent probability that your team will survive the travel.
 +
 +{{ :​en:​dydaktyka:​problog:​escape_plan_1.png?​direct&​600 |}}
 +
 +=== Assignments ===
 +
 +  - model the escape plan as a program in Problog
 +  - which escape route is more probable according to the Problog query engine? ​
 +
 +==== Decision Theory for the Rescue ====
 +
 +OK, you have two possible plans, but there is no agreement which one should be pursued. You start arguing with other, screams of the zombies attacking the door don't help at all. Finally one of you knows a little of mathematics that could help. Decision theory is a branch of mathematics connected to the game theory --- the idea is to compare different actions according to some axioms that people believe to be rational. If you want to know more, read a [[http://​www2.stat.duke.edu/​~scs/​Courses/​STAT102/​DecisionTheoryTutorial.pdf|qucik introduction]],​ but for now it will be enough to know that:
 +
 +  - we have to formalize what decisions can we make, in Problog is it enough to put question mark in place of a probability to mark that we are dealing with a decision, e.g. if we have to decide if we should sell the house, we can model it in Problog using one line: <code prolog>?::​sell_house.</​code>​
 +  - we have to define utility/​cost function that describes how much we value a certain outcome and how much it will cost us. In Problog there exists a built-in predicate ''​utility'',​ e.g. to say that death is a very unwanted situation, you could write: <code prolog>​utility(death,​ -100)</​code>​ and to say that getting a job is very valued: <code problog>​utility(got_job,​ 50)</​code>​
 +
 +Then we calculate the estimated outcome based on the probability theory and voila, we find which decision is the best at the moment. In the Problog online editor just choose ''​DTProblog''​ from the available actions.
 +
 +=== Assignments ===
 +
 +  - Analyze and run the basic umbrella/​raincoat decision problem: <code prolog>% probabilistic facts
 +0.3::rain.
 +0.5::wind.
 +
 +% decision facts
 +?::​umbrella.
 +?::​raincoat.
 +
 +broken_umbrella :- umbrella, rain, wind.
 +dry :- rain, raincoat.
 +dry :- rain, umbrella, not broken_umbrella.
 +dry :- not(rain).
 +
 +% utilities
 +utility(broken_umbrella,​ -40).
 +utility(raincoat,​ -20).
 +utility(umbrella,​ -2).
 +utility(dry,​ 60).</​code>​
 +  - Use decision theory to select the best of the escape routes from zombies
 +    * there are two actions: ''​go(highway)'',​ ''​go(helicopter)''​
 +    * getting to the highway has quite high utility value (i.e. ''​50''​) but getting to the flying military fortress is much better (i.e. ''​100''​)
 +    * you have to say that you go the gas station only if you decide to try the highway; analogically for the helicopter
 +  - the escape plan got a bit more complicated... there are two cars near the mall: one close to the mall (but very old and already destroyed a bit by the zombies, it may not work) and second one, more far away, but in much better condition. There is a new decision to make: to which car will you go first after getting the gas (you can always try to switch car later)?
 +    * now you can make three possible decisions; update the model and repeat calculations  ​
 +    * the graph representing the new problem is presented below
 +
 +{{ :​en:​dydaktyka:​problog:​escape_plan_2.png?​direct&​400 |}}
 +
 + 
en/dydaktyka/problog/lab2.1496580851.txt.gz · Last modified: 2019/06/27 16:00 (external edit)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0