MothsParameters - theRAPTLab/gsgo GitHub Wiki
Activity 1: Moths are discovered to gain survival benefit when they 'match' with their environment.
Activity 1 is a one-round embodied activity (students embodying predators), and it has an "init" and "end" script.
In the initialization, we want a distribution of moths that is as wide as it can be while still creating the 'message' that predation 'selects' camouflaged moths. The message is stronger the wider the distribution, but there is serious risk (that we've seen play out) that the phenomenon does not show up. -->A key goal in the revision of this activity was to make a wider distribution reliably show the phenomenon
The moths then will each go to a tree, and they will stay there till their 'energyLevel' timer counts down, which tells them they must move.
On moving they go to another tree, where they reset their timer etc. This cycle repeats.
The students enter the picture as predators. They hunt, and they are able to eat moths who are visible or moving. Ideally, it should be possible, but difficult, to catch moving moths. The goal is for most successful predation events to happen with stationary moths, (who will be invulnerable if they are on a like-colored tree trunk). -->This is one 'lever' used to ensure the phenomenon appears.
Predation-time (the duration of the round) was originally time-limited. But, we made it percentage-of-the-population limited (say 50% of the population is removed.) -->This is another tool to ensure that the phenomenon shows.
Then, in the end script, we show the alive/dead moths on top and bottom of the screen. This sets the stage for a data representation activity in which there is group discussion about the display that enables students to direct the teacher to rearrange moths/corpses to compare the two distributions-of-colors and describe the differences between them. (Rearrangement happens just by dragging the agents around with the mouse.)
Then, screen capture and save for comparison across runs.
Parameters for kids to change in this activity:
- Color of the tree trunks
- Number of moths
- Range of colors the moths begin at
Currently these are all done via INSTANCES at initialization. Programmatically, algorithmically creating instances is the way to achieve each of these student-changeable features. But this could also be done in the MAP editor, laboriously. NOTE: originally, we thought to make predatorvision an editable trait. But interactions with the system felt different from what we anticipated, with the result that this is not a direction we felt we could pursue.
Activity 2: Over generations, moths’ differential survival affects the color of the population.
Activity 2 is a multi-round activity in which students play the role of MOTHS.
One challenge here is that if we have only 6 or so students in play, they are not a very convincing “population.”
In my interpretation of this activity, I am experimenting with how students could control more than one moth. If each of 6 students controlled 3 moths, for example, then we could have a population of 18, which is more than half the size of the population of Activity 1.
As in Activity 1, in the initialization before the first round, we want a distribution of moths that is as wide as it can be while still leading to the outcome of camouflage.
To achieve the multi-moth-per-student effect, we needed to figure out how to swap control of a moth. The idea we went with was making students guardians of the moth babies. In the code, they are “Myths” who attract baby moths, get them to follow them to the first tree they encounter & drop them off. This gives the students an interest in their ‘brood’ – but it doesn’t do what we originally considered, where students are hiding THEIR babies. However, it was not easy to see how to keep that mapping to “my brood” over generations.
Myths can be pozyx or character controlled, so testing is possible without badges.
We originally thought of having the “Myths” be participants and actively chased by the predators, but things got mixed up about how to do multiple rounds, and we saw that it took VERY long (and was instructionally unproductive) to have the phase where students re-picked up moths. With the current design, there are no cursors.
The AI predators enter the picture 60 seconds after the start of the round, so there’s time pressure to get your Moths hidden. Predators feed until they’ve eaten ½ of the population or time runs out. Then, we see the results, make distributions by telling the teacher what to drag where, take a screencapture and put in Google Doc, and then repeat. There are 5 rounds, as this was long enough for the phenomenon to be visible in Ben's version of the activity.
Parameters for kids to change in this activity:
- Color of the tree trunks
- Number of moths
- Range of colors the moths begin at
- Mutation rate of the offspring
The first 3 are currently done by instances - see comment at top of js file for Act 1. For the last one I think it's sufficient to have 0, 1, 2 for +/- independently. To do this, I need to be able to feed in TWO 'push-ed' values to the addRnd somehow. //I THINK I COULD JUST DO THIS IN TWO STEPS GETTING AT THE UNDERLYING VARIABLE, but it would require working in two javascript exprPush {{}} blocks.
Activity 3: Engineering Challenge: Maximize the Rate of Adaptation of the Moth Population.
Activity 3 is a pure-AI agent activity, in which groups of students manipulate features and characteristics of the changing environment, to get a sense of their relation. The goal is to understand the interactions between predation and adaptation, over time.
This goal is operationalized as a challenge, where groups see how ‘far’ they can move the color distribution of the population of moths in 200 ticks (or whatever standard length of sim we choose)
For this activity we’ll have. (all of these done 8/1)
- A standard timer that is the competition time – perhaps 200 ticks
- A setup like that of Activity One.
- Smaller moths so we can have more.
- Predators should wait for the first 10 seconds to allow hiding.
As of 8/1 Still need to think about
- A measure of where we are to determine the ‘score’ – this has to be negotiated in the classroom - and ideally we can be ready to show any representation the kids invent.
- Representational agents – one large meter for each of the color-indices between 2 and 10. NOTE: Where on the screen can we put these? Is it possible to place meters BELOW the virtual stage?
Parameters for kids to change in this activity:
- Number of moths – need to make initialization programmatic rather than instance-literal
- Range of colors the moths begin at.
- Number of predators – need to make initialization programmatic rather than instance-literal
- Speed of predators – Speed added as a changeable predator property.
- Rate of change of the tree colors – Rate added as a changeable tree-trunk property.
- Mutation rate of the moths – For this I think it's sufficient to have 0, 1, 2 for +/- independently. To do this, I need to be able to feed in TWO 'push-ed' values to the addRnd somehow. //I THINK I COULD JUST DO THIS IN TWO STEPS GETTING AT THE UNDERLYING VARIABLE, but it would require working in two javascript exprPush {{}} blocks.