|
23 | 23 | {
|
24 | 24 | "cell_type": "code",
|
25 | 25 | "execution_count": 1,
|
26 |
| - "metadata": { |
27 |
| - "collapsed": false |
28 |
| - }, |
| 26 | + "metadata": {}, |
29 | 27 | "outputs": [],
|
30 | 28 | "source": [
|
31 | 29 | "from planning import *"
|
|
51 | 49 | {
|
52 | 50 | "cell_type": "code",
|
53 | 51 | "execution_count": 2,
|
54 |
| - "metadata": { |
55 |
| - "collapsed": false |
56 |
| - }, |
| 52 | + "metadata": {}, |
57 | 53 | "outputs": [],
|
58 | 54 | "source": [
|
59 | 55 | "%psource Action"
|
|
83 | 79 | {
|
84 | 80 | "cell_type": "code",
|
85 | 81 | "execution_count": 3,
|
86 |
| - "metadata": { |
87 |
| - "collapsed": false |
88 |
| - }, |
| 82 | + "metadata": {}, |
89 | 83 | "outputs": [],
|
90 | 84 | "source": [
|
91 | 85 | "%psource PDDL"
|
|
110 | 104 | {
|
111 | 105 | "cell_type": "code",
|
112 | 106 | "execution_count": 4,
|
113 |
| - "metadata": { |
114 |
| - "collapsed": false |
115 |
| - }, |
| 107 | + "metadata": {}, |
116 | 108 | "outputs": [],
|
117 | 109 | "source": [
|
118 | 110 | "from utils import *\n",
|
|
141 | 133 | {
|
142 | 134 | "cell_type": "code",
|
143 | 135 | "execution_count": 5,
|
144 |
| - "metadata": { |
145 |
| - "collapsed": true |
146 |
| - }, |
| 136 | + "metadata": {}, |
147 | 137 | "outputs": [],
|
148 | 138 | "source": [
|
149 | 139 | "knowledge_base.extend([\n",
|
|
163 | 153 | {
|
164 | 154 | "cell_type": "code",
|
165 | 155 | "execution_count": 6,
|
166 |
| - "metadata": { |
167 |
| - "collapsed": false |
168 |
| - }, |
| 156 | + "metadata": {}, |
169 | 157 | "outputs": [
|
170 | 158 | {
|
171 | 159 | "data": {
|
|
203 | 191 | {
|
204 | 192 | "cell_type": "code",
|
205 | 193 | "execution_count": 7,
|
206 |
| - "metadata": { |
207 |
| - "collapsed": false |
208 |
| - }, |
| 194 | + "metadata": {}, |
209 | 195 | "outputs": [],
|
210 | 196 | "source": [
|
211 | 197 | "#Sibiu to Bucharest\n",
|
|
261 | 247 | {
|
262 | 248 | "cell_type": "code",
|
263 | 249 | "execution_count": 8,
|
264 |
| - "metadata": { |
265 |
| - "collapsed": true |
266 |
| - }, |
| 250 | + "metadata": {}, |
267 | 251 | "outputs": [],
|
268 | 252 | "source": [
|
269 | 253 | "#Drive\n",
|
|
284 | 268 | {
|
285 | 269 | "cell_type": "code",
|
286 | 270 | "execution_count": 9,
|
287 |
| - "metadata": { |
288 |
| - "collapsed": true |
289 |
| - }, |
| 271 | + "metadata": {}, |
290 | 272 | "outputs": [],
|
291 | 273 | "source": [
|
292 | 274 | "def goal_test(kb):\n",
|
|
303 | 285 | {
|
304 | 286 | "cell_type": "code",
|
305 | 287 | "execution_count": 10,
|
306 |
| - "metadata": { |
307 |
| - "collapsed": false |
308 |
| - }, |
| 288 | + "metadata": {}, |
309 | 289 | "outputs": [],
|
310 | 290 | "source": [
|
311 | 291 | "prob = PDDL(knowledge_base, [fly_s_b, fly_b_s, fly_s_c, fly_c_s, fly_b_c, fly_c_b, drive], goal_test)"
|
312 | 292 | ]
|
313 | 293 | },
|
| 294 | + { |
| 295 | + "cell_type": "markdown", |
| 296 | + "metadata": {}, |
| 297 | + "source": [ |
| 298 | + "# Air Cargo Problem:" |
| 299 | + ] |
| 300 | + }, |
| 301 | + { |
| 302 | + "cell_type": "markdown", |
| 303 | + "metadata": {}, |
| 304 | + "source": [ |
| 305 | + "Air Cargo problem involves loading and unloading of cargo and flying it from place to place. The problem can be with defined with three actions: Load, Unload and Fly. Let us now define an object of `air_cargo` problem:" |
| 306 | + ] |
| 307 | + }, |
314 | 308 | {
|
315 | 309 | "cell_type": "code",
|
316 |
| - "execution_count": null, |
317 |
| - "metadata": { |
318 |
| - "collapsed": false |
319 |
| - }, |
| 310 | + "execution_count": 15, |
| 311 | + "metadata": {}, |
320 | 312 | "outputs": [],
|
321 |
| - "source": [] |
| 313 | + "source": [ |
| 314 | + "airCargo = air_cargo()" |
| 315 | + ] |
| 316 | + }, |
| 317 | + { |
| 318 | + "cell_type": "markdown", |
| 319 | + "metadata": {}, |
| 320 | + "source": [ |
| 321 | + "Now, before taking any actions, we will check the `airCargo` if it has completed the goal it is required to do:" |
| 322 | + ] |
| 323 | + }, |
| 324 | + { |
| 325 | + "cell_type": "code", |
| 326 | + "execution_count": 16, |
| 327 | + "metadata": {}, |
| 328 | + "outputs": [ |
| 329 | + { |
| 330 | + "name": "stdout", |
| 331 | + "output_type": "stream", |
| 332 | + "text": [ |
| 333 | + "False\n" |
| 334 | + ] |
| 335 | + } |
| 336 | + ], |
| 337 | + "source": [ |
| 338 | + "print(airCargo.goal_test())" |
| 339 | + ] |
| 340 | + }, |
| 341 | + { |
| 342 | + "cell_type": "markdown", |
| 343 | + "metadata": {}, |
| 344 | + "source": [ |
| 345 | + "As we can see, it hasn't completed the goal. Now, we define the sequence of actions that it should take in order to achieve\n", |
| 346 | + "the goal. Then the `airCargo` acts on each of them." |
| 347 | + ] |
| 348 | + }, |
| 349 | + { |
| 350 | + "cell_type": "code", |
| 351 | + "execution_count": 17, |
| 352 | + "metadata": {}, |
| 353 | + "outputs": [], |
| 354 | + "source": [ |
| 355 | + "solution = [expr(\"Load(C1 , P1, SFO)\"),\n", |
| 356 | + " expr(\"Fly(P1, SFO, JFK)\"),\n", |
| 357 | + " expr(\"Unload(C1, P1, JFK)\"),\n", |
| 358 | + " expr(\"Load(C2, P2, JFK)\"),\n", |
| 359 | + " expr(\"Fly(P2, JFK, SFO)\"),\n", |
| 360 | + " expr(\"Unload (C2, P2, SFO)\")] \n", |
| 361 | + "\n", |
| 362 | + "for action in solution:\n", |
| 363 | + " airCargo.act(action)" |
| 364 | + ] |
| 365 | + }, |
| 366 | + { |
| 367 | + "cell_type": "markdown", |
| 368 | + "metadata": {}, |
| 369 | + "source": [ |
| 370 | + "As the `airCargo` has taken all the steps it needed in order to achieve the goal, we can now check if it has acheived its goal:" |
| 371 | + ] |
| 372 | + }, |
| 373 | + { |
| 374 | + "cell_type": "code", |
| 375 | + "execution_count": 18, |
| 376 | + "metadata": {}, |
| 377 | + "outputs": [ |
| 378 | + { |
| 379 | + "data": { |
| 380 | + "text/plain": [ |
| 381 | + "True" |
| 382 | + ] |
| 383 | + }, |
| 384 | + "execution_count": 18, |
| 385 | + "metadata": {}, |
| 386 | + "output_type": "execute_result" |
| 387 | + } |
| 388 | + ], |
| 389 | + "source": [ |
| 390 | + "airCargo.goal_test()" |
| 391 | + ] |
322 | 392 | },
|
323 | 393 | {
|
324 | 394 | "cell_type": "code",
|
325 | 395 | "execution_count": null,
|
326 |
| - "metadata": { |
327 |
| - "collapsed": true |
328 |
| - }, |
| 396 | + "metadata": {}, |
329 | 397 | "outputs": [],
|
330 |
| - "source": [] |
| 398 | + "source": [ |
| 399 | + "It has now achieved its goal." |
| 400 | + ] |
331 | 401 | }
|
332 | 402 | ],
|
333 | 403 | "metadata": {
|
|
346 | 416 | "name": "python",
|
347 | 417 | "nbconvert_exporter": "python",
|
348 | 418 | "pygments_lexer": "ipython3",
|
349 |
| - "version": "3.4.3" |
| 419 | + "version": "3.6.4" |
350 | 420 | }
|
351 | 421 | },
|
352 | 422 | "nbformat": 4,
|
353 |
| - "nbformat_minor": 0 |
| 423 | + "nbformat_minor": 1 |
354 | 424 | }
|
0 commit comments