ISIS
Information Science & Information Studies Program.

Computer Science
Visual Studies
72

CALENDAR
subject to change...

ALiCE:
Artificial Life,

Culture & Evolution

Simulations using Multiagent and Evolutionary Computation
Spring 2011

nick.gessler(at)duke.edu

Lab: Tu/Th 10:05 - 12:55
Perkins LINK Classroom "6"


 

Jean-Philippe Rennard's Introduction to Alife
fusebox
Alife Fusebox
Temple of Alife
evol
Rob Saunder's
GenArt Evol
genetic art
John Mount's
Genetic Art IV
And the signifieds butt heads with the signifiers,
and we all fall down slack-jawed to marvel at words!
While across the sky sheet the impossible birds,
In a steady, illiterate movement homewards.
Joanna Newsome,
"This Side of the Blue"
(2004 Drag City Records).

Classroom #6 Reservations Calendar

 
Tuesday
Thursday
 
Color Code:
Notes on days past.
Color Code:
Tentative agenda for days ahead.
 
Week 0

Parrot AR.Drone:
Movie 1

13 January

Introduction
Videos: Karl Sims' "Evolved Virtual Creatures" & " Panspermia"
Boston Dynamics' "Big Dog" and friends...

We jump right in to programming!
Programming Challenge 0: The Chaos Game / Saga of the Indecisive Travellers
Building an application from scratch.
Tool palette, object inspector, Forms, PaintBoxes.
Object properties and events.
We use MouseDown to establish the locations of the cities...

 
Week 1

18 January

Review of:
binary, hexadecimal and decimal numbering systems
bits and bytes
variable types, their characteristics and the space they occupy in memory
C++ language elements
functions

Programming Challenge 0: The Chaos Game / Saga of the Indecisive Travellers
The button on-click event calls the function run().
We create the run() function which contains the code for the half-way algorithm.
We place it inside a for-loop and run it up to 100000 iterations.
We add a reset button.

20 January

Programming Challenge 0: The Chaos Game / Saga of the Indecisive Travellers
Execution of the program constructs a topographic landscape.
How can we improve its visualization?
What is going on that we're not seeing? Color? Shading?
Sonification, for aural confirmation of user input, of program execution.
Will sonification improve our comprehension of the pattern?

Programming Quiz 0: The Chaos Game / Saga of the Indecisive Travellers DUE TUESDAY before class
At this time in our class, I need you to show me that you CAN build an Embarcader application from scratch. I went over this in class and also pointed out the web resource that details how to do it several times. I want you to write a small application that simulates the roll of a pair of dice and shows the sum of the two dice on the Form. You've been introduced to all the elements that you need in order to accomplish this, except for one. To get the result to appear on the screen, assuming that the variable sum contains the numeric sum of the two dice, go to the Tool Pallette and open the Standard set of tools. Pick the TEdit object and put it on the Form. Once your code has computed the sum, simply say:
Form1->Edit1->Text = sum;

Week 2

25 January

Programming Quiz 0: The Chaos Game / Saga of the Indecisive Travellers DUE TODAY before class
At this time in our class, I need you to show me that you CAN build an Embarcader application from scratch. I went over this in class and also pointed out the web resource that details how to do it several times. I want you to write a small application that simulates the roll of a pair of dice and shows the sum of the two dice on the Form. You've been introduced to all the elements that you need in order to accomplish this, except for one. To get the result to appear on the screen, assuming that the variable sum contains the numeric sum of the two dice, go to the Tool Pallette and open the Standard set of tools. Pick the TEdit object and put it on the Form. Once your code has computed the sum, simply say:
Form1->Edit1->Text = sum;

Programming Challenge 0: The Chaos Game / Saga of the Indecisive Travellers
Revisiting Images and Sounds.
Adding faux shadows and...
EEEE: Enhance, Experiment, Explore, Enjoy

27 January

Programming Challenge 0: The Chaos Game DUE TODAY!
Participant Presentations!

An introduction to Cellular Automata:
Mirek's Cellebration.

Programming Challenge 1: Cellular Automata / Conway's Game of Life
We begin building the GUI for Conway's GOL:
thisWorld[][], nextWorld[][] and initialize()

Discursive Challenge 0: Reality, Cellular Automata and the nature of "Other." Please post your initial response to the Discussion Board Forum by Tuesday, 1 February. Please also post discussion on someone else's post and rebuttals to discussions on your own. The discussions and rebuttals may continue throughout next week. You may wish to watch DARK CITY and/or THIRTEENTH FLOOR.

Week 3

1 February

