Thursday, April 21, 2011

Coding Again

Writing Code for Animal

I'm programming again. Yesterday, I dusted off the last incarnation of Animal, my intelligent computer chess project, and fired up Visual C# for Windows. Not surprisingly, it's taking me a little time to readjust to C#, Microsoft's .net environment and, of course, my old code. I chose C# because it is a better and faster C++ type language, and I am good with C++. I picked the Microsoft XNA Game Studio environment because it will make Animal compatible with three computing platforms: Windows, Xbox 360 and Windows Phone. Converting it afterwards to run on Apple's IPad or an Android device should not be too hard.

Using my much improved understanding of the brain as a guide, I have already decided to delete several old memory classes from the project. First of all, I need to design a brand new tree of knowledge, including both leaf and branch nodes and various auxiliary classes. I will also need a new pain and pleasure module and I will have to modify the motor layer for faster motor learning and better motor coordination. Finally, I need to debug the load and save module. It's all slow going (I don't have much spare time) but I've learned to be patient over the years.

I'll let you know how I'm progressing. Hang in there.

2 comments:

jeanpaul said...

Hi Louis,

Any updates?

kind regards
JP

Louis Savain said...

jeanpaul:

Any updates?

Thanks for writing. Well, I redesigned Animal's tree of knowledge, the node classes and the temporal learning algorithm for the nodes. This seems to work OK. I am now working on implementing the attention/recognition mechanism.

Attention and recognition are essentially two sides of the same coin. They are not easy to implement because they depend on several factors. First off, a branch in the tree must wake up, i.e., become active; this is what happens when we pay attention to something. This normally happens when enough related low-level sensory inputs fire. This causes higher level nodes to wake up and these, in turn, may cause an entire branch to wake up. An active branch temporarily inhibits all other branches to prevent multiple branches from waking up simultaneously: we can only pay attention to one thing at a time. A branch can only stay active for a little while. About 12 seconds after awakening, it must fall back to sleep in order to give another branch a chance to wake up and do its thing. If that did not happen, the system would develop characteristics similar to autism.

Every branch must also have a motivational value (positive or negative) that it gets from previous experience. A branch with a high motivational value has a better chance of waking up than one with a lower value.

Once a branch is awake, another module must decide whether or not to generate appropriate motor behavior based on the sensory inputs. This, too, depends on the motivational values of the various branches and the sub-branches. Not all sub-branches can generate motor output simultaneously because that would generate motor conflicts. It does get a little complicated.

As you can see, I have my hands full with stuff to do. But it gets worse. I am again preoccupied with a lawsuit I have filed against the owner of the building where I live. I am also busy with preparations for another lawsuit that I intend to file soon against a crooked court commissioner and a couple of crooked attorneys regarding a wrongful eviction lawsuit that was filed against me last year. Needless to say, this is taking a good chunk of my time. So my progress with Animal is going to be slow going for the foreseeable future. Stay tuned.