Thursday, September 10, 2009

no, i did not read this over before i posted it

I have reason to believe my first version of this program I am making will completely fail. Why??

Well this first version will be missing at least one key aspect of logic/math

mathematics within logic:
currently, the program may only consider a variable, and its relationship with another varible. not the variable minus 1 compared to the other variable, or the variable minus some other variable compared to a variable.... it's strictly variable to variable comparison. This is a problem because:
Imagine we're playing a 'game':
I give you three numbers, A, B, and C.
I want you to tell me whether or not A minus B is greater than C

the logic you would do is as follows
if(A-B > C)
Say "yes"
However my program cannot do that, it cannot subtract A-B and compare it to C

Now imagine you are intelectually limited to variable by variable comparison
There's no way to determine for certain whether or not A -B is greater than C, the closest you can get is:
if(A > B and A > C)
say "yes"
However, there are numerous counterexamples, so you would not be correct 100% of the time. (example A=5 C=2, B=2, 5-2 is not greater than 2)

What's the solution??
well.... I have half of an idea... I think i can do it... implementing it may turn my own head upsidedown

independent calculators:
These calculators will take multiple variables, they can be any particular variables that the neuron may decide, and do math ONLY with those numbers. Not any other input, just the variables given. However, how these will be implemented may be another story. I may find that each part of the if statement, I may need to make an object that is an independent calculator. Then the question may become-- should these independent calculators only be within the neuron, or should the entire brain have access to these calculators?

I think yes, with all neurons able to call on independent calculators, they may find that the calculators will become to represent rules in whichever game it is trying to learn. These rules may end up being used to solve different games it may try to learn.

Why is this so hard?????
first off, they are one more thing to mutate. I already have to mutate how the brain works, then how each neuron works, now I need to worry about mutating these guys.
The neuron also needs to recognize that these calculators exist, then mutate what they choose to put in the calculators.

Thursday, August 27, 2009

Ahh yes it is tommorrow

Okay, so assuming the first program works well, I will naturally want to make it better

What I have made with the little 'neurons' communicating will now come in handy. They are very flexible objects, they can make connections based on their own logic, and if the first project works, it will be able to do this really well for one game.

Now, what if I wanted my program to learn 2 different games?

The second step of this project will be to allow the program to learn 2 games, by re-using some of the same neurons!! This is something that to my understanding is something a genetic algorithm cant do. Can one genetic algorithm learn to play different games, yes, but they cant do it with the same gene! (again, to my understanding).

There is a challenge to this, all input is different for each game, and these neurons are only set in to take a specific input. The problem is, how does it assign variables to spots that are missing? Well, the program is going to need to mutate to find this out (for now). It will be able to call on a neuron that uses a different game's logic, and will assign it variables randomly. Further progressions would be to have a logic for assigning these variables.... how I am not sure yet but I do already have a few ideas.... which I will write about another time...

Wednesday, August 26, 2009

okay updates WILL come more frequently!!!

For the past few days I have been contemplating what my little program may be able to do, and how to improve it.

Here's the game plan
The first program I will write, will be able use logic and math combined to have a final outcome. The logic will be solid once the mutated being is created, this is not to say that it will react the same way in a given situation (as it may consider a random variable), but that it will always consider the same variables.

This program may be capable of creating logic in a algorithm differently than any way I have researched. There are different 'neurons' each with their own set of logic that is set to take in certain input, either from other 'neurons' or the input given. (all input is in form of numbers). This may allow a few neurons to concentrate on what strategy is best, it may also condense information to a more usable form before the initial processing. the condensing of information will allow faster processing, however the only way for me to ensure that this can happen is if i not only select which algorithms are best on the ability to solve the problem, but also its efficiency. Efficiency of algorithms does not seem to come in play in other methods of genetic algorithms, as they always have the same efficiency the way it is set up.

Tommorow... What I want the next program to be able to develope to.... much closer to something may be able to think like us...

I would like anybody reading this to keep in mind I am being very theoretical here-- really more like experimental with what the actual capabilities of the program will be. I am assuming if I give the program near infinite flexibility, as well as the ability to be selected on efficiency, it will evolve into something that can effectively solve multiple problems, just like we came about. If nothing else this will be fun, after all I am very young :-)