In-class exercise: Reality check #0: Everyone gets an "A" for taking part, so please don't worry and please don't study.

Programming Challenge 1: Cellular Automata / Conway's Game of Life
We continue building the GUI:
showThisWorld(), OnMouseDown()
Implementing parallel (cinematic) time; implementing toroidal cellular space.
Implementing the rules: computeNextWorld() and the functions it relies upon.
Speeding things up: renderChanges()

This challenge includes experimenting on this world.
Specifically, I want you to characterize the ecology and ethology of the creatures in the GOL:
What is the relative proportion of different creatures spontaneously created from a random world?
How do they behave when single neighboring cells change state? What is the nature of each of those creatures?.
Yes, I want you to include this information in the papers you hand in.

3 February

Classroom #6 Reservations Calendar
Discursive Challenge 0:
Will close Friday, 4 February, midnight.

Discursive Challenge 1: Will close Friday, 11 February, midnight.

Programming Challenge 1: Cellular Automata / Conway's Game of Life
The objects ("creatures") in the GOL are not described in the "code," but come into "being" only as the code is run. This is the canonical example of "emergence." Are the "objects" in our world equally emergent? These are some of the issues explored by Fredkin and Wolfram.

Is there any limit to the processes we can build in a GOL world? How about a "computer" that counts out decimal digits? A computer (counter) running on a computer (GOL) running on a computer (PC) running on a computer (the "Other")?

As the GOL becomes stable and calm, are its objects static? Or are they in a dynamic process of continual re-creation? Does the GOL have any epistemological significance, any relevance to knowing our own world?

Cleaning things up with OnPaint
Adding an icon using PhotoShop and IconEdit32

Remember the beginning world so we can replay it
We might want to save the world's state: saveStuff() and openStuff()

Discursive Challenge 1: New Discussion Forum / Exploring Realities with Google Earth
This will be a shared mini research project. I will give you two latitudes and longitudes.
You tell me what is significant about them culturally and what that has to do with physically intermediated cultural cognition, simulation and re-presentation.

Week 4

8 February

Programming Challenge 1: Cellular Automata / Conway's Game of Life
We continue with enhancements.
Importing other creatures from the Web
Slow it down with Sleep() and a TrackBar

What visualizations or other tweaks might help us explore Conway's world?
Some explorations on our simulations pages...
Change the rules...
What else?

10 February

Programming Challenge 1: Cellular Automata / Conway's Game of Life
In-class work on Conway's Game of Life...
Remember the four "E"s...
Explore: Familiarize yourself with this world. As an ethologist or anthropologist or epistemologist, how would you characterize it? What does it's behavior tell us about emergence, about reality as we perceive it?
Experiment: Once you know this world, run it through various "what-if" scenarios? What are the "laws" and regularities that characterize its outward appearance? What if you "tune" the world? Then what?
Enhance: Tweak the application. How can you more effectively visualize the regularities? Tweak the rules. Modify them slightly or radically. Why do certain sets of rules do what they do? Do some allow replication of user designed initial states? Why?
Enjoy: Improve the aesthetics of the rules and/or application to your taste...

Week 5

15 February

Programming Challenge 1: Cellular Automata / Conway's Game of Life
Due today. Participant presentations.

Programming Challenge 2: Evolutionary Computation / ECT (TSP) Shortest Path
Introduction to (co)evolution: inheritance with variation / natural & artificial selection.
In the realworld, fitness landscapes have many dimensions but we visualize them as 2d.
Varieties of 2d fitness landscapes (changing seascape, rugged, smooth, precipitous).

Short "Take-home quiz" due Thursday at the beginning of class.
Knowing the representations currently in the ECT and knowing C++ representations, what could we do to complexify the "shortest-path" problem? Please work out three (3) ideas in writing, in English and in pseudocode as close to actual code as possible. "Blue sky" ideas are OK as long as you can tell us how to implement them in code. This should be hardcopy, not hand-written..

17 February

Short "Take-home quiz" due at the beginning of class today.
Let's hear ideas from everyone.

Programming Challenge 2: Evolutionary Computation / ECT (TSP) Shortest Path
The code behind the application...

Week 6

22 February

Let's hear some more ideas on how to tweak the ECT.
"Sweet spots" in the code:
Border Crossing - lines 586-744.
Additional Constraints - lines 817-883.
Sort for shortest path - lines 483ff.
Sort for longest path - lines 510ff.

Ensuring that your applications will run on any PC:
Make sure your reject the three RunTime options. Introduction to Embarcadero.

24 February
Week 7
1 March

3 March

Programming Challenge 2: Evolutionary Computation
Participant presentations.

Challenge #3: Introduction to Segregation/Assimilation.

Week 8

8 March

Spring Break

10 March

Spring Break

Week 9

15 March

Challenge #3: Introduction to Segregation/Assimilation.
A view from the outside: the user's perspective...

We work on two new rule challenges:
Contrasting preference versus prejudice.
Introducing delays into a chase: C > M > Y > S > C...

To hand in on Thursday:
Why does the Prejudice rule result in segregated groups separated by empty areas that are only one unit (pixel) in width?

17 March

Challenge #3: Introduction to Segregation/Assimilation.

A view from the inside: the programmer's perspective...
Cheat-sheet on what the agents can do to Sense, Think and Act,
a list of important functions and variables...


Version #24 has the following rules implemented:

A preliminary analysis of experiments studying the difference in outcomes between:
Natural language definitions of preference and prejudice are vague and non-specific.
We can adopt these definitions in our code:
Preference
: seek neighbors like me (English)
if (neighborsLikeMe@Destination > neighborsLikeMe@Home) then move (Pseudocode)
Prejudice: flee neighbors unlike me (English)
if (neighborsUnlikeMe@Destination < neighborsUnlikeMe@Home) then move (Pseudocode)
Is there a difference in outcome? YES. Some general observations:
Empty space distributes itself as a lattice or mesh that is only one pixel thick surrounding cells consisting of clusters of agents of a single type. The less empty space, the fewer cells in that mesh or lattice. The more empty space, the more cells, until the clusters of agents are reduced to single individuals.
With two agent types the clusters of agent types form snake-like stripes.

Chase with delays. There is something happening here but it is difficult to see in the present visualization. Can you establish some specific initial conditions and/or visualizations which will make the outcome more apparent?
One solution: Create a scattering of C at the top, grading into a scattering of more M just below, grading into more Y below the M, and so on... The agents should migrate down and get congested at the bottom.
Another solution: Change the application to allow you to visuall track the movement of one individual, maybe allowing the user to place an individual of their choosing somewhere in the world, maybe enlarging a portion of the world to make tracking that agent easier.

Week 10

22 March

Note:
Insert the statement: myType = newType;
after the statement
world[hE][hS].type = newType;
(circa line 743)
in the
void changeMeTo (int newType) function.
Each time a Case: is executed, make sure that there is only one execution of:
a single
moveAndRender(), or
a single
changeMeTo(), or
a single
changeMeTo() then moveAndRender() pair, in that order.

Challenge #3: Segregation/Assimilation.
Class time to work on project...

24 March

We will have visitors today plus a film crew..

  • Prospective Duke students from the Black Students Alliance Initiative...
  • Uki Deane and Daniel Aum, Duke students, selected by the office of public affairs and government relations to produce a Duke University Commercial.

Challenge #3: Segregation/Assimilation due today.
Participant presentations.

Challenge #4: Introduction to Flocking (Herding, Schooling, Crowd Behvior)

Week 11

29 March

Challenge #4: Flocking (Herding, Schooling, Crowd Behvior)

31 March

A "heads-up" from an ISIS-135 student: A Cryptographic challenge from the FBI...

A technical to-do list for Flocking Images:
Use smaller images / Expand the playing field / Introduce more agent sub-variables...
Improve the 3d path visualizations by implementing Red + Cyan makes White.
Connect the dots in the path array visualizations.
Expand to fullScreen and autoRun (but there will be a problem expanding the path arrays).

A technical to-do list for Flocking Polygons:
New functions in the agentClass: setVelocity(), getVelocity(), setDirection(), getDirection().
New sub-variables for the agentClass: acquire(), divest(), memories...
New visualization of agents: uniform size vs. size as f(velocity).
New variant of existing rule: e.g. adopt a portion of NN's velocity and direction.
New coloring routine: color by iteration.

Challenge #4: Flocking (Herding, Schooling, Crowd Behvior)

Week 12
5 April

Challenge #4: Flocking (Herding, Schooling, Crowd Behvior) due today.
Participant presentations.

Challenge #5: Introduction to Sensors & Actuators

7 April

Challenge #5: Sensors & Actuators

 

Week 13

12 April

Challenge #5: Sensors & Actuators

14 April

Challenge #5: Sensors & Actuators

Week 14

19 April

Challenge #5: Sensors & Actuators due today.
Participant presentations.

21 April

Class time to finish up Course Projects.

Week 15

26 April

Course Projects due today.
Participant presentations.

Have a great Summer...
No Final
No Final No Final