First of all, what do we call intelligence when talking about algorithms? Well, if we have an algorithm that is able to forecast when it is going to rain and when it will be sunny, we might call that intelligent, but it depends on some other variable, the time and effort it took for it to get those results. Thus the faster and lower number of variables our algorithm needs to return the same or even better results, the more intelligent it is.
That is a rule of thumb, but how do we do that?
Well, many scientists say "Copy nature", and that is indeed a good solution, because nature knows how to do really well optimized algorithms. I'll take simple animals to explain this, for example the ants. If we were to program ants, we would say it is too hard, but are we sure?
How nature did them was by "programming" the simplest possible set of rules (Apart from the moving/eating/basic functions), which put together create the complex societies we see them live in.
Say we want to program ourselves an animal, and we want it to always be safe. Then, instead of programming complex recognition software, or advanced algorithms that determine the surroundings, why don't we try nature's approach, the simplistic approach?
Of course we need to build some "complex" systems, for understanding certain objects, lighting conditions, wet/dry states… Now, we give its algorithms a set of rules, to call them somehow:
First, don't run out of battery. So it has to learn how to plug itself, or any other charging method right?
Second, escape from moving objects.
Third, shade is safer.
Another requirement is that we give the robot the ability to store information, so it can learn what places are better and which ones are not. Now if we set it to "on" and watch what happens, the robot will cautiously start moving toward safer environments, and whenever battery runs lower, it will leave the safe place to look for a plug.
This sounds ok right? Now from this base we could start building better intelligence, but the base is this. We need something basic, some sort of default behavior.
If I have time I will build a java applet or something of the sort to test this out,