From b04180460d7573c2528c71b0e728dbacb63437f3 Mon Sep 17 00:00:00 2001 From: Angira Sharma Date: Mon, 27 Mar 2017 11:42:06 +0530 Subject: [PATCH 1/6] added examples to planning.ipynb added examples to planning.ipynb: PDLL Actions Air_cargo_problem spare_tire_problem blocks_world --- planning.ipynb | 496 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 488 insertions(+), 8 deletions(-) diff --git a/planning.ipynb b/planning.ipynb index d5a5eb25d..091a1c916 100644 --- a/planning.ipynb +++ b/planning.ipynb @@ -1,24 +1,504 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## PLANNING" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook describes the planning.py module, which covers Classical Planning from Chapter 10 & Planning & Acting in Real World Chapter 11." + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ - "import planning" + "from planning import *\n", + "from utils import expr" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#PDDL \n", + "The PDDL (Planning Domain Definition Language) allows us to express all actions with one action schema,\n", + "\n", + "The `PDDL class` include:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. **`init(self, initial_state, actions, goal_test)`**: the constructor creates a knowledge base with initial state, initialises actions and `goal_test_func` function with `goal_test`.\n", + "2. **`goal_test(self)`**: initialises `goal_test` with `kb`.\n", + "3. **`act(self, action)`**: performs the action given as argument, along with checks preformed on pre-conditions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "PDDL is a domain definition language. It is used to define the properties of a domain, the predicates which are used and the action definition. A predicate defines the property of an object which can be true or false, e.g. yellow t-shirt. Yellow is the property and t-shirt is the object. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#ACTIONS\n", + "Actions are described by a set of action schemas that implicitly define the class Actions:\n", + "Actions consists of a precondition(positive and negative) and effect(positive and negative). It consists of following " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each problem described in chapter 10 has:\n", + "- an initial state\n", + "- a goal\n", + "- actions with preconditions and effects (these action are split into _pos (positive conditions) and _neg (negative conditions))\n", + "Each problem thus requires a solution which is satisfied by some initial conditions and solved using actions which meet the preconditions and effects.\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AIR CARGO PROBLEM from Figure 10.1\n", + "\n", + "To define a problem we have to define an initial state (predicates which are true at the beginning of the problem) and a goal state (predicates which are true at the end of the problem). \n", + "\n", + "\n", + "The following code defines the initial state for the problem" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def air_cargo():\n", + " init = [expr('At(C1, SFO)'), \n", + " expr('At(C2, JFK)'),\n", + " expr('At(P1, SFO)'),\n", + " expr('At(P2, JFK)'),\n", + " expr('Cargo(C1)'),\n", + " expr('Cargo(C2)'),\n", + " expr('Plane(P1)'),\n", + " expr('Plane(P2)'),\n", + " expr('Airport(JFK)'),\n", + " expr('Airport(SFO)')]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`init` defines the initial state of the problem.\n", + "\n", + "**`expr('At(C1, SF0)')`** represents the predicate **Cargo 1 at San Fransisco**\n", + "\n", + "**`expr('At(P1, SF0)')`** represents the predicate **Plane 1 at San Fransisco** ... and so on.\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following code defines the goal_test() function which tests if the solution achieves goal or not. 'required' states the goal:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def goal_test(kb):\n", + " required = [expr('At(C1 , JFK)'), expr('At(C2 ,SFO)')]\n", + " for q in required:\n", + " if kb.ask(q) is False:\n", + " return False\n", + " return True" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this problem the Goal is **`(At(C1 , JFK ) ∧ At(C2 , SFO))`** i.e., **Cargo 1 ar JFK and Cargo 2 at San Fransisco** which is written as:\n", + "\n", + "`required = [expr('At(C1 , JFK)'), expr('At(C2 ,SFO)')]`\n", + "\n", + "The function `goal_test(kb)` takes a knowledge base as argument, and for every predicate in `required` (goal), it checks the `ask` function from `KB class`. The `ask` function returns value `True` or `False` accordingly if predicate in `required` meets preconditions or not (defined ahead)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Actions such as 'load', 'unload' and fly are defined with preconditions and effects accompanying them." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Actions\n", + "# Load\n", + "precond_pos = [expr(\"At(c, a)\"), expr(\"At(p, a)\"), expr(\"Cargo(c)\"), expr(\"Plane(p)\"), expr(\"Airport(a)\")]\n", + "precond_neg = []\n", + "effect_add = [expr(\"In(c, p)\")]\n", + "effect_rem = [expr(\"At(c, a)\")]\n", + "load = Action(expr(\"Load(c, p, a)\"), [precond_pos, precond_neg], [effect_add, effect_rem])\n", + "\n", + "# Unload\n", + "precond_pos = [expr(\"In(c, p)\"), expr(\"At(p, a)\"), expr(\"Cargo(c)\"), expr(\"Plane(p)\"), expr(\"Airport(a)\")]\n", + "precond_neg = []\n", + "effect_add = [expr(\"At(c, a)\")]\n", + "effect_rem = [expr(\"In(c, p)\")]\n", + "unload = Action(expr(\"Unload(c, p, a)\"), [precond_pos, precond_neg], [effect_add, effect_rem])\n", + "\n", + "# Fly\n", + "# Used 'f' instead of 'from' because 'from' is a python keyword and expr uses eval() function\n", + "precond_pos = [expr(\"At(p, f)\"), expr(\"Plane(p)\"), expr(\"Airport(f)\"), expr(\"Airport(to)\")]\n", + "precond_neg = []\n", + "effect_add = [expr(\"At(p, to)\")]\n", + "effect_rem = [expr(\"At(p, f)\")]\n", + "fly = Action(expr(\"Fly(p, f, to)\"), [precond_pos, precond_neg], [effect_add, effect_rem])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "`precond_` is used to denote predicates which must be True **before** the action.\n", + "eg: \n", + "\n", + "`effect_` is used to denote predicates which must be True **after** the action.\n", + "\n", + "`precon_pos` & `effect_add` are used to denote predicates which must be **True**.\n", + "\n", + "`precon_neg` & `effect_rem` are used to denote predicates which must be **False**.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Eg: in Action `load`\n", + "\n", + "`precond_pos = [expr(\"At(c, a)\"), expr(\"At(p, a)\"), expr(\"Cargo(c)\"), expr(\"Plane(p)\"), expr(\"Airport(a)\")]` is a precondition which must be **True** denoting predicate _Cargo c at Airport a & Plane p at Airport a_.\n", + "\n", + "`precond_neg = []` is a precondition which must be **False**. \t\t\t\n", + "\n", + "`effect_add = [expr(\"In(c, p)\")]` is an effect which must be **True** denoting the predicate _Cargo c in Plane p_.\n", + "\n", + "`effect_rem = [expr(\"At(c, a)\")]`is an effect which must be **False** denoting the predicate _Cargo c at Airport a_." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`load = Action(expr(\"Load(c, p, a)\"), [precond_pos, precond_neg], [effect_add, effect_rem])` thus define the action **`Load(c, p, a)** with the preconditions it must follow and the effects it leads to." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, the function returns the defined problem using PDLL." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`return(PDLL(init, [load, unload, fly], goal_test)`\n", + "\n", + " which defines the problem as a whole with its initial state (`init`), the actions possible(` [load, unload, fly]`) and the goal(`goal_test`)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A solution to the air_cargo problem is as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "solution = [expr(\"Load(C1 , P1, SFO)\"),\n", + " expr(\"Fly(P1, SFO, JFK)\"),\n", + " expr(\"Unload(C1, P1, JFK)\"),\n", + " expr(\"Load(C2, P2, JFK)\"),\n", + " expr(\"Fly(P2, JFK, SFO)\"),\n", + " expr(\"Unload (C2, P2, SFO)\")]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where `expr(\"Load(C1 , P1, SFO)\")` means _load the Cargo C1 in Plane P1 at San Fransico_. In order for this action to take place the preconditions we specified while defining the action `Load` must be met. The effects from this action are then carried forward i.e., they now are an existing state and it should be sought that these effects do **not** clash with preconditions of actions ahead, otherwise the action can't be completed.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We then execute the action on the state's kb." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "a = air_cargo()\n", + "\n", + "for action in solution:\n", + " a.act(action)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where each action is acted upon leading to a state which is tested below to be the goal state or not." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.goal_test()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Yes, the solution is correct. You may try any other solution to check if it achieves the goal or not." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# SPARE TIRE PROBLEM from Figure 10.2:\n", + "\n", + "The problem follows the same structure of function as before, only the predicates are changed.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "init = [expr('Tire(Flat)'),\n", + " expr('Tire(Spare)'),\n", + " expr('At(Flat, Axle)'),\n", + " expr('At(Spare, Trunk)')]\n", + "\n", + "\n", + "required = [expr('At(Spare, Axle)'), expr('At(Flat, Ground)')]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Actions\n", + "\n", + "# Remove\n", + "precond_pos = [expr(\"At(obj, loc)\")]\n", + "precond_neg = []\n", + "effect_add = [expr(\"At(obj, Ground)\")]\n", + "effect_rem = [expr(\"At(obj, loc)\")]\n", + "remove = Action(expr(\"Remove(obj, loc)\"), [precond_pos, precond_neg], [effect_add, effect_rem])\n", + "\n", + "# PutOn\n", + "precond_pos = [expr(\"Tire(t)\"), expr(\"At(t, Ground)\")]\n", + "precond_neg = [expr(\"At(Flat, Axle)\")]\n", + "effect_add = [expr(\"At(t, Axle)\")]\n", + "effect_rem = [expr(\"At(t, Ground)\")]\n", + "put_on = Action(expr(\"PutOn(t, Axle)\"), [precond_pos, precond_neg], [effect_add, effect_rem])\n", + "\n", + "# LeaveOvernight\n", + "precond_pos = []\n", + "precond_neg = []\n", + "effect_add = []\n", + "effect_rem = [expr(\"At(Spare, Ground)\"), expr(\"At(Spare, Axle)\"), expr(\"At(Spare, Trunk)\"),\n", + " expr(\"At(Flat, Ground)\"), expr(\"At(Flat, Axle)\"), expr(\"At(Flat, Trunk)\")]\n", + "leave_overnight = Action(expr(\"LeaveOvernight\"), [precond_pos, precond_neg],\n", + " [effect_add, effect_rem])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "solution to the spare tire problem from the book is as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "solution = [expr(\"Remove(Flat, Axle)\"),\n", + " expr(\"Remove(Spare, Trunk)\"),\n", + " expr(\"PutOn(Spare, Axle)\")]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "let's test it in the same way as before :" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s = spare_tire()\n", + "\n", + "for action in solution:\n", + " s.act(action)\n", + "\n", + "s.goal_test()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The solution achieves the goal." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# THE BLOCKS WORLD from Figure 10.3 :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " The above image below shows the transitions between different states which are possible for 3 blocks. Watch how the rightmost transition is what we follow in the book.\n", + "\n", + "![pL plot](images/blocks_world.png)" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], - "source": [] + "source": [ + "" + ] } ], "metadata": { @@ -30,7 +510,7 @@ "language_info": { "codemirror_mode": { "name": "ipython", - "version": 3 + "version": 3.0 }, "file_extension": ".py", "mimetype": "text/x-python", @@ -42,4 +522,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} +} \ No newline at end of file From 299fa83c603f25fe2d700de037025b92c9c1bd0f Mon Sep 17 00:00:00 2001 From: Angira Sharma Date: Mon, 27 Mar 2017 11:44:58 +0530 Subject: [PATCH 2/6] added examples to logic.ipynb added examples to logic.ipynb: PropKB tt_entail tt_check_all dpll_satisfiable WalkSAT SATplan unify --- logic.ipynb | 371 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 336 insertions(+), 35 deletions(-) diff --git a/logic.ipynb b/logic.ipynb index 079f1170b..7c12d7c66 100644 --- a/logic.ipynb +++ b/logic.ipynb @@ -306,11 +306,11 @@ "|--------------------------|----------------------|-------------------------|---|---|\n", "| Negation | ¬ P | `~P` | `~P` | `Expr('~', P)`\n", "| And | P ∧ Q | `P & Q` | `P & Q` | `Expr('&', P, Q)`\n", - "| Or | P ∨ Q | `P` | `Q`| `P` | `Q` | `Expr('`|`', P, Q)`\n", + "| Or | P ∨ Q | `P` | `Q`| `P` | `Q` | `Expr('`|`', P, Q)\n", "| Inequality (Xor) | P ≠ Q | `P ^ Q` | `P ^ Q` | `Expr('^', P, Q)`\n", "| Implication | P → Q | `P` |`'==>'`| `Q` | `P ==> Q` | `Expr('==>', P, Q)`\n", "| Reverse Implication | Q ← P | `Q` |`'<=='`| `P` |`Q <== P` | `Expr('<==', Q, P)`\n", - "| Equivalence | P ↔ Q | `P` |`'<=>'`| `Q` |`P <=> Q` | `Expr('<=>', P, Q)`\n", + "| Equivalence | P ↔ Q | `P` |`'<=>'`| `Q` |`P ==> Q` | `Expr('==>', P, Q)`\n", "\n", "Here's an example of defining a sentence with an implication arrow:" ] @@ -412,6 +412,7 @@ "\n", "The class `PropKB` can be used to represent a knowledge base of propositional logic sentences.\n", "\n", + "\n", "We see that the class `KB` has four methods, apart from `__init__`. A point to note here: the `ask` method simply calls the `ask_generator` method. Thus, this one has already been implemented and what you'll have to actually implement when you create your own knowledge base class (if you want to, though I doubt you'll ever need to; just use the ones we've created for you), will be the `ask_generator` function and not the `ask` function itself.\n", "\n", "The class `PropKB` now.\n", @@ -425,67 +426,367 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# TODO: More on KBs, plus what was promised in Intro Section\n", + "The following gives an idea how the python code works in logic.py:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "KB = PropKB()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "creates an empty knowledge base" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "KB.tell(A & C)\n", + "KB.ask(A) == KB.ask(C) == {}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "adds sentence and checks if KB entails the query." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "KB.ask(E)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "KB.tell(E)\n", + "KB.ask(E)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "KB.retract(C)\n", + "KB.ask(C)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "removes all clauses of 'C' from the sentence." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "\n", - "TODO: fill in here ..." + "# The truth table enumeration algorithm from Figure 7.10:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "def tt_entails(kb, alpha):\n", + " \n", + " assert not variables(alpha)\n", + " return tt_check_all(kb, alpha, prop_symbols(kb & alpha), {})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Appendix: The Implementation of `|'==>'|`\n", + "Example:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tt_entails(expr('P & Q'), expr('Q'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The tt_entail algorithm makes use of the tt_check_all() function, which gives results in the following manner. " + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tt_check_all(expr('P & Q'), expr('Q'), prop_symbols(expr('Q')), {})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "prop_symbols() is used to give the function argument in the form of symbols." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Example of the DPLL algorithm from Figure 7.17:" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{B: True, A: True}\n{P: True}\n{P: True}\n{P: False}\n" + ] + } + ], + "source": [ + "print (dpll_satisfiable(expr('A & B')))\n", "\n", - "Consider the `Expr` formed by this syntax:" + "print (dpll_satisfiable(expr('P | Q')))\n", + "\n", + "print (dpll_satisfiable(expr('P | ~Q')))\n", + "\n", + "print (dpll_satisfiable(expr('~P | Q')))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Example of the WalkSAT algorithm from Figure 7.18:" ] }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 24, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(P ==> ~Q)" + "{C: True, B: True, A: True}" ] }, - "execution_count": 15, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "P |'==>'| ~Q" + "WalkSAT([A & B, A & C], 0.5, 100 )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "What is the funny `|'==>'|` syntax? The trick is that \"`|`\" is just the regular Python or-operator, and so is exactly equivalent to this: " + "# Example of the SATplan algorithm from Figure 7.22:" ] }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, + "execution_count": 25, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(P ==> ~Q)" + "['Left', 'Left']" ] }, - "execution_count": 16, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], + "source": [ + "transition = {'A': {'Left': 'A', 'Right': 'B'},\n", + " 'B': {'Left': 'A', 'Right': 'C'},\n", + " 'C': {'Left': 'B', 'Right': 'C'}}\n", + "\n", + "SAT_plan('C', transition, 'A', 3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# unify() algorithm from Figure 9.1:\n", + "\n", + " Returns a substitution to make the first 2 arguments identical, and the third argument is the substitution built up so far." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{x: 2}\n" + ] + } + ], + "source": [ + "print(unify(x, 2, {}))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# TODO: More on KBs, plus what was promised in Intro Section\n", + "\n", + "TODO: fill in here ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Appendix: The Implementation of `|'==>'|`\n", + "\n", + "Consider the `Expr` formed by this syntax:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "P |'==>'| ~Q" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What is the funny `|'==>'|` syntax? The trick is that \"`|`\" is just the regular Python or-operator, and so is exactly equivalent to this: " + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "(P | '==>') | ~Q" ] @@ -499,7 +800,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 29, "metadata": { "collapsed": false }, @@ -510,7 +811,7 @@ "PartialExpr('==>', P)" ] }, - "execution_count": 17, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -530,7 +831,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 30, "metadata": { "collapsed": false }, @@ -541,7 +842,7 @@ "(P ==> ~Q)" ] }, - "execution_count": 18, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -571,7 +872,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 31, "metadata": { "collapsed": false }, @@ -582,7 +883,7 @@ "(~(P & Q) ==> (~P | ~Q))" ] }, - "execution_count": 19, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -600,7 +901,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 32, "metadata": { "collapsed": false }, @@ -611,7 +912,7 @@ "(~(P & Q) ==> (~P | ~Q))" ] }, - "execution_count": 20, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -630,7 +931,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 33, "metadata": { "collapsed": false }, @@ -641,7 +942,7 @@ "(((P & Q) ==> P) | Q)" ] }, - "execution_count": 21, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -659,7 +960,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 34, "metadata": { "collapsed": false }, @@ -670,7 +971,7 @@ "((P & Q) ==> (P | Q))" ] }, - "execution_count": 22, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -701,16 +1002,16 @@ "language_info": { "codemirror_mode": { "name": "ipython", - "version": 3 + "version": 3.0 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.4.3" + "version": "3.5.1" } }, "nbformat": 4, "nbformat_minor": 0 -} +} \ No newline at end of file From d7d97254b08e46780e935c2ca459ffc4b1617e68 Mon Sep 17 00:00:00 2001 From: Angira Sharma Date: Mon, 27 Mar 2017 19:31:51 +0530 Subject: [PATCH 3/6] added explanatory text to planning.ipynb --- planning.ipynb | 79 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 78 insertions(+), 1 deletion(-) diff --git a/planning.ipynb b/planning.ipynb index 091a1c916..8e6768b8f 100644 --- a/planning.ipynb +++ b/planning.ipynb @@ -14,6 +14,13 @@ "This notebook describes the planning.py module, which covers Classical Planning from Chapter 10 & Planning & Acting in Real World Chapter 11." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us first import the requires modules." + ] + }, { "cell_type": "code", "execution_count": 1, @@ -26,6 +33,14 @@ "from utils import expr" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**The Planning Problem** \n", + "> To find an executable sequence of actions that achieves a given goal when performed starting in a given state." + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -93,6 +108,8 @@ "source": [ "# AIR CARGO PROBLEM from Figure 10.1\n", "\n", + "The problem is to transport cargo via plane to & from airports.\n", + "\n", "To define a problem we have to define an initial state (predicates which are true at the beginning of the problem) and a goal state (predicates which are true at the end of the problem). \n", "\n", "\n", @@ -292,7 +309,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "where `expr(\"Load(C1 , P1, SFO)\")` means _load the Cargo C1 in Plane P1 at San Fransico_. In order for this action to take place the preconditions we specified while defining the action `Load` must be met. The effects from this action are then carried forward i.e., they now are an existing state and it should be sought that these effects do **not** clash with preconditions of actions ahead, otherwise the action can't be completed.\n" + "where `expr(\"Load(C1 , P1, SFO)\")` means _load the Cargo C1 in Plane P1 at San Fransico_. In order for this action to take place the preconditions we specified while defining the action `Load` must be met. The effects from this action are then carried forward i.e., they now are an existing state and it should be sought that these effects do **not** clash with preconditions of actions ahead, otherwise the action can't be completed. \n", + "\n", + "Following lines describe the _plan_ of the above solution:\n", + "\n", + "`expr(\"Load(C1 , P1, SFO)\") ` --> _Load Cargo C1 in Plane P1 at San Fransico_\n", + "\n", + "`expr(\"Fly(P1, SFO, JFK)\")` --> _Fly Plane P1 from San Fransisco to JFK_\n", + "\n", + "`expr(\"Unload(C1, P1, JFK)\")` --> _Unload Cargo C1 from Plane P1 at JFK_\n", + "\n", + "`expr(\"Load(C2, P2, JFK)\")` --> _Load Cargo C2 in Plane P2 at JFK_\n", + "\n", + "`expr(\"Fly(P2, JFK, SFO)\")` --> _Fly Plane P2 from JFK to San Fransisco_\n", + "\n", + "`expr(\"Unload (C2, P2, SFO)\")` --> _Unload Cargo C2 from Plane P2 at San Fransisco_\n" ] }, { @@ -361,6 +392,8 @@ "source": [ "# SPARE TIRE PROBLEM from Figure 10.2:\n", "\n", + "The Spare Tire problem is to replace a flat tire on axle with a spare one. \n", + "\n", "The problem follows the same structure of function as before, only the predicates are changed.\n" ] }, @@ -379,6 +412,26 @@ "required = [expr('At(Spare, Axle)'), expr('At(Flat, Ground)')]" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`init ` states the initial state:\n", + "\n", + "`expr('Tire(Flat)')` --> _Flat Tire_\n", + "\n", + "`expr('Tire(Spare)')` --> _Spare Tire_\n", + "\n", + "`expr('At(Flat, Axle)')` --> _Flat Tire on Axle_\n", + "\n", + "`expr('At(Spare, Trunk)')` --> _Spare Tire in Trunk_\n", + "\n", + "\n", + "`required = [expr('At(Spare, Axle)'), expr('At(Flat, Ground)')]` states the goal i.e., _Spare tire must be on Axle, and Flat tire on Ground_\n", + "\n", + "Just a sidenote, the action `At()` means same as _on, in, at_ in the problem reference." + ] + }, { "cell_type": "code", "execution_count": 6, @@ -411,6 +464,17 @@ " [effect_add, effect_rem])" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The problem involves 3 actions:\n", + "\n", + "1. `Remove(obj, loc)` --> Remove object _obj_ from location _loc_.\n", + "2. `PutOn(t, Axle)` --> Put tire_t_ on _Axle_\n", + "3. `Leaveovernight` --> Leave tire overnight _(we assume the neighbourhood is good and we find the tire at the same place the next day)_" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -429,6 +493,19 @@ " expr(\"PutOn(Spare, Axle)\")]" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Following lines describe the _plan_ of the above solution:\n", + "\n", + "`expr(\"Remove(Flat, Axle)\")` --> _Remove Flat tire from Axle_\n", + "\n", + "`expr(\"Remove(Spare, Trunk)\")` --> _Remove Spare tire from Trunk_\n", + "\n", + "`expr(\"PutOn(Spare, Axle)\")` --> _Put Spare tire on Axle_\n" + ] + }, { "cell_type": "markdown", "metadata": {}, From 1bf346fa9499c9a3c1bdf5632195b8a6968a2749 Mon Sep 17 00:00:00 2001 From: Angira Sharma Date: Tue, 28 Mar 2017 23:20:57 +0530 Subject: [PATCH 4/6] Add files via upload --- planning.ipynb | 78 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 64 insertions(+), 14 deletions(-) diff --git a/planning.ipynb b/planning.ipynb index 8e6768b8f..01a75e2b1 100644 --- a/planning.ipynb +++ b/planning.ipynb @@ -38,7 +38,53 @@ "metadata": {}, "source": [ "**The Planning Problem** \n", - "> To find an executable sequence of actions that achieves a given goal when performed starting in a given state." + "> To find an executable sequence of actions that achieves a given goal when performed starting in a given state.\n", + "\n", + "Motivation of the planning process is to reason about possible course of actions that will change the environment in order to reach the goal (task)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# PLANNING v/s SCHEDULING\n", + "\n", + "We need to understand the difference between the terms:\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "**Scheduling** - assigns in time resources to separate processes.\n", + "\n", + "Given: _resources, actions and constraints._\n", + "\n", + " Form an appropriate schedule that meets the constraints\n", + "\n", + " Arrange the actions, assign resources and satisfy the constrains.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Planning** - considers possible interaction among components of plan.\n", + "\n", + "Given: _the initial state, goal state, operators._\n", + "\n", + " Find a sequence of operators that will reach the goal state from the initial state\n", + "\n", + " Select appropriate actions, arrange the actions and consider the causalities" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" ] }, { @@ -46,15 +92,21 @@ "metadata": {}, "source": [ "#PDDL \n", - "The PDDL (Planning Domain Definition Language) allows us to express all actions with one action schema,\n", + "The PDDL (Planning Domain Definition Language) allows us to express all actions with one action schema.\n", "\n", - "The `PDDL class` include:" + "It can be used to define a problem:\n", + "1. initial state\n", + "2. Actions that are available in a state\n", + "3. Result of applying an action\n", + "4. The goal test" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "The `PDDL class` includes:\n", + "\n", "1. **`init(self, initial_state, actions, goal_test)`**: the constructor creates a knowledge base with initial state, initialises actions and `goal_test_func` function with `goal_test`.\n", "2. **`goal_test(self)`**: initialises `goal_test` with `kb`.\n", "3. **`act(self, action)`**: performs the action given as argument, along with checks preformed on pre-conditions." @@ -79,8 +131,8 @@ "metadata": {}, "source": [ "#ACTIONS\n", - "Actions are described by a set of action schemas that implicitly define the class Actions:\n", - "Actions consists of a precondition(positive and negative) and effect(positive and negative). It consists of following " + "Actions are described by a set of action schemas that implicitly define the `class Actions`.\n", + "The schema consists of a action name, a list of variables used in the schema, a precondition (positive and negative) and effect (positive and negative). " ] }, { @@ -95,6 +147,13 @@ " " ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We say that action `a` is **applicable** in state s if the preconditions are satisfied by s." + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -567,15 +626,6 @@ "\n", "![pL plot](images/blocks_world.png)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "" - ] } ], "metadata": { From 1cee5258a3d9e7c511175356299822e9f2c07ef8 Mon Sep 17 00:00:00 2001 From: Angira Sharma Date: Wed, 29 Mar 2017 15:51:57 +0530 Subject: [PATCH 5/6] Update planning.ipynb added factored state representation, assumptions, dock worker robot domain. --- images/blocks_world.png | Bin 0 -> 22704 bytes images/dwr_state_transition.png | Bin 0 -> 25380 bytes images/factored_state_representation.png | Bin 0 -> 40015 bytes planning.ipynb | 195 ++++++++++++++--------- 4 files changed, 124 insertions(+), 71 deletions(-) create mode 100644 images/blocks_world.png create mode 100644 images/dwr_state_transition.png create mode 100644 images/factored_state_representation.png diff --git a/images/blocks_world.png b/images/blocks_world.png new file mode 100644 index 0000000000000000000000000000000000000000..26f3e29774c2c517303be4e9e194ec6b5ab4f754 GIT binary patch literal 22704 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

