NAME

GridWorld - an environment to run intelligent agents.


SYNOPSIS

  use GridWorld;
  my $grid = new GridWorld( xSize => 8, ySize => 8,
                            stuff => 'dirt', dirtFraction => 0.3);
  $grid->runVacuumAgent( verbose=>1 );


ABSTRACT

 An environment to run intelligent agents.


DESCRIPTION

Runs a simple AI vacuum cleaner ``agent'' in a checkerboard world with dirt on some of the squares.

Here's an example of an agent.

 # Input:  reference ($percepts->{key}=value) hash of perceptions.
 # Output: action taken (string)
 sub reflexAgent {
   my ($percept) = @_;
   return 'suck'                                        if $percept->{dirt};
   return (qw(turnLeft turnRight))[int(rand(2))] if $percept->{bump};
   return (qw( forward forward forward 
              turnRight turnLeft ))[ int(rand(5)) ];
 }

And here's an example of a ``performance measure'' used to evaluate the agent's performance.

 # Input:  reference ($result->{key}=value) of results of actions.
 # Output: numeric score for that result.
 sub performanceMeasure {
   my ($result) = @_;
   return 100 if $result->{suck};
   return -1  if $result->{move};
   return 0;
 }

References to both of these routines may be specified in the runVacuumAgent call. The key => value pairs which may be passed are

 runVacuumAgent( x => $startX, y => $start, 
                 direction   => $startDirection,
                 agent       => \&agentFunction, 
                 performance => \&performanceFunction,
                 verbose     => 'yes' (the default) or 'no'
               );

The directions are (left, right, up or down).

Actions are (forward, turnRight, turnLeft, suck, wait).

Results of actions, passed to the performanceMeasure function, are (suck, move).

EXPORT

None.


SEE ALSO

Artificial Intelligence: A Modern Approach, by Stuart Russel and Peter Norvig, chapter 2.


AUTHOR

Jim Mahoney, <mahoney@marlboro.edu


COPYRIGHT AND LICENSE

Copyright 2003 by Jim Mahoney

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.