cseHdz / Forward-Planning-Agent

This repository contains a Forward Planning Agent & multiple algorithms in Python.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Project Overview

This project contains the solution for Udacity's Forward Planning Agent Exercise under the Artificial Intelligence Nanodegree. The detailed instructions from the Assignment are below.


Introduction

Planning is an important topic in AI because intelligent agents are expected to automatically plan their own actions in uncertain domains. Planning and scheduling systems are commonly used in automation and logistics operations, robotics and self-driving cars, and for aerospace applications like the Hubble telescope and NASA Mars rovers.

This project is split between implementation and analysis. First you will combine symbolic logic and classical search to implement an agent that performs progression search to solve planning problems. Then you will experiment with different search algorithms and heuristics, and use the results to answer questions about designing planning systems.

Read all of the instructions below and the project rubric here carefully before starting the project so that you understand the requirements for successfully completing the project. Understanding the project requirements will help you avoid repeating parts of the experiment, some of which can have long runtimes.

NOTE: You should read "Artificial Intelligence: A Modern Approach" 3rd edition chapter 10 or 2nd edition Chapter 11 on Planning, available on the AIMA book site before starting this project.

See the Project Enhancements section at the end for additional notes about limitations of the code in this exercise.

Progression air cargo search

Completing the Project

  1. Make sure that everything is working by running the example problem (based on the cake problem from Fig 10.7 in Chapter 10.3 of AIMA ed3). The script will print information about the problem domain and solve it with several different search algorithms.
$ python example_have_cake.py
  1. Complete all TODO sections in my_planning_graph.py. You should refer to the heuristics pseudocode, chapter 10 of AIMA 3rd edition or chapter 11 of AIMA 2nd edition (available on the AIMA book site) and the detailed instructions inline with each TODO statement. Test your code for this module by running:
$ python -m unittest -v
  1. Experiment with different search algorithms using the run_search.py script. (See example usage below.) The goal of your experiment is to understand the tradeoffs in speed, optimality, and complexity of progression search as problem size increases. You will record your results in a report (described below in Report Requirements).
  • Run the search experiment manually (you will be prompted to select problems & search algorithms)
$ python run_search.py -m
  • You can also run specific problems & search algorithms - e.g., to run breadth first search and UCS on problems 1 and 2:
$ python run_search.py -p 1 2 -s 1 2

Experiment Details

The run_search.py script allows you to choose any combination of eleven search algorithms (three uninformed and eight with heuristics) on four air cargo problems. The cargo problem instances have different numbers of airplanes, cargo items, and airports that increase the complexity of the domains.

  • You should run all of the search algorithms on the first two problems and record the following information for each combination:

    • number of actions in the domain
    • number of new node expansions
    • time to complete the plan search
  • Use the results from the first two problems to determine whether any of the uninformed search algorithms should be excluded for problems 3 and 4. You must run at least one uninformed search, two heuristics with greedy best first search, and two heuristics with A* on problems 3 and 4.

Report Requirements

Your submission for review must include a report named "report.pdf" that includes all of the figures (charts or tables) and written responses to the questions below. You may plot multiple results for the same topic on the same chart or use multiple charts. (Hint: you may see more detail by using log space for one or more dimensions of these charts.)

  • Use a table or chart to analyze the number of nodes expanded against number of actions in the domain
  • Use a table or chart to analyze the search time against the number of actions in the domain
  • Use a table or chart to analyze the length of the plans returned by each algorithm on all search problems

Use your results to answer the following questions:

  • Which algorithm or algorithms would be most appropriate for planning in a very restricted domain (i.e., one that has only a few actions) and needs to operate in real time?

  • Which algorithm or algorithms would be most appropriate for planning in very large domains (e.g., planning delivery routes for all UPS drivers in the U.S. on a given day)

  • Which algorithm or algorithms would be most appropriate for planning problems where it is important to find only optimal plans?

Evaluation

The project rubric can be found here.

About

This repository contains a Forward Planning Agent & multiple algorithms in Python.

License:MIT License


Languages

Language:Python 99.7%Language:Shell 0.3%