Week 06 homework - TEST environment

Sample solution.
Link to corresponding EVOLVE environment (right-click to open in new tab).

  due date: Tue Feb 21 by 9:00 PM
  email to: mcb419@gmail.com
  subject: hw06
  email contents:
    1) jsbin.com link to your EVOLVE code (not to this file)
    2) copy and paste your entire RESULTS TABLE into the email
    3) answer all the questions at the bottom of this page in the email
  

In this assignment you will evolve genetic controllers for a Braitenberg vehicle foraging for food pellets. The environment is similar to last week's, but with lights replaced by pellets. Note the following additional changes: (i) the boundary conditions are solid rather than wrapped, (ii) the bot can only "see" pellets that are in front of it, (iii) when a pellet is consumed it is regenerated in a new location (iv) the "intensity" of the pellets is 1000 (rather than 100), which allows genes values (motor gains and offsets) to remain in the range [-9, 9].

You will write your own GA code to evolve gene strings starting with the EVOLVE template code, which you will clone and modify as described in that file. Once your EVOLVE tool is working, you will use it to evolve gene strings and enter the best candidates into the "Genome" box below to further test their performance. The form of the 'genetic' controller is:


     motorL = gene[0] + gene[1]*sensorL + gene[2]*sensorR
     motorR = gene[3] + gene[4]*sensorL + gene[5]*sensorR
   
You therefore need to evolve gene strings consisting of six floating point numbers in the range [-9, 9] that optimize foraging performance. You will not need to modify anything in gaBot.js.

TEST Instructions

Results Table

*** After you are finished, copy-and-paste the entire Results table into the body of your email when you submit your assignment.***

Controller Genes Fitness
mean (std dev)

Questions

*** Answer the following questions in the body of your email when you submit your assignment.***

Based on an analysis of approximately 10 different evolved gene strings, what patterns do you observe?

  1. What are typical motor OFFSET values, genes[0] and genes[3], and what is the relationship between them? Are the left and right sides typically the same or different? What is your interpretation?
    The offsets are typically small positive values (2-4), with a small imbalance; the imbalance causes the bot to turn in a circle when it lacks sensor input.
  2. What are typical signs and magnitudes of the CROSSED connections (genes[2] and genes[4])?
    The crossed connections are typically large (5-8) positive values.
  3. What are typical signs and magnitudes of the UNCROSSED connections (genes[1] and genes[5])?
    The uncrossed connections are typically negative values, but show a broader range of magnitudes.
  4. How do the observed connection patterns in your evolved controllers relate to the classic Braitenberg patterns (aggressive, coward, love, explorer)? What is your interpretation?
    Crossed excitation and uncrossed inhibition reflect a combination of aggressive and love controllers.
  5. What is the typical best mean fitness value that you were able to obtain during testing? How does this compare to the performance of the omniscent ("omni") controller that always heads directly toward the nearest pellet at full speed (5 pixels/tick)? Why isn't the genetic search able to achieve this level of performance?
    Typical best mean performance for the genetic controller is around 124, whereas omni achieves around 245. The omni controller can turn instantaneously toward a new target and always moves at full speed, whereas the genetic controller spends more time orienting to each target and moves at a slower average velocity.