Konsep dasar

DECISION MAKING
PENGANTAR TEORI GAME
PENGERTIAN



Decision Making adalah serangkaian algoritma
yang dirancang dengan memasukan beberapa
kemungkinan langkah yang bisa diambil oleh suatu
aplikasi
Pada game, decision making memberikan
kemampuan suatu karakter untuk menentukan
langkah apa yang akan diambil.
Decision
making
dilakukan
dengan
cara
menentukan satu pilihan dari list yang sudah dibuat
pada algoritma yang dirancang.
PENGERTIAN


Algoritma decision making kerap digunakan dalam
aplikasi game
Algoritma
decision
making
dapat
juga
diimplementasikan pada banyak aplikasi lain.
Decision Tree

Keunggulan
 Cepat
& mudah diimplementasikan, mudah dimengerti
 Modular, Re-usable
 Dapat dipelajari  Dapat dikonstruksi secara dinamis
dari observasi dan action di dalam game
Decision Tree

Problem Setting
 Memberi
seperangkat pengetahuan, kita perlu untuk
menghasilkan tindakan yang sesuai dari serangkaian
tindakan yang mungkin.
 Some actions are triggered by a large set of inputs
 E.g.
For an ant AI to Evade, it requires player to be < 20
units away, player’s health to be > 50% and ant’s health to
be < 25%. There are 3 input conditions.
 Beberapa kondisi input mungkin lebih signifikan dari
sejumlah input yang ada.
 Computational redundancy
Decision Tree

Problem Setting
 Kita
butuh suatu metode untuk mengelompokkan
sejumlah input secara bersamaan pada setiap action
 Kita harus mengizinkan input-input yang signifikan untuk
mengontrol output actions (also non-significant inputs
should be less utilized)
Decision Tree

Decision Tree (DT) dibuat dari kumpulan decision
point yang terhubung.
 Tree
dimulai dari decision (root)
 Setiap
decision (dimulai dari root), satu dari
sekumpulan pilihan yang ada dipilih
 Pilihan dibuat berdasarkan kondisi yang dihasilkan
dari character’s knowledge/values
 Lanjutkan tree sampai tidak ada lagi decision yang
diambil
 Setiap leaf (daun) adalah action, yang harus
dieksekusi
Decision Tree

Contoh decision tree dari karakter soldier
Root
Leaf
Input Conditions
(Decision Points)
Decision Tree

Action karakter ditentukan melalui urutan decision
points
Decisions

Decision di tree harus sederhana
 Cek
untuk yang bernilai single atau bernilai boolean
(do not normally join inputs with Boolean logic)

Possible types of decisions and their data types
Boolean – True/False
 Enumeration – Matches one of the given set of values
 Numeric value – Value within given range
 Vector (2D/3D) – Vector has length within a given range
(for distance checking)

Combinations of Decisions


Decision tree adalah efisien karena decision yang
sederhana – hanya satu kondisi pengujian pada
satu waktu
Ketika pengujian kombinasi boolean (AND/OR)
diperlukan, beberapa sturktur tree dapat
digunakan untuk merepresantikannya
Combinations of Decisions


To AND two decisions
together, place them in
series, the 1st decision
needs to be true to
consider the 2nd, in order
to get to action 1
To OR two decisions
together, place them in
series, either 1st or 2nd
decision can be true in
order to carry out action 1
Decision Complexity


In a tree structure, the
number of decisions that
need to be considered is
usually smaller than the
number of decisions in the
tree
Complexity issue? Space
complexity? Time
complexity?
Branching in DTs



Deep binary DT
The same value (color) may
be checked up to 3 times
Slightly better: Order the
checks so that the most likely
state comes first



Flat DT with 4 branches
Using 4 branches, the
structure is flatter and
requires only one decision
check
More efficient!
Binary Better?

It is still more common to find binary DT
implementations
 Underlying
nature of codes usually simplifies down to a
series of binary tests (if/else)
 Speed savings not significantly better with higher order
branching

Binary DTs are easier to optimize
 Many
tree optimization/compression techniques are for
binary trees
 Learning algorithms usually use binary DT
Performance


