147 Views

Download Presentation
## Artificial Intelligence in Game Design

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**Artificial Intelligence in Game Design**Lecture 6: Fuzzy Logic and Fuzzy State Machines**Problems with Discrete States**• Characters may be in multiple states simultaneously • Particularly emotional states • Hit angry • Low HP frightened • May indicate contradictory responses • Frightened run • Angry attack • Need “intermediate” states and actions • “Somewhat angry” • “Somewhat frightened”**Problems with Discrete States**• Abrupt transitions between states • Exact behavior from 100 down to 10 HP • Sudden behavior change at 9 HP • More realistic if behavior gradually changes as HP approaches 10 Angry Snarling Moving forward Frightened Wincing Backing away HP < 10**Problems with Discrete States**• Serious problem if action is continuous value • Example: Racing gamesActions: • Speed of car • Amount to steer • … • Basic idea: • Near curve slow speed • Far from curve fast speed**Problems with Discrete States**• Bad solution (based on discrete states) • Distance to curve > 10 120 mph • Distance to curve <= 10 60 mph Sudden transition!**Problems with Discrete States**• Best solution: • As get closer to curve, gradually slow down • As get further from curve, gradually speed up**Fuzzy Logic**• Membership functionµ S (x) • “Degree” to which entity X belongs in state S • Discrete states: µ S (x) = 1 X is in state S or 0 X is not in state S • Fuzzy states: µ S (x) may be any number between 0 and 1 • X may be “somewhat” in state S**Fuzzy Logic and Language**• Often used to quantify “natural language” hedges • Example: • “Not at all” µ S (x)= 0 • “A little” µ S (x)= 0.2 • “Kind of” µ S (x)= 0.4 • “Pretty” µ S (x)= 0.6 • “Very” µ S (x)= 0.8 • “Absolutely” µ S (x)= 1.0**Fuzzy Logic Example**• Example: Oswald the Orc • Very angryµ angry(Oswald)= 0.8 • Kind of frightened µ frightened(Oswald)= 0.4 • Not at all confident µ confident(Oswald)= 0.0 Note that fuzzy memberships don’t have to add up to 1 (unlike probabilities)**Fuzzification**• Converting a continuous valued attribute to a fuzzy state membership • Racing example: • Attribute = car’s distance from curve • Fuzzy states: • Near curve • Far from curve • Goal: determine membership of car in these sets • First step to determine desired speed of car Start of curve**Fuzzification**• Often represent as simple graphs • X axis: continuous attribute • Y axis: membership in set(s) • Example: current distance = 60 Near Far 0.6 0.4 distance to curve 0 20 40 60 80 100 120 µnear (car) = 0.6 µ far (car) = 0.4**Fuzzy Rules**• Fuzzy antecedent Fuzzy conclusion • Fuzzy antecedent created from fuzzification • Requires fuzzy definitions of logical connectives AND, OR, and NOT. What is fuzzy membership in this? Given fuzzy membership in this**Fuzzy Connectives**Usual measures: • AND: µ S and T(x)= min (µ S(x),µ T(x)) • OR: µ S or T(x)= max (µ S(x),µ T(x))Note: this also applies if combining separate rules • NOT: µ not T(x)= 1 - µ T(x)**Fuzzy Rule Example**Rules: • IF near curve exit AND going slow THEN accelerate • IF far from curve exit AND going medium THEN accelerate Question: • If near, far, slow, medium all fuzzy measuresWhat is resulting membership in accelerate? Speed: 100 mph Distance from exit: 80**Fuzzy Rule Example**Near Far 0.6 0.4 distance to curve 0 20 40 60 80 100 120 µnear (car) = 0.4 µ far (car) = 0.6 1.0 Slow Fast Medium 0.3 speed 0 30 60 90 120 150 180 µslow (car) = 0.3 µ medium (car) = 1.0**Fuzzy Rule Example**• Rule 1:IF near curve exit AND going slow THEN accelerateµ accelerate(car)=µ near and slow(car)= min (µ near(car),µ slow(car)) = min(0.4, 0.3) = 0.3 • Rule 2:IF far curve exit AND going medium THEN accelerateµ accelerate(car)=µ far and medium(car)= min (µ far(car),µ medium(car)) = min(0.6, 1.0) = 0.6**Fuzzy Rule Example**• Combining the rules:µ accelerate(car)=µ accelerate1 or accelerate2(car)= max (µ accelerate1(car),µ accelerate2(car)) = max(0.3, 0.6) = 0.6Membership of the car in accelerate = 0.6**Defuzzification**• Converting fuzzy state membership to appropriate actions • Higher membership in state greater degree of action implied by state • Possible problems • Conflicts if multiple actions indicated • Some actions not fuzzy (attack vs. no attack) • Many open problems!**Simple Defuzzification**• Create fuzzy set for action • Map membership in set back to value • Assumes no conflicts with other actions based on same value • Assumes monotonic function for fuzzy set • Example: µ accelerate(car) = 0.6 acceleration = 16 feet/second2 Acceleration 0.6 feet/second2 0 5 10 15 20 25 30**Conflicts in Defuzzification**• Example rule:IF near curve entrance AND going fast THEN brake • Distance: 90 µ near(car) = 0.2 • Speed: 80 µ fast(car) = 0.15 • µ brake(car) = min (0.2, 0.15) = 0.15**Conflicts in Defuzzification**• Conflicting fuzzy actions: • µ accelerate(car) = 0.6 • µ brake(car) = 0.15 • Intuitive idea: • Should accelerate since its membership is larger • Membership in brake should decrease acceleration to some degree**Conflicts in Defuzzification**Methods: • Just use largest rule (µ accelerate(car) = 0.6) • Fast to compute • Leads to uneven behavior • Weighted center of mass of sets • Commonly used in AI • Slow and costly to compute Braking Acceleration 0.6 0.15 feet/second2 -15 -10 -5 -0 5 10 15**Conflicts in Defuzzification**• Choose one value for each set • Usually its maximum value • Weight by memberships in each set • Determine average value Example: • Maximum acceleration = 30 feet/second2 • Maximum braking = -40 feet/second2 • Weighted by membership: • Acceleration = 0.6 * 30 feet/second2 = 18 feet/second2 • Braking = 0.15 * -40 feet/second2 = -6 feet/second2 • Resulting acceleration: 12 feet/second2**Defuzzifying Discrete Actions**• Example: Attack/No attack (must do one or the other) • Thresholding: • If fuzzy membership > threshold take action • Example: If µ angry(orc) > 0.7 attackIf µ angry(orc) <= 0.7 no attack • Conflicts:Take action with highest membership • Angry attack, µ angry(Oswald) = 0.7 • Frightened run, µ frightened(Oswald) = 0.3 • Note: Fuzzy logic works best for continuous valued actions Oswald attacks!**Fuzzy State Machines**• Fuzzy membership in states • May be in multiple states • Transitions between states may be fuzzy • Resulting actions may be fuzzy Example: • May be confident and fearful to some degree • Transitions based on fuzzy measures “high” and “low” HP • Action (% chance of attack) is continuous valued HP low Confident Attack 100% Fearful Attack 20% HP high**Fuzzy State Machines**T • Transitions of formtreated like fuzzy and • Must be in state S1 • Stimulus T must be present • µ S2(orc) = min(µ S1(orc), µ T(orc)) • Note that unless µ S2(orc) = 1, it is still in S1 to some degree: µ S1(orc) = 1 - µ S2(orc) • Note that state S2 maybe indicated as a next state by many other states (including itself) • Will use max rule to determine final membership in S2 S1 S2**Fuzzy State Machine Example**• Current HP = 13 (just hit by player) • µ low(Oswald) = 0.7 • µ high(Oswald) = 0.3 Low High HP 0 5 10 15 20 25 30**Fuzzy State Machine Example**• Current state memberships • µ conf(Oswald) = 0.6 • µ fear(Oswald) = 0.4 HP low Confident Attack 100% Fearful Attack 20% HP high**Fuzzy State Machine Example**• Confident Fearful transition • µ fear(Oswald) = min (µ conf(Oswald), µ low(Oswald)) = min (0.6, 0.7) = 0.6 • µ conf(Oswald) = 1 - µ fear(Oswald) = 0.4 • Fearful Confident transition • µ conf(Oswald) = min(µ fear(Oswald), µ high(Oswald)) = min (0.4, 0.3) = 0.3 • µ fear(Oswald) = 1 - µ conf(Oswald) = 0.7**Fuzzy State Machine Example**• Combining effects of transitions • µ conf(Oswald) = max (0.4, 0.3) = 0.4 • µ fear(Oswald) = max (0.6, 0.7) = 0.7 • Determining current action • Attack % = ( µ conf(Oswald) * 100% +µ fear(Oswald) * 20% ) / 2 = (0.4 * 100% + 0.7 * 20% ) / 2 = 27%