Spark! Features

NOTE: This page contains screen shots... please be patient while it loads!


Here are just some of Spark!'s features:
 
 

Flexible Membership Functions


Spark! allows you to use four different membership functions:

  

Triangle


 

The triangle is the most common membership function used in fuzzy logic.  It consists of 3 nodes.
 
Back to top
 

Trapezoid


 

The trapezoid membership function consists of 4 nodes.
 
Back to top
 

S Curve


 

 

The 'S' Curve membership function is the only one that allows you to modify the 'y' value of the nodes (note: the first and last node's 'y' values cannot be changed, they must remain at zero).  The only restriction on the 'S' Curve's nodes is that they cannot cross, this restriction is enforced by Spark!.

You can make almosts any curve you can imagine as shown below.
 

Back to top
 

Singleton


 

The singleton membership function is a special case for fuzzy logic.  It represents a discrete value.  It is a "non-fuzzy" membership function.  This is used when a discrete choice is needed - such as if your logic is based on the "type of car".  Values could be: Ford, Chevrolet, Toyota and Buick there really is not an "in between" state.
Back to top
 

Easy Rule Creation


Creating fuzzy logic rules has never been easier.  No need to deal with long and confusing spreadsheet type interfaces or error prone 'C' code.  Simply click on the variable terms and the output and you're done!

The "bolded" lines are the currently active rules.  You can easily see the "activation level" of each term on the meter below each term's button.  This allows you to see exactly what rules are firing while debugging.


You can see the other rules - unbolded - in the background.  As you may imagine things could get confusing with a large number of terms and/or variables.  To help out the buttons can be moved to make the "wiring" less confusing.  Another feature that eliminates confusion is that when you press a button the "wires" from that button are highlighted.  This helps you focus on the rule your building and also clearly shows what rules already exist involving the button pressed.

 


Simple Integration


Spark! integrates into your code through a simple API. Multiple "objects" can share the same Spark! model. Once integrated, you can run your code and watch the ai “in action”.  Any changes you make in Spark! will instantly be seen in your game!

 


Real-Time Graphical Debugging


Once a Spark! model is integrated into your application, you can modify the model in REAL TIME without having to recompile!  

Click here to see a screen shot of the Beta version of Spark! in action!  The following is a play-by-play of what's going on... 

The screen shot shows an entire fuzzy logic model in Spark!  The model is simple and helps determine the "aggressiveness" level of a unit in a game.

The window on the top right is the "Our Health" variable.  It has 3 sets:  "Near death", "Good", and "Excellent".  Our health is currently "good", but also has a little of the "Excellent" component.  

Our enemy (upper middle) has both "Good" and "Near Death" components to his health.

The window in the bottom left is the "Aggressiveness" variable - this is the output of the fuzzy system.  It rates the aggressiveness as either "Run Away", "Fight Defensively", or "All out attack!".  With the rules for this system, the output is "Fight Defensively".

Note that the output variable uses singleton variables, as we want a discreet output from the system.

Finally, in the bottom right we have the rule view.  The bolded lines show the currently active rules and the gray bars below each term show that term's "activation level".

As you are running your application you will see the model change to reflect it's current state.  The rule view displays the currently active rules and the input variable views show the activation levels of the variables and the output variable view shows the result of the input and the rules.

 

 

 


Home | Mission | Spark! Fuzzy Logic Editor | Mailing List | Downloads | Around The Web | Privacy Policy


Copyright © 2005 Louder Than A Bomb! Software

Comments, Questions, or Problems?  Contact Our webmaster

Updated: September 28, 2005