WOW... this is very interesting. I can see several possible applications in the Manufacturing Scheduling area: find the least cost path through a matrix of items where the "cans" are the cost in time to move from one item to another.... these procedures are a good place to start...

IF North is empty and South is empty and East is empty and West is empty and there's a can on the current position THEN pick up canELSEIF North is empty and South is empty and East is empty and West has a can and there's a can on the current position THEN pick up canELSEIF North is empty and South is empty and East is empty and West has a wall and there's a can on the current position THEN move South

To work out how it applies to the grid - pick a square, see want adjacent and on the current square and find the rule that matches (though when there are more than one matching rules it would depend on bit of dna created that rule)

starting at top left as indicated by articleLine 1: instruction is not to move and pick up the canLine 2: Move 1 square to west and pick up can (however you would hit the wall)Line 3: Move an additional 2 squares to west and leave can (you would hit wall again)

I am unsure what the A score represents.

Somehow, I would have expected to be able to read the route the robot is going to take, based on prior leanings. Where am I going wrong?

I'm so happy everyone is finding this article potentially useful. I apologize for "hiding" the rules table as a math formula instead of implementing it as a real table but the code runs twice as fast this way. It is important to remember the robot has no memory about previous moves; it only knows what adjacent squares look like now and makes a preprogrammed dna decision on what to do based on this current view. I could add some random walls in the grid and the robot would adapt and still perform very well.