Tuesday, July 14, 2009

Since the last time

It has been a short while since I posted last, and as such I have a lot of changes to what I plan on doing.

My previous idea with the hierarchy of voting, has been nearly forgotten, maybe I'll try it out if this doesn't work.

However If my newer Idea works, it has the potential of not only beating people at one game, but many with the same algorithm

This idea does not only use math, but a heck of a lot more logic. For every piece of math done, there will be an option for a logical requirement to do that math... So it will work something like this

Each 'logic machine' will get an array of variables
vars[]
then a stream of logic and math will follow, this will be encoded somewhat, but just for the sake of making it easier to understand.

if(vars[1]>vars[0])
finalVar = 1 // could be subtracting, adding, multipliing, adding a variable

'finalVar' will be what the algorithm returns to whatever gave them the vars.
with this, things get interesting

the algorithms can give each other their calculations. How they do that is in my head and still needs perfection... and hey if this really ends up working out (on the off chance) I gotta keep part of it secret!!

Friday, June 26, 2009

This is fun!!!

I am very behind in ideas, So I will start with what I will be working on over the summer

My original genetic algorithm I wrote way before summer, had some sort of a mutating math algorithm trying to figure out where the right place is to go.

Most recently, I have realized it may not be the best to only have ONE math equation, but maybe an organized series, or even hierarchy of them... working as follows

A math equation at first is the only decider for the ultimate decision. But let's say it mutates and copies itself slightly off, and actually makes two deciders, so the decision chart looks as so.... (d, decision, m Math equation)

....d
.../ \
.m...m
Each math equation 'votes' to the final decision of where to move (each line in these charts will represent one vote). Iff (not a typo, iff = 'if and only if') there is a tie, the math equations will compare the priority they assigned their decision, and move as to who assigned highest priority (alrighty in my math equation)

Now needless to say, there could be any number of Math equations making one decision, but things get more complicated....

Now let's say one math equation on one part of the brain just cant assign its vote accuratly with only one equation (really just under random mutation....) it can split off as well, decision chart as follows

......d
..../....\
..m .....d
........../ \
........m...m
Hopefully, this will allow my little mutant math equations to express themselves better, and just make better decision, however my new laptop might die trying to do it......

Friday, June 19, 2009

full time job + programming = fun

So I have had time to think about a nice new fun idea, partially inspired by our own brain. I have been thinking about my mutation program, the one with a genetic algorithm where the little guys fight to the death to see who is better at a game of connect four. Well, their brains are unchallenged, they make one decision they are never torn. So, what if their brains were allowed to split into two mutating wonders, that would argue, or even 3. Sure they would not really completely argue, but rather vote as to which one they want to go to, and whichever one thinks louder (I swear there's math behind it, they use priority....) will decide the movement. I am interested how it will turn out.

Monday, June 15, 2009

Newest inspiration:
Tide wars: a (real life) game where one uses beach objects to try and protect one's fort against the tide's rage. When Creating a fence with two layers of sticks, spaced apart appropriately, One can fit big and small rocks and such in between. As the water moves along the rocks, the rocks that do not fit/ are too small, will eventually wash away, those that are not, will become wedged in just the right spot. What if a logic organism could develop that way?

Newest random idea:
Using binary genetic bits, the genetic bits should not only be mutated, but maybe the way that the organism interprets it's gene's could be mutated either while in life or the interpretation can be a genetic trait as well. Perhaps one could go deeper, and allow the organism to interpret differently with in it's life according to some algorithm that takes in positive/negative stimuli, and the way that stimuli effects the interpretation of gene is also mutated.

I realize I am stuck on mutating algorithms, I also realize I should find more, however for now I cannot get my own mind off of it, as it seems the best way humans could make something smarter than themselves without having to overcome any huge intelligence leaps.

Perhaps there is another more controllable way to deal with it, maybe it will use an integration of all sorts of methods, I want to map out or organize the methods and look at the pros/cons and just try to mix a couple and see how it turns out. ... I still want a mutating learning algorithm... just cant find a learning algorithm that isn't so straight forward.