Category Archives: Visualization

D3.js for Evolutionary Plotting: Animated Scatterplot

D3.js is a Javascript library that allows for data driven documents, according to the website http://d3js.org/.  You can find an astounding number of examples using D3.js covering a wide variety of topics.  However, when building the Evolve-a-Robot website, one of our central goals was to communicate the evolutionary process live.  This meant that rather than generate plots after evolution had completed, as is often the case for offline evolutionary experiments, we wanted instead to connect the live simulation of a robot with its performance in the population.

The initial scatterplot conveys the fitness of each individual in a population only after the simulation has concluded.

The initial scatterplot conveys the fitness of each individual in a population only after the simulation has concluded.

Continue reading

Escaping the Spreadsheet Mentality: Start with the Right Data Format

Growing up on a healthy diet of Microsoft Office products, I am well versed in Word, Excel and Powerpoint.  As I have transitioned into the research world, these products still have their place, however, I sometimes find that the habits I developed for organizing data doesn’t necessarily transfer to statistical analysis.  Recently, I ran into a situation where I was evaluating the performance of solutions in multiple different environments.  Organizing this data appeared straightforward to me at first, I would simply group the different environments into one row grouped by the id of the individual.  My data then looked something like this:

GenerationEnvironment 1Environment 2Environment 3
110.312.18.2
214.110.27.4
38.613.410.2
49.811.29.3

Continue reading

Artificial Neural Network bowl of spaghetti representation.

Adventures in Visualization: Understanding Artificial Neural Networks Pt. 1

In the field of evolutionary robotics, artificial neural networks (ANNs) are an intriguing control strategy attempting to replicate the functionality of natural brains.  These networks, essentially directed graphs, with the possibility for cycles, are comprised of nodes containing a mathematical function, connected by weighted edges.  Inputs are correlated with information that may be useful for a robot such as: orientation, speed, goal conditions, etc., which is then propagated through the edges and weights to arrive at a set of outputs to direct motor movements or sensor readings.  Unfortunately, the size and complexity of these networks can grow rapidly when anything but the most simple tasks are attempted, making these graphs very challenging to interpret what processes and information are being used by the ANN for controlling the robot. I’ll save the long description of ANNs, but for an idea of what they can do, the following video features an ANN to control a swimming robot in a simulated flow.

Continue reading

WebGL for Scientific Visualization

I plan to flesh this out into a full fledged blog post in the future.  For now, this page contains links that complement my presentation at the Visualization Workshop during BEACON Congress 2013.

First and foremost, what is WebGL and why should I use it?  In short, WebGL is a Javascript API for creating 2D and 3D graphics that runs in a modern Internet browser.  In lieu of creating a separate executable for multiple systems (Windows, OS X, Linux, Mobile), a single implementation can be created in Javascript and placed on a webpage.  Users can then access that site from any operating system and see the simulation without the headaches associated with trying to install packages on a system.

Conway's Game of Life

Coupled with supplementary code, WebGL can be used to create interactive demos or even present simulations directly in a web browser.  Conway’s Game of Life has been implemented many times in WebGL, but I have found this one to be particularly interesting.  Additional demos for games, simulations and scientific visualizations can be found at http://www.chromeexperiments.com/webgl/.  Disclaimer: Try not to spend too much time on the site!

Continue reading