Skip to main content

Featured post

A* ALGORITHM BASICS FOR PATH FINDING & HEURISTICS METHODS : ARTIFICIAL INTELLIGENCE

 A* ALGORITHM BASICS FOR PATH FINDING A* , widely used  known form of best-first search & path planning algorithm nowadays in mobile robots,games. this is the function for A*,                                     f(n) = g(n) + h(n) g ( n ) is the cost of the path from the start node to n , and h ( n ) is a heuristic function that estimates the cost of the cheapest path from n to the goal This will find cheapest f(n) value in neighbor nodes to archive goal node. check below image  A to B path finding with g(n),h(n),f(n) value In the final level check below image Now we will check the Algorithm // A* Search Algorithm 1. Initialize the open list 2. Initialize the closed list put the starting node on the open list (you can leave its f at zero) 3. ...

A* ALGORITHM BASICS FOR PATH FINDING & HEURISTICS METHODS : ARTIFICIAL INTELLIGENCE

 A* ALGORITHM BASICS FOR PATH FINDING
A*, widely used  known form of best-first search & path planning algorithm nowadays in mobile robots,games.
this is the function for A*,
                                    f(n) = g(n) + h(n)
g(n) is the cost of the path from the start node to n, and h(n) is a heuristic function that estimates the cost of the cheapest path from n to the goal
This will find cheapest f(n) value in neighbor nodes to archive goal node.
check below image  A to B path finding with g(n),h(n),f(n) value


In the final level check below image

Now we will check the Algorithm
// A* Search Algorithm
1.  Initialize the open list
2.  Initialize the closed list
    put the starting node on the open 
    list (you can leave its f at zero)
3.  while the open list is not empty
    a) find the node with the least f on 
       the open list, call it "q"
    b) pop q off the open list
    c) generate q's 8 successors and set their 
       parents to q
    d) for each successor
        i) if successor is the goal, stop search
          successor.g = q.g + distance between 
                              successor and q
          successor.h = distance from goal to 
          successor (This can be done using many 
          ways, we will discuss three heuristics- 
          Manhattan, Diagonal and Euclidean 
          Heuristics)
          successor.f = successor.g + successor.h
        ii) if a node with the same position as 
            successor is in the OPEN list which has a 
           lower f than successor, skip this successor
        iii) if a node with the same position as 
            successor  is in the CLOSED list which has
            a lower f than successor, skip this successor
            otherwise, add  the node to the open list
     end (for loop)
    e) push q on the closed list
    end (while loop)  

Properties of A*

On finite graphs with non-negative edge weights A* is guaranteed to terminate and is complete.
A search algorithm is said to be admissible if it is guaranteed to return an optimal solution .
Algorithm A is optimally efficient with respect to a set of alternative algorithms .
 
check below for the easy understanding of A*

 

HEURISTICS METHODS 

1) Manhattan Distance –
It is nothing but the sum of absolute values of differences in the goal’s x and y coordinates and the current cell’s x and y coordinates respectively, 
i.e., h = abs (current_cell.x – goal.x) + abs (current_cell.y – goal.y)

When to use this heuristic? – When we are allowed to move only in four directions only (right, left, top, bottom)
 
2) Diagonal Distance-
It is nothing but the maximum of absolute values of differences in the goal’s x and y coordinates and the current cell’s x and y coordinates respectively, 
i.e., h = max { abs(current_cell.x – goal.x), abs(current_cell.y – goal.y) }

When to use this heuristic? – When we are allowed to move in eight directions only (similar to a move of a King in Chess)
 
3) Euclidean Distance-
As it is clear from its name, it is nothing but the distance between the current cell and the goal cell using the distance formula 
h = sqrt ( (current_cell.x – goal.x)2 + (current_cell.y – goal.y)2 )

When to use this heuristic? – When we are allowed to move in any directions.  

Comments

  1. A* is to slow for larger maps. In the plain version no one is using the algorithm for computer games. What is used in reality is a combination of A* with heuristics, for example by dividing the map into smaller sections and plan each section by it's own.

    ReplyDelete
  2. AI Patasala is a pioneering platform for Artificial Intelligence Training in Hyderabad. Join now to avail the advantages that come with Artificial Intelligence Training in Hyderabad and begin your exciting career in this field by becoming a part of AI Patasala.
    AI Training in Hyderabad

    ReplyDelete
  3. Really an awesome blog, informative and knowledgeable content. Keep sharing more stuff like this. Thank you.
    AI Patasala Data Science Course in Hyderabad

    ReplyDelete

Post a Comment

Popular posts from this blog

Getting Started with ARGoS Large-Scale Swarm Robot Simulator in Ubuntu

ARGoS (Autonomous Robots Go Swarming) is a multi-robot simulator designed to support large teams of robots. Its design is pretty different from the design of other simulators. Its most distinctive feature is that the 3D simulated world can be divided in regions, and each region can be assigned to a different physics engine. Furthermore, ARGoS' design revolves around the concept of tunable accuracy. In other words, in ARGoS, everything is a plug-in (robot models, sensors, actuators, physics engines, visualisations, etc) and the user can select which plug-ins to use for an experiment.  Since different plug-ins have different accuracy and computational costs, users can choose which plug-ins to use for each aspect of the simulation and assign resources only where it matters. This makes the simulation as fast as possible. At the time of writing, ARGoS supports the Swarmanoid robots (foot-bot and eye-bot) and the e-puck. ARGoS supports Linux and Mac OSX. Binary packages are availa...

ROS Terminology

This section explains the most frequently used ROS terms. Use this section as a ROS glossary. Many terms may be new to the reader and even if there are unfamiliar terms, look over the definition and move on. You will become more familiar with the concepts as you engage with examples and exercises in each of the following chapters. ROS ROS provides standard operating system services such as hardware abstraction, device drivers,implementation of commonly used features including sensing, recognizing, mapping, motion planning, message passing between processes, package management, visualizers and libraries for development as well as debugging tools. Master  The master 2 acts as a name server for node-to-node connections and message communication. The command roscore is used to run the master, and if you run the master, you can register the name of each node and get information when needed. The connection between nodes and message communication such as topics and servic...

Translate