Week 06 homework - TEST environment

  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?
  2. What are typical signs and magnitudes of the CROSSED connections (genes[2] and genes[4])?
  3. What are typical signs and magnitudes of the UNCROSSED connections (genes[1] and genes[5])?
  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?
  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?