I managed to grab a couple more hours in coffee shops to think about the design of the godel.
Firstly, distance has helped come up with a much simpler way of handling the monthly routine: the farmer agent will own a list with indexes that represent each day in the month. The player will use drop-down boxes to decide how many days their farmer agent will dedicate to different activities and the program will put these into the list accordingly e.g.
[ "tilling"  "tilling"  "adding fertiliser" ... ]
(To do this I will hard-code an order that farming activities happen i.e. tilling before planting seeds).
I can then use this list to set the player individual/agent activity each morning (based on the day of the month). Importantly, I will also be able to change the list on the fly e.g.:
- based on a probability of the player agent getting sick e.g. change a farming activity to “stay home, too ill to work”.
- interactivity, by pressing a button in the user interface e.g. help friend with their field
The second point raises a couple of interesting possibilities:
- provide a button to stop the simulation at any point and change the monthly routine (need to think how this would work i.e. there would need to be a calculation to make sure a routine is not set to cover more days than there are left in the month). a dramatic change to the monthly routine would be needed for instance after a storm flattens a maize crop.
- the godel could periodically send messages to the player i.e. “a friend has asked for help on their farm, do you accept?” A button would be provided to accept, which would update the monthly calendar list
Point 2 raises another possibility – how can the player ask (the AI agents) for help on their farm, and how would I program the probability of acceptance?
Individualism vs contribution to a cooperative seems to be a key dynamic here, as it is for the fishing communities I met in Kenya. It seems that ABM is the ideal tool because we can in theory give individuals very different behaviours and so model the variability in terms of actual relationships within a community. It is also interesting that most ABMs do not actually make agents have a great deal of heterogeneity.
There is the possibility of introducing radical new technologies/practices e.g. storage, cheaper access to tractors, new seeds, cash crops etc.
The above summarizes cafe-session 1.
Today I thought more about the details and how we could build in an interesting alternative to happiness. I started out thinking more about how to animate the NL View to illustrate the stories that were playing out e.g. set a farmer “activity-today” attribute based on the calendar list mentioned above then write procedures regarding what has to happen for each activity e.g.
if activity-today = "activity" (e.g. tilling) if hour = 5 [ head over to fields ] if hour > 5 and < 17 [ ask patch-here (field) [ set attributes e.g. fertility fertility + F, weed-count weed-count - W etc if hour = 17 [ go back home ]
which then got me thinking that another nice way to provide a counter dynamic to wealth/money creation would be to report on the health of the farm land. At first glance it might appear the two are correlated, and they will be, but only if the farming practices are sustainable. I also got thinking that another model that zoomed out further could take into account the health of the ‘natural’ environment e.g. the surrounding forests with wild chimpanzees in them!
So I would need to decide on some patch attributes to model the terrain e.g. fertility, water content, loam, weed-count, acidity (the kinds of information we get on the back of seed packets). As I understand it, tropical farming is very much a battle against weeds which grow very quickly. (As a reminder: the children’s essays highlighted the problem of cattle getting into fields with crops and damaging them – this would be an interesting new agent to model).
Going back to animation again, it also occurred to me that farming is likely a family operation and it will be important to show mothers, fathers and children activities especially when it comes to schooling, selling things at the market etc.
I started to think about what I can actually do in Cameroon: ask children to colour prints-outs of maps of their area which I could then put into the model (using Gimp); ask children to draw icons using NL e.g. cows, people and other agents; go out to help with the farming and get a better understanding of what is involved; ask lots of questions to get a good idea of the numbers e.g. market prices, amounts of different substances like fertilizer how much time it takes to do different activities; how to bring in the behaviour composer i.e. get people interacting with the model at this level; when to record conversations (and how to set them up); how to gather data from the model and what I might show the villagers (remind myself how to do this with R).
Finally, I started to think how the model could be used to experiment with new approaches to farming e.g. add solar refrigeration, try a new seed etc. This got me thinking that perhaps the drop-down in the user interface to decide which crop to plant could include a few options to say how large an area should be given to a particular crop. This would introduce the possibility of farming with an experimental crop without committing much effort/land i.e. reducing the risks if it goes wrong.
Last-but-not-least – find a picture or two to give some relief to all this text.
PS I am still intrigued by the idea of including some measure of emotional well-being in the model e.g. happiness, energy-level, spirit…but I should wait until I’ve met the people in Cameroon.