We'll go through each of these steps as a group, using a couple of examples. Start thinking about what phenomena you'd like to use as examples.
-
Choose a natural phenomenon. It should be something about which you know something: models don't really create knowledge so much as they organize and test knowledge.
-
Make a list of features of this phenomenon. You're not going to reproduce the phenomenon exactly, in every detail. You just want to reproduce what features you find interesting.
-
Some of these features might be interesting in their own right. For example, if you're interested in modeling the factors underlying biodiversity, you'll want one feature to be species number.
-
some features might only be interesting in your process of model validation. For example, if you're interested in modeling the factors underlying biodiversity, maybe you'll use earthworm biodiversity to test how well your model works.
-
Organize what you know about the phenomenon.
-
What are the relevant actors? How many kinds of actors are there?
-
What are their relevant properties?
-
How do they behave? Do they interact with each other? With the environment? This is the dynamic, and it's at least as important as identifying the actors.
-
If you have n kinds of actors, you may have to describe n kinds of interactions: one for each pair of kinds of actors. Some of these interactions may just be "there is no interaction." You might even have a total of zero interactions: for example, in exponential population growth each actor just reproduces with some probability. There's no interaction between individuals and no environmental influence.
-
Express each interaction description as simply as possible. If one is complex, see if there's any way to simplify it, using assumptions or simpler versions of complicated relations. (For example, the linear relation between population growth rate and population size in the logistic-growth model.)
-
At what spatial and/or temporal scale does their behavior occur?
-
What other variables (e.g., environmental variables) influence the actors' behavior?
-
Choose a way to represent the actors.
-
Are the actors all similar? If yes, you're dealing with a population of like actors:
-
Are all interactions local? If so, you have to represent actors' locations.
-
Are the actors connected to each other as a larger structure? Maybe you need an L-system.
-
Does the number of actors change? Maybe you don't want a cellular automaton.
-
Choose a way to represent one actor. Maybe an object, a list element, a turtle, a patch.
-
If no, you're dealing with a system of unlike actors, you'll probably just use a variable to represent each actor.
-
Choose a way to represent the interactions.
-
If the actors are represented as variables, the interactions will be a set equations, each representing one interaction.
-
If the actors are represented as objects or list elements, the interactions might be functions that accept object variables (like age) and global variables (like time) and then update, create,and/or destroy actors.
-
If the actors are represented as L-system lexicon components, the interactions will be transformation rules.
-
If the actors are represented as turtles or patches Netlogo, the interactions will be in ask blocks and will probably use primitives like patch-at, pcolor-of, resource-level-of, etc.
-
Make sure the parameters (e.g., growth rates, movement distances, interaction distances, transmission probabilities) make sense given the spatial and temporal scales you've identified.
-
Build a basic model with no details. Just make sure all the actors are accounted for and that the basic interactions fit and make sense.
-
Create the representations of the actors.
-
Create the representations of the interactions.
-
Set up some scenario -- that is, come up with a set of inputs or a starting configuration.
-
Predict the behavior of your basic model.
-
Run the model and see if it does what you predicted. Did it?
-
Yes: good.
-
No: good. Decide whether your prediction was wrong or whether you made a mistake in the implementation of your basic model.
-
Complicate your model, one detail at a time. Start with the most important and work your way to the less important.
-
Every time you add a detail, do this:
-
Decide what feature(s) of the natural phenomenon is worthy of your modeling effort.
-
These features should be interesting to you and easily observable.
-
Don't do too many: you're not trying to make a map the size and detail of the real empire.
-
Describe these features quantitatively, or qualitatively such that you can easily identify whether your model reproduces the features.
-
If you describe them quantitatively, decide how you'll judge whether the model meets the prediction. How close is good enough?
-
Add features until you've reproduced your original, big list of features. Then you're done.
What you'll do today
First, we'll all go through the above list of modeling steps. We'll go through two or three examples as a group.
Then you'll each choose one of the cellular automata you've been working on, and apply the steps.
After that, you have the rest of the time to work on assignments.
