Giter VIP home page Giter VIP logo

19ai405expno10's Introduction

EX-10 Implementation of Classical Planning Algorithm.

Aim:

To implement the Classical Planning Algorithm.               DATE: 17.04.2024

Algorithm:

  • Define the initial state
  • Define the goal state
  • Define the actions
  • Find a plan to reach the goal state
  • Print the plan

Program:

def is_goal_state(current_state, goal_state):
    return current_state == goal_state
def apply_action(current_state, action_effect):
    new_state = current_state.copy()
    new_state.update(action_effect)
    return new_state
def find_plan(initial_state, goal_state, actions):
    queue = [(initial_state, [])]
    visited_states = set()
    while queue:
        current_state, partial_plan = queue.pop(0)
        if is_goal_state(current_state, goal_state):
            return partial_plan
        if tuple(current_state.items()) in visited_states:
            continue
        visited_states.add(tuple(current_state.items()))
        for action in actions:
            if is_applicable(current_state, actions[action]['precondition']):
                next_state = apply_action(current_state, actions[action]['effect'])
                queue.append((next_state, partial_plan + [action]))
    print("No plan exists.")
    return None
def is_applicable(current_state, precondition):
    return all(current_state.get(key) == value for key, value in precondition.items())
Developed By: Thiyagarajan A 
Register No : 212222240110

Example - 1

initial_state = {'A': 'Table', 'B': 'Table'}
goal_state = {'A': 'B', 'B': 'Table'}
actions={'move_A_to_B':{'precondition':{'A':'Table','B':'Table'},'effect':{'A':'B'}},
    'move_B_to_Table':{'precondition':{'A':'Table','B':'B'},'effect':{'B':'Table'}}}
plan = find_plan(initial_state, goal_state, actions)
print(plan)

Output:

['move_A_to_B']

Example - 2

initial_state = {'A': 'Table', 'B': 'Table', 'C': 'Table'}
goal_state = {'A': 'B', 'B': 'C', 'C': 'Table'}
actions={'move_A_to_B':{'precondition':{'A':'Table','B':'Table'},'effect':{'A': 'B'}},
    'move_B_to_C':{'precondition':{'A':'B','B':'Table','C':'Table'},'effect':{'B':'C'}},
    'move_C_to_Table':{'precondition':{'A':'B','B':'C','C':'C'},'effect':{'C':'Table'}}}
plan = find_plan(initial_state, goal_state, actions)
print(plan)

Output:

['move_A_to_B', 'move_B_to_C']

Result:

Therefore,Implementation of Classical Planning Algorithm is implemetated successfully.

19ai405expno10's People

Contributors

natsaravanan avatar a-thiyagarajan avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.