?JrqgITUU6#me5C-b){Y)nkEjbb2Y|M4;AnV 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 literal 0 HcmV?d00001 diff --git a/images/dwr_state_transition.png b/images/dwr_state_transition.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc8ec004da73873c1d6cf9d969089345dba8802 GIT binary patch literal 25380 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 U_veuT2oa(vr}na3#ysTz0PL|KX8-^I literal 0 HcmV?d00001 diff --git a/images/factored_state_representation.png b/images/factored_state_representation.png new file mode 100644 index 0000000000000000000000000000000000000000..33312ec40c3b58f4a22cb05de05e6f4f7d06d5e8 GIT binary patch literal 40015 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%0DMn&=fcKb)o-BS?yYyuIuO5glF#nNFl;m9%~ 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 ThdaZ9be%%*_HyrYg3kXR@hX;d literal 0 HcmV?d00001 diff --git a/planning.ipynb b/planning.ipynb index 01a75e2b1..402cd610e 100644 --- a/planning.ipynb +++ b/planning.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## PLANNING" + "# PLANNING" ] }, { @@ -37,7 +37,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**The Planning Problem** \n", + "## **The Planning Problem** \n", "> To find an executable sequence of actions that achieves a given goal when performed starting in a given state.\n", "\n", "Motivation of the planning process is to reason about possible course of actions that will change the environment in order to reach the goal (task)." @@ -47,7 +47,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# PLANNING v/s SCHEDULING\n", + "## Planning v/s Scheduling\n", "\n", "We need to understand the difference between the terms:\n" ] @@ -91,39 +91,70 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#PDDL \n", - "The PDDL (Planning Domain Definition Language) allows us to express all actions with one action schema.\n", + "## Assumptions in Classical Planning\n", "\n", - "It can be used to define a problem:\n", - "1. initial state\n", - "2. Actions that are available in a state\n", - "3. Result of applying an action\n", - "4. The goal test" + "Classical planners make at least the following assumptions:\n", + "\n", + "- the agent's actions are deterministic; that is, the agent can predict the consequences of its actions.\n", + "- there are no external events beyond the control of the agent that change the state of the world.\n", + "- the world is fully observable; thus, the agent can observe the current state of the world.\n", + "- time progresses discretely from one state to the next.\n", + "- goals are predicates of states that must be achieved or maintained.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The `PDDL class` includes:\n", - "\n", - "1. **`init(self, initial_state, actions, goal_test)`**: the constructor creates a knowledge base with initial state, initialises actions and `goal_test_func` function with `goal_test`.\n", - "2. **`goal_test(self)`**: initialises `goal_test` with `kb`.\n", - "3. **`act(self, action)`**: performs the action given as argument, along with checks preformed on pre-conditions." + "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "PDDL is a domain definition language. It is used to define the properties of a domain, the predicates which are used and the action definition. A predicate defines the property of an object which can be true or false, e.g. yellow t-shirt. Yellow is the property and t-shirt is the object. " + "## Representations For Planning:\n", + "\n", + "1. **STRIPS** \n", + "The simplest language used for formalizing actions is the STRIPS language. In STRIPS, the state variables have the domain {0,1} (equivalently {FALSE, TRUE}), and an action consists of three sets of state variables, the PRECONDITION, the ADD={a1,a2,...,an} list, and the DELETE={d1,d2,...,dm} list (it is assumed that ADD and DELETE don't intersect.) \n", + "\n", + "2. **ADL**\n", + "Action description language (ADL) is an automated planning and scheduling system in particular for robots. It is considered an advancement of STRIPS. We won't go ino its details here.\n", + "\n", + "3. **PDDL**\n", + "(\"Planning Domain Definition Language\") is a recent atempt to standardize planning domain and problem description languages. It was developed mainly to make the 1998/2000 International Planning Competitions possible. \n", + "\n", + "The differences of PDDL in comparison to STRIPS are:\n", + "\n", + " - The PRECONDITION may be an arbitrary Boolean combination of atomic facts about the state variables. Atomic facts say something about one state variable, for example a=0 or b=1. A precondition could for example be (a=1)∨¬(b=1∧c=0).\n", + " - Instead of the unconditional assignments represented by ADD and DELETE, the effects may be conditional. This means that the effects are of the form, IF condition THEN a := v where the condition is a Boolean combination of facts. STRIPS corresponds to PDDL with trivial conditions that are always true (the condition is the constant TRUE).\n", + " - Goals may be Boolean combinations of atomic facts (formulas). \n", + "\n", + "We will be using **PDDL** consistent with the book." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "" + "#PDDL \n", + "The PDDL (Planning Domain Definition Language) allows us to express all actions with one action schema.\n", + "\n", + "It can be used to define a problem:\n", + "1. initial state\n", + "2. Actions that are available in a state\n", + "3. Result of applying an action\n", + "4. The goal test\n", + "\n", + "\n", + "The `PDDL class` includes:\n", + "\n", + "1. **`init(self, initial_state, actions, goal_test)`**: the constructor creates a knowledge base with initial state, initialises actions and `goal_test_func` function with `goal_test`.\n", + "2. **`goal_test(self)`**: initialises `goal_test` with `kb`.\n", + "3. **`act(self, action)`**: performs the action given as argument, along with checks preformed on pre-conditions.\n", + "\n", + "\n", + "PDDL is a domain definition language. It is used to define the properties of a domain, the predicates which are used and the action definition. A predicate defines the property of an object which can be true or false, e.g. yellow t-shirt. Yellow is the property and t-shirt is the object. " ] }, { @@ -132,47 +163,66 @@ "source": [ "#ACTIONS\n", "Actions are described by a set of action schemas that implicitly define the `class Actions`.\n", - "The schema consists of a action name, a list of variables used in the schema, a precondition (positive and negative) and effect (positive and negative). " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "The schema consists of a action name, a list of variables used in the schema, a precondition (positive and negative) and effect (positive and negative). \n", + "\n", + "The **precondition** of an action specifies when the action can be carried out. The precondition of an action is a proposition that must be true before the action can be carried out. In terms of constraints, the robot is constrained to only be able to choose an action for which the precondition is true. \n", + "For example, in the block problem move(x,y) has preconditions clear(x) and clear(y). The action move(x,table) is always possible.\n", + "\n", + "The **effect** of an action specifies the resulting state.\n", "Each problem described in chapter 10 has:\n", "- an initial state\n", "- a goal\n", "- actions with preconditions and effects (these action are split into _pos (positive conditions) and _neg (negative conditions))\n", "Each problem thus requires a solution which is satisfied by some initial conditions and solved using actions which meet the preconditions and effects.\n", - " " + " \n", + "We say that action `a` is **applicable** in state s if the preconditions are satisfied by s.\n", + "\n", + "Now that we have a sense of the representations let's go through some examples." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We say that action `a` is **applicable** in state s if the preconditions are satisfied by s." + "## Factored Representation:\n", + "\n", + "In contrast to atomic representation where state is a single indivisible entity (figure on the left), in factored representation state is a collection of variables (figure on the right below).\n", + "\n", + " The problems we see ahead are in factored state representation.","\n","Now that we have a sense of the representations let's see some examples." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "" + "# AIR CARGO PROBLEM\n", + "\n", + "The problem is to transport cargo via plane to & from airports.\n", + "\n", + "###Real Life Cargo Transportaion by Planes instance:\n", + "- 10 airports\n", + "- 50 aircrafts\n", + "- 200 pieces of cargo\n", + "- no. of states 1050 x (50 + 10)200 $\\approx$ 10405\n", + "- minimum number of actions 50 x 9 =450 (all cargo located on airport with no planes)\n", + "- maximum number of actions 50200 x 9 $\\approx$ 10340 (all cargo and aircrafts in one airport)\n", + "\n", + "Practically: The number of particles in the universe is about **_1087_**.\n", + "\n", + "That is where automated planning research comes in to solve such problems using classical planning (or other algorithms)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# AIR CARGO PROBLEM from Figure 10.1\n", + "#####For now we will stick to the example from the book from Fig. 10.1:\n", "\n", - "The problem is to transport cargo via plane to & from airports.\n", "\n", "To define a problem we have to define an initial state (predicates which are true at the beginning of the problem) and a goal state (predicates which are true at the end of the problem). \n", "\n", "\n", - "The following code defines the initial state for the problem" + "The following code defines the initial state for the problem\n" ] }, { @@ -204,13 +254,8 @@ "\n", "**`expr('At(P1, SF0)')`** represents the predicate **Plane 1 at San Fransisco** ... and so on.\n", "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "\n", + "\n", "The following code defines the goal_test() function which tests if the solution achieves goal or not. 'required' states the goal:" ] }, @@ -236,13 +281,9 @@ "\n", "`required = [expr('At(C1 , JFK)'), expr('At(C2 ,SFO)')]`\n", "\n", - "The function `goal_test(kb)` takes a knowledge base as argument, and for every predicate in `required` (goal), it checks the `ask` function from `KB class`. The `ask` function returns value `True` or `False` accordingly if predicate in `required` meets preconditions or not (defined ahead)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "The function `goal_test(kb)` takes a knowledge base as argument, and for every predicate in `required` (goal), it checks the `ask` function from `KB class`. The `ask` function returns value `True` or `False` accordingly if predicate in `required` meets preconditions or not (defined ahead).\n", + "\n", + "\n", "Actions such as 'load', 'unload' and fly are defined with preconditions and effects accompanying them." ] }, @@ -280,7 +321,6 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n", "`precond_` is used to denote predicates which must be True **before** the action.\n", "eg: \n", "\n", @@ -288,13 +328,9 @@ "\n", "`precon_pos` & `effect_add` are used to denote predicates which must be **True**.\n", "\n", - "`precon_neg` & `effect_rem` are used to denote predicates which must be **False**.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "`precon_neg` & `effect_rem` are used to denote predicates which must be **False**.\n", + "\n", + "\n", "Eg: in Action `load`\n", "\n", "`precond_pos = [expr(\"At(c, a)\"), expr(\"At(p, a)\"), expr(\"Cargo(c)\"), expr(\"Plane(p)\"), expr(\"Airport(a)\")]` is a precondition which must be **True** denoting predicate _Cargo c at Airport a & Plane p at Airport a_.\n", @@ -303,27 +339,18 @@ "\n", "`effect_add = [expr(\"In(c, p)\")]` is an effect which must be **True** denoting the predicate _Cargo c in Plane p_.\n", "\n", - "`effect_rem = [expr(\"At(c, a)\")]`is an effect which must be **False** denoting the predicate _Cargo c at Airport a_." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`load = Action(expr(\"Load(c, p, a)\"), [precond_pos, precond_neg], [effect_add, effect_rem])` thus define the action **`Load(c, p, a)** with the preconditions it must follow and the effects it leads to." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, the function returns the defined problem using PDLL." + "`effect_rem = [expr(\"At(c, a)\")]`is an effect which must be **False** denoting the predicate _Cargo c at Airport a_.\n", + "\n", + "`load = Action(expr(\"Load(c, p, a)\"), [precond_pos, precond_neg], [effect_add, effect_rem])` thus define the action **`Load(c, p, a)** with the preconditions it must follow and the effects it leads to.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "\n", + "Finally, the function returns the defined problem using PDLL.\n", + "\n", "`return(PDLL(init, [load, unload, fly], goal_test)`\n", "\n", " which defines the problem as a whole with its initial state (`init`), the actions possible(` [load, unload, fly]`) and the goal(`goal_test`)." @@ -438,6 +465,34 @@ "Yes, the solution is correct. You may try any other solution to check if it achieves the goal or not." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Another related example - The Dock-Worker Robots (DWR) Domain\n", + "\n", + "It is specifically an example of automated planning, with the following scenario:\n", + "- harbour with several locations (docs)\n", + "- docked ships\n", + "- storage area for containers\n", + "- parking area for trains, trucks\n", + "\n", + "- Goal: \n", + " \t1. cranes to load and unload ships\n", + " \t2. robot carts to move around containers\n", + "\n", + "Like the air cargo transport problem, the actions can be sought to be **put, take, load, unload, move**.\n", + "\n", + "The following figure depicts a simple instance of the problem where the initial state is S0 (robot at location 2 and container on pallet in location 1) and the goal state is S5 (container on robot at location 2). The state transitions are accompanied by the following actions:\n", + "\n", + "- S0 (robot at location 2 and container on pallet in location 1) -- **initial state**; `At(robot, location2), At(container, location1), At(container, pallet)`\n", + "- S1 (robot at location 2 and container on crane in location 1) -- action `take(crane, container)` \n", + "- S2 (robot at location 1 and container on pallet in location 1) -- action `move(location2, location1), put(container, pallet)`\n", + "- S3 (robot at location 1 and container on crane in location 1) -- action `take(crane, container)`\n", + "- S4 (robot at location 1 and container on robot in location 1) -- action `load(robot, container)`\n", + "- S5 (robot at location 2 and container on robot in location 2) -- action `move(location1, location2)` ; **goal state**\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -622,9 +677,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - " The above image below shows the transitions between different states which are possible for 3 blocks. Watch how the rightmost transition is what we follow in the book.\n", - "\n", - "![pL plot](images/blocks_world.png)" + " The above image below shows the transitions between different states which are possible for 3 blocks. Watch how the rightmost transition is what we follow in the book. " ] } ], @@ -649,4 +702,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} \ No newline at end of file +} From e560e9e62aac68d34b5bf4f9be46727ef2b87c8d Mon Sep 17 00:00:00 2001 From: Angira Sharma Date: Thu, 30 Mar 2017 18:18:21 +0530 Subject: [PATCH 6/6] added created image --- images/factored_state_representation.png | Bin 40015 -> 57275 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/factored_state_representation.png b/images/factored_state_representation.png index 33312ec40c3b58f4a22cb05de05e6f4f7d06d5e8..d128f5f05e78674bb7d05045ac3cd4b046c40cf6 100644 GIT binary patch literal 57275 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 literal 40015 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%0DMn&=fcKb)o-BS?yYyuIuO5glF#nNFl;m9%~ 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 ThdaZ9be%%*_HyrYg3kXR@hX;d