DTs (binary) usually take no memory and
performance is linear with the number of nodes
visited
Ideal case  If each decision takes a constant time
and tree is balanced, performance is O(log2 n),
where n is the number of decision nodes
Balancing the Tree



DTs run the fastest when
trees are balanced
A balanced tree has
about the same number of
leaves on each branch
Both these trees have 8
behaviors and 7 decisions,
but one is extremely
unbalanced
Balanced vs. Unbalanced Tree



At its worst, performance of a severely unbalanced
tree goes from O(log2 n) to O(n)
Although a balance tree is theoretically optimal, it
may not be the fastest tree…
Why is this so?
Maximizing Performance?



Menstrukturkan tree untuk maximum performance
adalah hal yang sulit dilakukan
DT cukup cepat, sangat penting untuk squeeze out
every drop of speed
General guidelines: Seimbangkan tree (as
balanced as possible), buat cabang lebih pendek
dari yang biasa dipakai, taruh expensive decision
setelahnya.
Random Decision Tree



Random Decision Trees adalah algoritma yang
membentuk serangkaian langkah-langkah yang
akan dimasukan kedalam algoritma decision trees.
Setiap pilihan langkah yang dimasukkan pada
decision trees tidak dapat diprediksi
Setiap langkah akan dilakukan secara acak
berdasarkan nilainya
Random Decision Tree



Random Decision Trees pada game “Ninja Heroes"
akan bekerja dengan beberapa pilihan
Jika karakter sedang tidak melakukan kegiatan
maka random decision trees akan bekerja
berdasarkan nilai random yang telah ditentukan
Apabila karakter sedang berada didalam kelas
atau sedang melakukan kegiatan maka random
decision trees tidak dilakukan dan karakter akan
menyelesaikan tindakannya terlebih dahulu.
Random Decision Tree

To introduce random choices in a DT, decision
making process needs to be stable
 Rule:
If there is no relevant changes in world state,
there should be no change in decision
 Consecutive frames should stay with the chosen random
decision until some world state changes
 Implementation: Allow the random decision to keep
track of what it did last time, so that it knows the
previous choice to take when the same decision is
encountered.
Random Decision Tree




In the first decision (if not under
attack), choose randomly to patrol or
stand still
Subsequently, continue on with the
previously chosen action
If the parent decision takes the ‘under
attack’ choice (a different branch),
get rid of the stored choice
Repeat…
Random Decision Tree



If the AI continues to do the same thing
forever (because it is never under
attack?), that may look strange too…
Use a time-out scheme (a stop timer)
to reset the previous action, and
initiate a new random choice
How about randomizing the timer as
well…? 
Combining DT with FSM


We can replace transitions from a state (to another
state) with a DT
The leaves are the actual transitions to new states
Combining DT with FSM


Note: If it cannot see the player, the transition (via the DT)
ends, and no new state is reached
Otherwise, it tests for the player proximity and makes a
transition to the “Raise Alarm” or “Defend” states
Combining DT with FSM



This FSM implements the same thing (as prev. slide), but without
the DT nodes
Now, we have two complex conditions that need to be
evaluated
If the condition involved a time-consuming test (such as LoS),
then adding the DT would be much more efficient
Rule-based AI



Generally refer to AI systems that consist of a set of
if-then (or if-else) style rules
Technically, FSMs and DTs are types of rule-based
systems. Rules are used to handle state transitions
and decision nodes
But more specifically, “rule-based systems” are
also commonly referred to its usage in expert
systems
Rule-based Expert Systems

Common usages/applications in real life:
 Medical

diagnosis, fraud protection, etc.
Advantage:
 Rule-based
systems can mimic the way people think
and reason given a set of known facts and knowledge
about a particular domain
 Fairly easy to program and manage (in a computer
application)
Rule-based Systems for Games

Rule-based systems are useful in GAMES…
 Because
knowledge encoded in rules is modular
 Rules can be encoded in any order  flexible for
coding and modifying the system at a later time

Let’s look at a game example that can use a rulebased system…
Example: Medieval RTS game

Technology Tree
 An
important element in
RTS games
 Shows the links between
units to train, facilities to
build and resources to
harvest in order to expand
influence in game
Example: Medieval RTS game

