Procedural Art
This page will be updated with references to issues on computing that has been important to me in my work with RAD/RAM.

To start with, here is a good explanation of some fundamentals by Travis Cottreau:

Neural Networks: Hardware and/or software that works by modeling the workings of the brain. That is, you have nodes call neurons that fire and trigger other neurons that fire etc...The attraction to this type of system is that it can learn. For a given input, you arrange for the output to be observed (automatically or not - depends) and the system to be punished or rewarded depending on the output. After a certain learning period, the successful neural network has neural pathways "weighted" so that a given input generates the output you want. As control systems, neural networks have some limitations, namely stability. It is difficult to predict where a neural control system will fail or become unstable. Neural networks are however used in control systems and more and more in pattern recognition systems where they perform excellently. Note: neural networks have many more applications than this obviously....

Fuzzy Logic: Fuzzy logic gets its strength for the general way that it's implemented. In the end, you'll have a controller that is governed by a set of rules like: If input A is in the range NEAR ZERO and input B is in the range SMALL POSITIVE, then the output Z should be in the range SMALL NEGATIVE. It's kind of a lookup table type approach where all of your inputs and outputs are ranges of values. The ranges are given linguistic names (SMALL NEGATIVE, NEAR ZERO etc...) and your rules (called the rulebase - many rules like the single rule I gave above) govern what output you get given the inputs you receive.

Note: I've only given 1 type of rule syntax, there are several more. Also, I've said nothing about how inputs and outputs get changed into fuzzy values and back (fuzzification and defuzzification). Your inputs must be fuzzified, then applied to the rule base, then defuzzified into your output. Usually, after you've developed a fuzzy engine that does all of that for you, you mess with the fuzzy sets and the rulebase to tune your controller.

Genetic Algorithms: Uses the concepts of biological genetics and evolution do a very efficient search for an optimal or near-optimal solution to a problem. The key concepts in genetic algorithms are: the population of solutions, and the fitness criterion. You define a solution to a problem in terms that are represented by "genes". Often, this is a string of characters or a set of bits held by a variable in a program. You generate a population of solutions to your problem and apply them. After they have been applied, you can see how each of them has done with the problem by evaluating their fitness criterion. This is usually just a number that you've calculated that gives you a way to tell how each of the individuals has performed.

Once all the individuals have attempted the problem, and been evaluated, you take the "fittest" ones and use them to make the next generation. This is accomplished by some form of reproduction, mutation and inheritance that you define for going from one generation to the next. It was assumed, and is correct, that after several generations, the populations of solutions becomes better and better at "solving" the problem.

Hope that at least gives you a good idea of what these AI's are about. You could learn a lot from the FAQ from each of the news groups on neural networks, fuzzy logic and genetic algorithms. They are great sources of information and go into much more detail than I have here.

Travis Cottreau

© 1995 - - back