ALife Independent Study
Links
Objective
The objective of this independent study is twofold:
- Implement the analog-based foraging system outlined by my final paper for I590.
- Investigate the HCI aspects of the analog computing paradigm
Implementation
(notes from Bryce, Dr. Mills go here)
Analog as HCI
2005.05.19
There is a definitive need for an analog abstraction language. What this language looks like is not entirely clear. However it is apparent that further work on the EAC is ultimately limited by the abstractions that exist within the paradigm. The state of analog is currently discussed in terms of currents and DACs. This is analogous to bitstrings or simple assembly in digital.
Working in analog is not about defining an algorithmic approximation to the problem. No, analog is an instantiation of the problme. Whereas a digital approach involves teasing out a (series of) partial differential equation(s) that approximate the problem, analog is defined in terms of features of the problem. Dr. Mills gave the example of plant growth: digitally, one tries to model this by defining an algorithmic approximation to growth rate. In digital, one works in terms of features: growth rates, photosynthesis, environmental reactions, and so on. How to capture this distinction in a "programming lanaguage?"
Programming in digital is well understood. This is not the case on the EAC. While the EAC (arguably) represents a more natural approach to complex problems, digital is entrenched. Analog is fundamentally massively parallel. Programming sequential just isn't appropriate. An EAC programming language should simultaneously abstract away from the details of the EAC (currents, nodes, DACs, etc) and support the naturalistic "problem setting" [Eli] model.
Genetic algorithms are fundamental to this process. Once the problem is sufficiently defined (inputs, outputs, fitness functions, and what I refer to as "environmental interaction"), the GA should be left to figure out the details. The bird's eye view is thus: you have a defined problem you are trying to capture on the EAC, the variables are encoded, and configurations are produced by the GA. These results are then farmed to an EAC for evaluation. Once an appropriate level of fitness is discovered, you have your EAC configuration and are ready to go.
I hope that my code will attempt to define abstractions away from the machine. Bryce suggests I look at hardware definition languages for clues as to how to approach the programmatic abstractions necessary for the analog paradigm. I would love to do something like this for my capstone. For now though, I need to focus on a strong ALife system with solid code that moves toward an abstract EAC environment.
Random Notes
- Ross Ashby's homeostat is an example of an ultrastable system (see the reference) and looks perfectly suitable to analog.