Friday, 15 January 2010

The Brain of Gmod

This is something I'm working on at the moment, it's not finished and mostly I'm still figuring out how to do it.

Basically, a bunch of chips (Or, if I sort out the data storage issues, one or two with loops) talk to a master chip. The master chip takes queries from an outside source like a drone and asks the other chips, based on the available and appropriate variables, whether the suggested course of action should be undertaken.
The chips roll a random number and plus/minus an altering number from an archive of actions it has already done, the master chip collects all these yes/no votes and tells the drone whether or not to do it.
If the action does well for the drone or makes it trip into harm, the appropriate good/bad signal is sent from the master chip and each of the other chips adds/subtracts from it's archived altering number for that scenario.

What this means essentially is that the bunch of chips each have a random possibility of giving the right or wrong response, modified by whether such an action has been successful in the past. I'm calling it an artificial neural network as far as I can personally achieve but it's more like a democratic vote on what the drone should do.

The end result either way is that the brain favours actions that are successful and downplays actions that result in harm, but is still able to take an unforeseen path. Downside here is that to cover the general gist of scenarios takes a while for the drone to encounter them, meaning the brain takes a lot of time to learn the basics and such before it moves on to other things.

Problems:
  • Do I have a set selection of possible actions, or do I leave it freeform somehow and make the brain able to work with almost anything?
  • Do I break the different scenarios into types (Such as motion, targetting, and homeostasis) or have every scenario be considered by all the neurons?
  • With the sheer number of scenarios in a decently complex system, the number of possible combinations the different variables can achieve means the archive storage space quickly becomes massive and untenable. Expression 2s simply don't have the space to take such a mass.

So my biggest concern is cutting down the combinations so that the chips can actually handle it. I keep thinking in terms of using an array of GLON strings, so I can GLON encode a large table and store it in the array, then decode it temporarily and check if the scenario is stored there.

No comments:

Post a Comment