JavaScript EditorFree JavaScript Editor     Ajax Editor 



Main Page
  Previous Section Next Section

Evaluation

The fuzzy control is very smooth. Only when the switch is pressed is the movement a bit jerky, but we would expect that because there's often a wall in the way. In some cases, the reaction times may seem a bit slow. For example, the animat can be a bit slow in looking up when climbing the first step of the ladder, or anticipating the arrival of the platform. We can fix this by adjusting the membership functions, generally using a translation modifier (for instance, so that DoM reaches 1 only half a second after the ladder is touched).

Practical Demo

The animat with these fuzzy abilities is known as Jacky. Jacky can climb ladders, open doors, and call elevators. Otherwise, the default behavior is reactive wandering. The source and fuzzy rules can be found on the web site at http://AiGameDev.com/.


The movement itself in relatively effective, because the animat does not seem to waste any particular time. In fact, after pressing the switch, the animat tends to head directly to the door/platform, using the shortest path. Indeed, the movement is very close to the wall, and animats take no step back at all. Telling the animat to step backward after the switch has been pressed would be possible, although this makes some other assumptions about the layout of the terrain.

This leads into the essence of the problem: The fuzzy interpreter is given direct control of the movement. This works fine in most cases, but some cases stand out because of the assumptions made by the rules. For example, animats struggle to go around obstacles between the button and the platform; they tend to bump into the wall and slide off it, or fall into holes when the opportunity arises.

Ideally, the output of the fuzzy system should be used as a higher-level suggestion to the movement behaviors already developed. For example, the heading would be taken as the heading for the seek behavior, but not overriding obstacle avoidance.

As for the fuzzy rules themselves, they are not particularly well-suited to modeling sequences of actions such as these. In a sequence, conditions can trigger transitions to the next action in the sequence. The interpreter needs to implicitly keep track of the position in the sequence. This doesn't show too much in the rules, except that we have to keep the rules as specific as possible. (For instance, avoid looking at the platform's button when aboard the platform.) A better approach to such low-level control would involve a fuzzy finite state machine; it does the same thing, but is conceptually easier to design. Fuzzy rules are instead well-suited to decision making rather than control (that is, finding answers to well-identified static problems, such as selecting the best weapon). Naturally, both approaches can be combined beautifully!

      Previous Section Next Section
    



    JavaScript EditorAjax Editor     JavaScript Editor