CSC D84 - Artificial Intelligence
Assignment 2 - MiniMax and Game Trees
This assignment is worth:
10 AIUs (Artificial Intelligence Units)
toward the assignment component of your final
mark.
________________________________________________
Student Name 1 (last, first): Hongming, Li
Student Name 2 (last, first): Diego, He
Student number 1: 1004135624
Student number 2: 1004264547
UTORid 1: lihongm2
UTORid 2: hediego
READ THIS AND SIGN YOUR NAME AT THE END:
I certify that I have read the UTSC code on academic
honesty and plaguarism. All work submitted as part
of this assignment is my own.
Signed: _Hongming Li__ _Diego He__
(-5 marks for failing to provide the identifying
information requested above)
________________________________________________
Answer the following questions. Be concise and clear
but explain carefully when needed.
1 .- (5 marks) Explain the design of your utility function.
Describe all the factors that influence its value, and
how their influence was evaluated and integrated into
a single, meaningful value. Convince us that your utility
makes sense!
Factors:
- Closest cheese location
* BFS when distance to the cheese location is close
(e.g. when manhattan distance <8).
* Otherwise, use manhanttan distance.
* WHY: BFS search is used when Manhattan distance is short to calculate for
the actual path to the cheese has obvious advantage, it allows the mouse to
avoid getting tricked by the manhanttan distance and choose a path that is
short in manhanttan distance but long in actual path distance(e.g. blocked
by a long wall). However, when the Manhanttan distance is far, we just take the
Manhanttan distance. There is no obvious difference, because the general direction
that Manhanttan distance give is correct for most cases. Using Manhanttan distance
reduces the computational cost.
- Cat total distance
* calcuated the formula cat_total_distance = sum((size_Y + size_X) / dist[i]),
where i is the id of the cat.
* WHY: Cat total distance takes all cat's distance into consideration, by summing up
all the cat's distance to the mouse. However, each cat's impact on the utility funciton is
weighted based on how close it is to the mouse. The closer the cat is to the mouse the
more impactful the cat is to the utility function. This avoids the situation,
when only one cat is very close, but threat of the close cat is averaged down
by the other far-away cats. We achieve the weighted utility by dividing the distance.
- Default value for utility for the following cases:
* Any cat location is equal to mouse location. Default value set to -#cats*64 (negative max)
* Any cheese location is equal to mouse location. Default value set to #cats*64 (positive max)
* If mouse run into a deadend(i.e. srounded by three walls).Default value set to -#cats*64(negative Max)
Note:64 here is actually SIZE_X + SIZE_Y
*WHY: The default values positive or negative max corresponds to the ultimate
winning utility value of mouse and cats. This allows the mouse to avoid these
extreme cases or go for the cheese when the cheese is nearby
- Depth
* If Minimax value are equal, we priorities the one with
the lower depth.
WHY: It reduces the chance that our algorithm gets stuck that it goes
back and forth between two positions that have the same utility values.
We use the following final utility function:
((((size_X + size_Y)*cats)/(min_dist)) - cat_total_dist) / depth;
Where size_Y + size_X = 64
The former part of the equation (size_X + size_Y)*cats)/(min_dist) calculates
the positive utility of the mouse, it gets very close to positive max(i.e. #cats*64)
when. Similarly, on the cat's side, cat_total_dist approaches to negative max,
when cats get close to mouse(close cats dominate, but also minorly consider far-away cats).
When the mouse is in between a cheese and cats, the two parts of the utility function
is likely to cancel out. Also, designed range of our utility function to be between
-#cats * 64 and #cats * 64 (equal max and min magnitutde). Therefore, our utility function
does not favor either mouse or cats, because we don't want to overesitmate or
underrestimate our opponents. The reason we don't want bias is that if we overrestimate,
we might get stuck in some place and never get to the cheese, and if we underrestimate,
we might easily get caught by the cats with high smartness, we want the mosue to be somewhere
in between.
2 .- (2 marks) Ignoring computation time, what is the effect of
search depth (number of turns) on the chances of the mouse
winning the game.
As the search depth increases, the partial game configuration
that we pass in to the utility function is closer and closer
to the terminal node, thus utility function is able to make
more accurate prediction of value ofthe terminal node. This allows
the mouse to see the future more accurately, and avoid danger
more correctly. Therefore it increases the mouse's chance to
wint the game.
3 .- (2 marks) What situations will cause your mouse to lose?
can these be fixed either with the utility function, or
by changing the search depth? if so, how?
Situation in which the best move for the current mouse to
take is the previous step, so it will go back and forth
with the cat since after moving to the previous step, the
mouse will also move causing the mouse to steek to those
two steps for ever.
4 .- (2 marks) Compare cats with smartness=.8 against cats with
smartness=1 - which are harder for your mouse to beat?
why do you think that is?
The mouse is equally likely to win for these two smartness levels.
However, the difference I notice is that if it is winnable
for smartness=1, it is also winnable for smartness=.8, but it
sometimes take longer time for mouse to win with smartness .8.
Due to the nature of Minimax, it sometimes gets stuck in a circle
of area back and forth to wait for the cats a bit because of the
similar utilities of the area. It is even more obvious when the
smartness level drop even lower. So in conclusion, they are the same
in terms of survivability, but the mouse usually wins faster with
higher smartness level.
5 .- (2 marks) Can the mouse be made unbeatable by having an
optimal utility function?
Having an optimal utility function means that the utility
function is able to make 100% correct prediction of the value
best possible terminal state value that is obtainable based on CSC D84 - Artificial Intelligence
Assignment 2 - MiniMax and Game Trees
This assignment is worth:
10 AIUs (Artificial Intelligence Units)
toward the assignment component of your final
mark.
________________________________________________
Student Name 1 (last, first): Hongming, Li
Student Name 2 (last, first): Diego, He
Student number 1: 1004135624
Student number 2: 1004264547
UTORid 1: lihongm2
UTORid 2: hediego
READ THIS AND SIGN YOUR NAME AT THE END:
I certify that I have read the UTSC code on academic
honesty and plaguarism. All work submitted as part
of this assignment is my own.
Signed: _Hongming Li__ _Diego He__
(-5 marks for failing to provide the identifying
information requested above)
________________________________________________
Answer the following questions. Be concise and clear
but explain carefully when needed.
1 .- (5 marks) Explain the design of your utility function.
Describe all the factors that influence its value, and
how their influence was evaluated and integrated into
a single, meaningful value. Convince us that your utility
makes sense!
Factors:
- Closest cheese location
* BFS when distance to the cheese location is close
(e.g. when manhattan distance <8).
* Otherwise, use manhanttan distance.
* WHY: BFS search is used when Manhattan distance is short to calculate for
the actual path to the cheese has obvious advantage, it allows the mouse to
avoid getting tricked by the manhanttan distance and choose a path that is
short in manhanttan distance but long in actual path distance(e.g. blocked
by a long wall). However, when the Manhanttan distance is far, we just take the
Manhanttan distance. There is no obvious difference, because the general direction
that Manhanttan distance give is correct for most cases. Using Manhanttan distance
reduces the computational cost.
- Cat total distance
* calcuated the formula cat_total_distance = sum((size_Y + size_X) / dist[i]),
where i is the id of the cat.
* WHY: Cat total distance takes all cat's distance into consideration, by summing up
all the cat's distance to the mouse. However, each cat's impact on the utility funciton is
weighted based on how close it is to the mouse. The closer the cat is to the mouse the
more impactful the cat is to the utility function. This avoids the situation,
when only one cat is very close, but threat of the close cat is averaged down
by the other far-away cats. We achieve the weighted utility by dividing the distance.
- Default value for utility for the following cases:
* Any cat location is equal to mouse location. Default value set to -#cats*64 (negative max)
* Any cheese location is equal to mouse location. Default value set to #cats*64 (positive max)
* If mouse run into a deadend(i.e. srounded by three walls).Default value set to -#cats*64(negative Max)
Note:64 here is actually SIZE_X + SIZE_Y
*WHY: The default values positive or negative max corresponds to the ultimate
winning utility value of mouse and cats. This allows the mouse to avoid these
extreme cases or go for the cheese when the cheese is nearby
- Depth
* If Minimax value are equal, we priorities the one with
the lower depth.
WHY: It reduces the chance that our algorithm gets stuck that it goes
back and forth between two positions that have the same utility values.
We use the following final utility function:
((((size_X + size_Y)*cats)/(min_dist)) - cat_total_dist) / depth;
Where size_Y + size_X = 64
The former part of the equation (size_X + size_Y)*cats)/(min_dist) calculates
the positive utility of the mouse, it gets very close to positive max(i.e. #cats*64)
when. Similarly, on the cat's side, cat_total_dist approaches to negative max,
when cats get close to mouse(close cats dominate, but also minorly consider far-away cats).
When the mouse is in between a cheese and cats, the two parts of the utility function
is likely to cancel out. Also, designed range of our utility function to be between
-#cats * 64 and #cats * 64 (equal max and min magnitutde). Therefore, our utility function
does not favor either mouse or cats, because we don't want to overesitmate or
underrestimate our opponents. The reason we don't want bias is that if we overrestimate,
we might get stuck in some place and never get to the cheese, and if we underrestimate,
we might easily get caught by the cats with high smartness, we want the mosue to be somewhere
in between.
2 .- (2 marks) Ignoring computation time, what is the effect of
search depth (number of turns) on the chances of the mouse
winning the game.
As the search depth increases, the partial game configuration
that we pass in to the utility function is closer and closer
to the terminal node, thus utility function is able to make
more accurate prediction of value ofthe terminal node. This allows
the mouse to see the future more accurately, and avoid danger
more correctly. Therefore it increases the mouse's chance to
wint the game.
3 .- (2 marks) What situations will cause your mouse to lose?
can these be fixed either with the utility function, or
by changing the search depth? if so, how?
Situation in which the best move for the current mouse to
take is the previous step, so it will go back and forth
with the cat since after moving to the previous step, the
mouse will also move causing the mouse to steek to those
two steps for ever.
4 .- (2 marks) Compare cats with smartness=.8 against cats with
smartness=1 - which are harder for your mouse to beat?
why do you think that is?
The mouse is equally likely to win for these two smartness levels.
However, the difference I notice is that if it is winnable
for smartness=1, it is also winnable for smartness=.8, but it
sometimes take longer time for mouse to win with smartness .8.
Due to the nature of Minimax, it sometimes gets stuck in a circle
of area back and forth to wait for the cats a bit because of the
similar utilities of the area. It is even more obvious when the
smartness level drop even lower. So in conclusion, they are the same
in terms of survivability, but the mouse usually wins faster with
higher smartness level.
5 .- (2 marks) Can the mouse be made unbeatable by having an
optimal utility function?
Having an optimal utility function means that the utility
function is able to make 100% correct prediction of the value
best possible terminal state value that is obtainable based on
the current partial game configuration. Therefore, it is possible
that the game configuration is just unwinnable from the start
(i.e. the utility function returns negative value at the
root of the game tree) In this situation, the mouse is not unbeatable
even with an optimal utility function.
6 .- (2 bonus marks) Could a human playing the game in place
of the mouse do better than your code? (yes, no, and
a reasonable explanation of why)
Yes, assuming the human is a professional gamer at this
game with exceptional reaction speed, then the human is
very likely to perform better than our mouse. The reson
is simple since a human is able to see the whole maze
and able to avoid steps such that will make the mouse to
be reached by the cats. A human is able to see the steps
taken by each cat so it will actually see the patten that
the cats are taking, in which our MIN/MAX is not doing.
_____________________________________________________
Mark with an 'x' where appropriate. If something is only
working partially, briefly describe what works, what
doesn't work, or what problems exist.
Complete/Working Partial Not done
Utility x
function
MiniMax x
Alpha/Beta x
pruning
_____________________________________________________
Marking:
(10 marks) Implemented a non-trivial, clever, and
effective utility function. It allows the
mouse to win the game often.
(10 marks) Correctly implementing MiniMax. The algorithm
should produce the expected behaviour. The
mouse should take a reasonable path to the
cheese and avoid cats. The cats will try to
catch the mouse. Mouse is not easy to catch.
(10 marks) Implemented alpha-beta pruning. The algorithm
significantly reduces the amount of search
while producing identical results as those
from standard MiniMax
(15 marks) Competitive (TA assigned) based on how smart
your mouse is (this is related to your
utility function above!)
(15 marks) Answers in this report file
(2 bonus) Bonus!
Total for A2: / out of 60
the current partial game configuration. Therefore, it is possible
that the game configuration is just unwinnable from the start
(i.e. the utility function returns negative value at the
root of the game tree) In this situation, the mouse is not unbeatable
even with an optimal utility function.
6 .- (2 bonus marks) Could a human playing the game in place
of the mouse do better than your code? (yes, no, and
a reasonable explanation of why)
Yes, assuming the human is a professional gamer at this
game with exceptional reaction speed, then the human is
very likely to perform better than our mouse. The reson
is simple since a human is able to see the whole maze
and able to avoid steps such that will make the mouse to
be reached by the cats. A human is able to see the steps
taken by each cat so it will actually see the patten that
the cats are taking, in which our MIN/MAX is not doing.
_____________________________________________________
Mark with an 'x' where appropriate. If something is only
working partially, briefly describe what works, what
doesn't work, or what problems exist.
Complete/Working Partial Not done
Utility x
function
MiniMax x
Alpha/Beta x
pruning
_____________________________________________________
Marking:
(10 marks) Implemented a non-trivial, clever, and
effective utility function. It allows the
mouse to win the game often.
(10 marks) Correctly implementing MiniMax. The algorithm
should produce the expected behaviour. The
mouse should take a reasonable path to the
cheese and avoid cats. The cats will try to
catch the mouse. Mouse is not easy to catch.
(10 marks) Implemented alpha-beta pruning. The algorithm
significantly reduces the amount of search
while producing identical results as those
from standard MiniMax
(15 marks) Competitive (TA assigned) based on how smart
your mouse is (this is related to your
utility function above!)
(15 marks) Answers in this report file
(2 bonus) Bonus!
Total for A2: / out of 60