Aim: Enable the computer opponent to keep track
of player’s current state of technology
 By
collection of knowledge of the player from the
world state (resources, units, facilities)
 “Cheating” and having perfect knowledge will not give
fair and realistic AI behaviors

How to assess state of technology?
 Sending
scouts to collect information and observe (just
like what human players do)
 Make inferences via a rule-based system
Rule-based System Basics

Two main components
 Working
memory – Stores known facts and assertions
made by the rules
 Rules memory – Contains if-then style rules that operate
over the facts stored in working memory

As rules as triggered or fired,
 they
can trigger some kind of action (such as in FSM
and DT), or
 they can modify contents of the working memory by
adding new information
Rule-based System Basics

Sample working memory
enum TMemoryValue{Yes, No, Maybe, Unknown};
TMemoryValue
TMemoryValue
TMemoryValue
TMemoryValue
TMemoryValue
......
Peasants;
Woodcutter;
Stonemason;
Blacksmith;
Barracks;
Contains elements that can take any one of the 4 values
 Idea: Keep track of the current “perception” of the player’s
state of technology

Rule-based System Basics



Computer can gather facts by sending out scouts to see if a player
has built a temple (for e.g.) Temple element will be set to Yes.
In another way, we can use a set of if-then style rules to infer the
technology that the player has (before a scout confirms it)
Example “temple” rule:
if(Woodcutter == Yes && Stonemason == Yes &&
Temple == Unknown)
Temple = Maybe
Rule-based System Basics

Inference can work the other way as well


If the player has been observed to have a priest, it can be inferred
that the player also must have a temple, therefore, must have a
barracks, a woodcutter, and a stonemason
Example “priest” rule:
if(Priest == Yes) {
Temple = Yes;
Barracks = Yes;
Woodcutter= Yes;
Stonemason= Yes;
}
Rule-based System Basics


You can have many more rules for this technology tree (More
examples in textbook)
The main scheme: To write this set of rules and execute them
continuously during the game (at each iteration of the game loop
or in fixed intervals)


Maintain an up-to-date picture of the player’s technology capabilities
This knowledge can be used to decide when to attack/defend, what to
build next and make other tactical/strategic plans
Rule-based System Basics

In reality, developers to not build rule-based systems
using actual hard-coded if-statements




Some types of inferences are hard to achieve
Very inflexible as the rules need to be handcrafted one by one to
strike a good balance among them
Definitely not efficient for future modifications!
Developers often use scripting languages or shells to
create and modify rules without having to change the
source code and recompile
Inference in Rule-based Systems

Forward Chaining
 Match
rules (if-parts) to facts in working memory
 If a rule matches, it is fired and its then-part is
executed
 Potentially, if more than one rule matches the given set
of facts, conflict resolution phase required to figure out
which rule to fire
 Conflict resolution: Many possible ways – (1) first
matched rule, (2) random rule, (3) largest weighted rule
Inference in Rule-based Systems

Forward Chaining
 Example
 If
working memory indicates Peasants = Yes and
Woodcutter = Unknown, the rule:
if(Peasants == Yes && Woodcutter == Unknown)
Woodcutter = Maybe;
, matches. So, this rule can potentially be fired
(depending on which other rules are also matched)
Inference in Rule-based Systems

Backward Chaining
 Opposite
of forward chaining
 Match the then-parts, start with outcome/goal, and
figure out which rules must be fired to arrive at the
outcome/goal
 E.g.
Outcome is that the player has Calvary units. Work
backwards – player must have Blacksmith to have Calvary,
player must have Barracks to have Blacksmith, player must
have Woodcutter to have Barracks and so on.
Inference in Rule-based Systems

Backward Chaining
 So,
all the rules required to reach the outcome are all
fired.
 Work the logic backward up the technology tree to the
goal
 In practice, backward chaining is recursive and more
difficult to implement than forward chaining
Optimization of RBS

For small rule sets,
 Forward

chaining is fast
For large-scale rule-based systems, optimization is
essential
 Many
rules may be matched for firing, so conflict
resolution phase must be optimized  Rete Algorithm

Write your own scripting language (instead of 3rd
party ones) to reduce implementation overhead