JavaScript EditorFree JavaScript Editor     Ajax Editor 

Main Page
  Previous Section Next Section

Retrospective Overview

Let's recap the important observations made throughout this part.


Fuzzy logic represents facts in an extremely intuitive way using degrees of membership. Fuzzy expert systems are particularly suited to deductive reasoning, determining new facts from a set of statements in a surprisingly humanlike fashion. Fuzzy rules can also be used to provide smooth control, but this requires a few precautions to handle correctly; indeed, long sequences can be confusing to describe with consistent rules.

On the downside, fuzzy expert systems require all the rules to be processed at each step, which can be relatively costly. Combinatorial explosions can often be avoided in practice by representing the knowledge in an implicit fashion, regrouping and simplifying rules as appropriate.

As for genetic algorithms, they are an extremely powerful optimization paradigm that can be applied to almost any problem. They are powerful at finding near globally optimal solutions.

Genetic algorithms rely on a good representation of the solution they are optimizing. So the evolutionary technique is only a small part of the development. Very often, custom encoding/decoding methods need to be created. Alternatively, phenotype-specific genetic operators are required.

On the downside, genetic algorithms suffer from one of their essential concepts: the fitness function. They can be very easy to set up with simple criteria (for instance, efficient), but prove challenging to adjust for more complex behaviors (for instance, realistic). This is because of the implicit, high-level form of control and the particularly slow optimization that makes incremental tweaking a nightmare. It's particularly difficult to prevent unintended loopholes, although it can be entertaining to watch.

These shortcomings apply to all techniques based on fitness values, and not particularly to genetic algorithms. The solution is to lower the level of control back down to supervised learning as much as possible, expressing the fitness in terms of specific situations and actions.

Learning classifier systems is a great example of how to apply genetic algorithms within simple architectures. As a matter of fact, learning classifier systems is an extremely efficient technique for adaptation, and even optimization. The representation of individual classifiers has the advantage of being quite expressive, so they are easy to understand at a glance. That said, modifying the binary representation to include arbitrary symbols is more useful in practice.


We developed a variety of behaviors together, either using handcrafted rules or learned sequences. In many cases, these approaches could be swapped—for example, learning the more complex behaviors such as using doors. Only a decent environment is necessary, making it easy for the animat to learn (that is, shaping the behaviors using customized game levels). Conversely, it would be fairly easy to develop arbitrary behaviors using fuzzy logic.

Most of the behaviors based on fuzzy logic are very satisfactory, providing smooth control and effective movement. Some behaviors don't rely on existing lower-level behaviors, and fail because of invalid assumptions (for instance, walls between the button and the door). To keep up the effectiveness and realism of the behaviors, they must reuse the existing capabilities.

As for dodging, the behavior is surprisingly successful despite the simple model of weighted suggestion vectors. This is a good example of providing expert-designed features to assist the learning algorithm. That said, there are some issues of suboptimal policies in some cases, but generally, they are equally as effective as humans.

As for rocket jumping, it seems like a circus act. The behavior has no purpose until analysis of the terrain reveals that a rocket jump is necessary. This is performed by a higher-level AI, and is practically never suggested. In fact, this is a tremendous example of a behavior that would benefit from broadcasting of affordance signals; items that require a rocket jump would broadcast that fact to the animats capable of doing so, saving them the computationally expensive effort of analyzing the situation.

      Previous Section Next Section

    JavaScript EditorAjax Editor     JavaScript Editor