My approach to Artificial Intelligence

Neural Networks are not going to work until we understand how the brain works. We know that neurons transmit signals, and that depending on how they are interconnected they cause our bodies to do different tasks.

However, that is the extent of our understanding of the entire system. Some scientists have proposed that our actions are the result of random firing of neurons in the brain, along with the interpretation of sensory input. In other words, they believe us to be a pattern-matching machine that has its state influenced by a random number generator. I’m pretty certain that is incorrect, but it would take me having a P.H.D in Artificial Intelligence before anyone in the scientific community would recognize my work.

So instead of getting myself a P.H.D., I am going to do an experiment like any good scientist would. Instead of trying to mimic the brain and how it works, or trying to mimic the psyche, I am going to start from scratch. I am going to build an virtual machine and pump into it a whole bunch of entities, each of which is composed of randomly generated code. Those entities that run without crashing will be selected to move to the next round, and any “dead” entities will be replaced with newly generated ones. This will continue until I have at least 100 entities that do not crash.

Once the main pool of entities is established, the entities will be paired up. Each pairing will produce 1 to 4 child entities that are composed of sections of the parents code. Each child will have up to 100 chances during generation to receive a mutation in their code, though the chances of a mutation happening will be quite small. A mutation is the flipping of a single bit in the code.

Any child entities that crash will be considered dead and not used in the creation of the next generation.

All of the original entities will have their code saved. For child entities, references to their parents’ code will be stored, along with any mutations that took place.

Penalties will be placed on entities that have excessive amounts of unreachable code. They will have a lesser chance of being selected for the creation of child entities. What the definition of excessive code is I do not know yet, but I will need to implement it to keep code bloat down.

I’m still working out all of the details, so any of this should be considered preliminary. Wish me luck!

Back in the Game

Well, school is finally out for the semester. I finally have time to start posting again!

Currently I am working on a proof-of-concept for an objective-c implementation of Minecraft, both client and server, that runs faster and more efficiently than the original, and implements a dynamic plugin interface along with some other things. Hopefully by the end of this month I will have something to showcase on youtube.

OpenCL and the Adapteva Supercomputer

Recently I was browsing Hackaday¬†and ran across an article about a deveopment board sporting a coprocessor touting 16 to 64 cores. It’s a kickstarter project by Adapteva, and they are trying to reach $750,000. They are trying to raise this money so that they can provide the boards and chips for around $99.

The $99 dollar reward for the kickstarter is a 16-core board, and the $199 is two 16-core boards, or if they reach their stretch goal, a 64-core board. Their stretch goal is three million dollars.

I love the idea of programming in parallel, and I really love the idea of computers being designed for parallel computing. So I am starting to teach myself OpenCL to prepare for the board that I am getting for my support.

Boredom Induced Node-ing

I have been taking a break from my kernel. After a while of being the only developer on a project, I have to let my mind take a break from it so I can work on all of the other things I have going.

And so I got bored because I couldn’t decide which one I should do. Kinda stank like the inside of a Tauntaun.

So I looked into nodeJS. And I started writing a fully javascript web server that renders dynamic pages with javascript. No static pages, though I plan on making it possible to use HTML directly in it. I think it’s kind of cool. If I get it to the point of initial testing soon, I will put it up on GitHub or Sourceforge.

Needless to say, I am no longer bored.