Monday, September 26, 2011

The Evolution Will Not Be Televised...

...but it will show up on your blogroll. CSCI 4560 (Evolutionary Computing) has been taking up a lot of my time lately. And it's been fairly kicking my butt. But I will persevere, and it will be well worth my time. Why? Because it could be instrumental in the final design of the pedal powered video game controller.

In case you don't know, the term "Evolutionary Computing" is a lot more like it sounds like than it sounds like. When I first heard about the class, I assumed it was either a history-like class, or dynamic programming of some sort. Most people I've told about the class think it must be something other than the obvious -- computing which mimics evolution and genetics. Think about it: If you need to solve a problem that involves a large number of variables and a complex goal, searching through the possible combinations can be a nearly impossible task. Even designers can be wrong about where to optimize.

But if you think of each variable as a "gene" which can have a range of values and think of an individual as the result of a combination of these variables, you can create a population of "individuals" which compete, breed, and mutate, and improve.

For example, if I were to design a bike and I wanted to maximize power output and minimize cost and weight, given various combinations of wheel size, materials used, resistance, etc., those various variables (genes) would make up the individual which is the bike, and the "fitness" of the bike could increase when power output increases and decrease when cost or weight increases. You can look for individuals within a given range or which break a record or... well, anything you want. This is a typical example of a "knapsack problem" (maximizing value while minimizing cost), which happen to be one of the prime uses for evolutionary computing.

Of course, more research is in order to determine where to start, but it's possible that this could design a controller which outputs power enough to rival other methods while being cheap enough to rival with other video game peripherals...

1 comment:

  1. Learning to optimize non-linear systems is probably one of the best skills you will ever invest in(regardless of the particular technique used). Simple gradient descent methods work well too. Another useful sill is using neural networks and the like for function approximation. They are all related. Also, sign up for my sensor networks course in the Spring if you are interested. We will be using the Arduino platform.

    ReplyDelete