All sensory input is input even if it is visual, taste, smell, or feeling. The key might be (if you are randomly generated their brains) to give them a standard interface to one or more sensory devices.
Through evolution or pure chance (random generation alone) you can expect that one will happen to start using the interface correctly. Even though it has no conscious thought about what it is doing.
A example of a interface might be using some of the robot's brain memory to map a interface too. Such that the vision sensor array might be located at 0x0 to 0x7. Where it sees squares above, behind, left, right, and the diagonal squares.
If the algorithmic and logical representation potential is high enough using this language you have that is interpreted -- and randomly generating the brain of each robot -- while never repeating a sequence (as will happen when using
rand() with the Std. C Library) -- then at some point the robot should form the necessary logic to actually interpret objects and act accordingly.
If you split the brain regions you might be able to treat each region as a gene and during the fostering of a child robot you can simply have certain sex A dominate genes and vice-versa for sex B to model evolution similar to ours.
You might be thinking, "That will never work...". I mean it would just mix the brains,
right? No And Yes. Hopefully you will start having generated brain sequences that are capable of mating, and are capable of passing genes to the offspring that do not leave you with a mentally challenged robot -- although the parents operated at a optimal level. On the no part I mean that a brain will need to be generated that is capable of holding a structure that supports this evolution using genes like model. If done incorrectly via using too small of divisions of the brain for genes you could in turn just end up scrambling the brains and never producing anything interesting, because the algorithmic and logical total potential has a proportional relationship to the size of the chunk that is set to be a certain gene.
Where your language's algorithmic and logical potential is
L, the size of the chunk is
S, and
T is the total. You get:
LS=P.
The link below is a random number generated I wrote a few days ago and have not tested. I have been having rough work days and not messed with it. You might grasp my idea by looking at the code (which is short). Never the less I need it in a project and it is a very similar project.
Pseudo Random Non-Repeating Number Generator
Code: Select all
cPrNrNg MyNumberGenerator(ROBOT_BRAIN_BYTECOUNT);
uint8_t RobotBrainExample(ROBOT_BRAIN_BYTECOUNT);
// fill robot brain
for(uint32_t x = 0; x < ROBOT_BRAIN_BYTECOUNT; ++x)
{
RobotBrainExample[x] = MyNumberGenerator.Next8();
}
// generate another sequence of pseudo random numbers
MyNumberGenerator.NextState();
The problem is you will never generate the same robot twice and the conditions in which you generate a potentially great robot might otherwise destroy this robot (just a bad situation in the world or such). But, you should generate more than one good robot so I figure the benefits out weight the risks possibly.
You might also have the realize that cycling through the entire sequence of a two-hundred-fifty byte sequence of numbers will take a very long time. So hopefully if done correctly with a little luck you might be able to generate a robot that does something interesting at the least and I think will do something really neat if done correctly.
A (not sure if it is the best) way to allow robot to recognize other robots is to represent them in the visual array as different values. You could deduce these values by taking a sample of the robot's brain. You might average all the values together to produce a single value then shift this to the right to allow room in each byte of the visual array for other objects such as a wall, food, or anything else.
And if you guys want to search this up on Google -- I am sorry, but I have never found it myself.