Professional Documents
Culture Documents
Lab 3
Registration 191034
Number
Lab Task 2:
What is Heuristic Search?
Task 2 Solution:
Heuristic Search is defined as a procedure of searching process to search a solution space for an
optimal solution for a problem. It uses some method to search a solution while assessing where
in space the; solution is most likely to be and focus on that area to search only. A heuristic search
evaluates the available information and makes a decision on which branch to follow at each step.
It does this by ranking and following best path to search. Most problems are exponential. So
Heuristic Search help us reduce this to a rather polynomial number. We use this in AI because
we can put it to use in situations where we can’t find known algorithms.
Artificial Intelligence Lab 3 3
Lab Task 3:
What do you understand about A* Search Algorithm? (Look from Internet)
Task 3 Solution:
A* Search Algorithm
A* Search Algorithm is one of the best and being most used technique in path-finding and graph
traversals. It finds the shortest path through the chase space using heuristic limit h(n) and cost to
reach at the center point n from the starting point stage g(n).
Working
We mostly use maze to learn the working of A* search algorithm. We all have seen maze and
how it take time and effort to find paths in this maze to reach goal point from starting point. We
can solve the problem of maze by considering it as a search problem. To start solving problem,
we need to define a set of prospective states possible, start and end state, a decision making
check if we reach the end point, a set of actions in case of possible direction, a function advising
us about result of an action and a set of costs consumed to reach different states of movement.
Now, to solve problem, we map the intersections to the nodes(red dots) and all the possible paths
we can make move toward the edges(blue lines). Then define start and end point at node A and B
respectively which are our maze start and end points. Then we apply A* algorithm steps
A* Algorithm steps
Step 1: Add the beginning node to the open list
Step 2: Repeat the following step
• In the open list, find the square with the lowest F cost, which denotes the current square.
Now we move to the closed square.
Artificial Intelligence Lab 3 4
• Consider 8 squares adjacent to the current square and Ignore it if it is on the closed list or
if it is not workable. Do the following if it is workable.
• Check if it is on the open list; if not, add it. You need to make the current square as this
square’s a parent. You will now record the different costs of the square, like the F, G, and
H costs.
• If it is on the open list, use G cost to measure the better path. The lower the G cost, the
better the path. If this path is better, make the current square as the parent square. Now
you need to recalculate the other scores – the G and F scores of this square.
You’ll stop:
If you find the path, you need to check the closed list and add the target square to it.
There is no path if the open list is empty and you cannot find the target square.
Step 3: Now you can save the path and work backward, starting from the target square, going to
the parent square from each square you go, till it takes you to the starting square. You’ve found
your path now.
Lab Task 4:
Use A* Search Algorithm?
Task 4 Solution:
Code:
%DEFINE THE 2-D MAP ARRAY
MAX_X=10;
MAX_Y=10;
MAX_VAL=10;
%This array stores the coordinates of the map and the
%Objects in each coordinate
MAP=2*(ones(MAX_X,MAX_Y));
[xval,yval,but]=ginput(1);
end
xval=floor(xval);
yval=floor(yval);
xTarget=xval;%X Coordinate of the Target
yTarget=yval;%Y Coordinate of the Target
pause(2);
h=msgbox('Select Obstacles using the Left Mouse button,to select the last obstacle use
the Right button');
xlabel('Select Obstacles using the Left Mouse button,to select the last obstacle use
the Right button','Color','blue');
uiwait(h,10);
if ishandle(h) == 1
delete(h);
end
while but == 1
[xval,yval,but] = ginput(1);
xval=floor(xval);
yval=floor(yval);
MAP(xval,yval)=-1;%Put on the closed list as well
plot(xval+.5,yval+.5,'ro');
end%End of While loop
pause(1);
h=msgbox('Please Select the Vehicle initial position using the Left Mouse button');
uiwait(h,5);
if ishandle(h) == 1
delete(h);
end
xlabel('Please Select the Vehicle initial position ','Color','black');
but=0;
while (but ~= 1) %Repeat until the Left button is not clicked
[xval,yval,but]=ginput(1);
xval=floor(xval);
yval=floor(yval);
end
xStart=xval;%Starting Position
yStart=yval;%Starting Position
MAP(xval,yval)=1;
plot(xval+.5,yval+.5,'bo');
%End of obstacle-Target pickup
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
OPEN(OPEN_COUNT,:)=insert_open(exp_array(i,1),exp_array(i,2),xNode,yNode,exp_array(i,3
),exp_array(i,4),exp_array(i,5));
end;%End of insert new element into the OPEN list
end;%End of i for
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%END OF WHILE LOOP
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Find out the node with the smallest fn
index_min_node = min_fn(OPEN,OPEN_COUNT,xTarget,yTarget);
if (index_min_node ~= -1)
%Set xNode and yNode to the node with minimum fn
xNode=OPEN(index_min_node,2);
yNode=OPEN(index_min_node,3);
path_cost=OPEN(index_min_node,6);%Update the cost of reaching the parent node
%Move the Node to list CLOSED
CLOSED_COUNT=CLOSED_COUNT+1;
CLOSED(CLOSED_COUNT,1)=xNode;
CLOSED(CLOSED_COUNT,2)=yNode;
OPEN(index_min_node,1)=0;
else
%No path exists to the Target!!
NoPath=0;%Exits the loop!
end;%End of index_min_node check
end;%End of While Loop
%Once algorithm has run The optimal path is generated by starting of at the
%last node(if it is the target node) and then identifying its parent node
%until it reaches the start node.This is the optimal path
i=size(CLOSED,1);
Optimal_path=[];
xval=CLOSED(i,1);
yval=CLOSED(i,2);
i=1;
Optimal_path(i,1)=xval;
Optimal_path(i,2)=yval;
i=i+1;
else
pause(1);
h=msgbox('Sorry, No path exists to the Target!','warn');
uiwait(h,5);
end
Output: