|
|
Main /
ShortProject1DescriptionCSCS 530 Project #1 DescriptionDue date: Feb 24 ** DO NOT wait for the LAST MOMENT ** The basic goal is to take a written description of a simple model and implement it in Repast, running experiments as you go, to see if/how the behavior in the original description can be (qualitatively) replicated. You will work in groups of 2 students. In particular, you are to create a Repast program that implements the ants and their food gathering behavior as described below The program should be documented internally and there should be a Readme.txt that describes how to run it, including some example runs (including parameter values to reproduce them) and some notes on the behaviour one should see for those typical and/or "interesting" cases. There should be some measures that could be used to compare to the original program (if it had similar measures) quantitatively (in addition to "qualitative" similarity of system behavior). Documentation of the program (conceptual and implementation), how to run it, and what experiments you ran and observations made will be important. Thus document the program and keep good notes! Remember: You want your documentation to make it easy for others to:
and in general make it easy to
Note grades will be based only slightly on whether you actually got it to replicate the originally described behavior (although you should try hard to get it to "work"). More important will be your justification for the approach you tried, how you programmed and documented it, both for understanding and using it. Also important is the notes you keep as you implement your first ideas, run experiments, add/change things, etc. Also note these Project1-Requirements You may want to put your notes and documentation on pages you create on the course wiki, under this page: The password for editing will be given out in class (or ask me). Put commands and notes for your demo on Feb 24th on this project #1 demos page. From the netlogo description: (PLEASE DO NOT LOOK AT NETLOGO PROGRAM) ----------------------------- In this project, a colony of ants forages for food. Each ant follows a set of simple rules, but the colony as a whole acts in a sophisticated way. There is a "central" nest, and three piles of food, one closer to the east, one farther to the sw, and one farther still to the nw. When an ant finds a piece of food, it carries the food back to the nest, dropping a chemical as it moves. When other ants "sniff" the chemical, they follow the chemical toward the food. As more ants carry food to the nest, they reinforce the chemical trail. The ant colony generally exploits the food source in order, starting with the food closest to the nest, and finishing with the food most distant from the nest. It is more difficult for the ants to form a stable trail to the more distant food, since the chemical trail has more time to evaporate and diffuse before being reinforced. Once the colony finishes collecting the closest food, the chemical trail to that food naturally disappears, freeing up ants to help collect the other food sources. The more distant food sources require a larger "critical number" of ants to form a stable trail. You may run the netlogo program as follows: netlogo &
Then select File->ModelsLibrary, expand Biology, and select Ants, and Open .
Click on Setup, then Go.
(Your ants don't have to look like cartoon ants!) I suggest you spend some time first sketching out some ideas at a "conceptual level" --- see the notes at the bottom of this page for some general guidance about designing an ABM. For this model, you will in effect have available some classes--think of them as "building blocks" --- that provide:
Given those building blocks, consider what each Ant should do when its given its chance to act each "time step," given the different state it can be in or sense. Structure the ant's choice of action as a high level set of conditionals, and then fill in what happens for each of those conditions, e.g.:
If ( X is the case ) {
if ( Z is the case )
do A1
else
do A2
else if ( Y is the case ) {
where, e.g., "X is the case" might be "Not carrying food", and A1 might be "pick up food". Once you have sketched out the logic at a high level, then fill in more details, a bit at a time, eventually start writing the methods for the Ant (and other) classes to implement your model. Your program should have (at least) these parameters:
worldSize -- size of world sides (assume a square world)
Default: 50
densityOfAnts -- the density of termites created. Default: ?
evaporationRate -- rate at which the pheromone evaporates
(ie, it is removed from the model world)
diffusionRate -- controls rate of diffusion of pheromone from
one cell into its neighbor cells.
You might want to start just one food source. An advanced version would parameterize the number, size and location of the food piles, and the location of the nest. Some things to measure, display and include in report files:
What else might be interesting to measure? Look at the behavior you see via the GUI -- what "patterns" do you see? What measures could you define to capture (aspects of) those patterns? What could you measure to reflect the ant's behavior/ability to find/transport food efficiently? In general to design an ABM, we want to specify: What is the non-Agent world? What state? What dynamics? What are the Agents? For each agent type: What state does it need? (instance variables) What can the agent sense? (methods) What can the agent do? (methods) What behavior rules does it use? (methods) How does it select agents to interact with? How to initialize the model? - What are run-time settable parameters? - Initial state of the world / agents What is the schedule of events? What agents do what, in what order? Does the environment have its own dynamics? - discrete time: synchronous or asynchronous - discrete event What to measure? The above questions imply thinking about a "conceptual" model and then thinking about various ways to implement those concepts. EG, what are the different ways one might implement ant movement, including random movement? What about "sniffing" and deciding what direction to move? These and similar abstract descriptions of agent state and behavior can be implemented in many ways--deciding how to do it for a given modeling project is part of the "art" of modeling. Up: Main, Syllabus-Jan#Jan20 |