Open benloh opened 3 years ago
changed time estimate to 16h
Design work around moth script spend 1h
added 1h of time spent
Notes:
featCall Costume colorHSVDifference Moth.prop.color Tree.prop.color
ifExpr {{ Moth.callFeatMethod('Costume', 'hueDifference`, Moth.prop.color, Tree.prop.color, 'gt', 5)
&& Moth.callFeatMethod('Costume', 'valueDifference', Moth.prop.color, Tree.prop.color, 'gt, 5) }} [[...]]
ifExpr {{ Moth.callFeatMethod('Costume', 'colorHSVWithinRage', Moth.prop.color, Tree.prop.color, 0.2, 0, 0.3) }} [[...]]
Use stack operations to test for color? Otherwise there are too many values to compare?
# BLUEPRINT Moth
# PROGRAM DEFINE
addProp isVisibleToPredator Boolean false
# PROGRAM INIT
featCall Costume randomizeColorHSV 0.1 0 0.2 // vary value depending on how much variation between generations
# PROGRAM UPDATE
when Moth firstTouches Tree [[
propPush Moth.Costume color
propPush Tree.Costume color
featCall Moth.Costume colorHSVWithinRangePush 0.1 0 0.2
propPop Moth.isVisibleToPredator
// or
ifExpr {{ Moth.callFeatMethod('Costume', 'colorHSVWithinRange', 0.1, 0, 0.2) }} [[
prop Moth.isVisibleToPredtoar setTo true
]] [[
prop Moth.isVisibleToPredtoar setTo false
]]
]]
when Moth lastTouches Tree [[
prop Moth.isVisibleToPredator setTo true
]]
# BLUEPRINT Predator
# PROGRAM UPDATE
when Predator sees Moth [[
ifExpr {{ Moth.prop.isVisibleToPredator.value }} [[
prop Moth.alpha setMin 1
featCall Moth.Costume setGlow 0.1
]]
]]
when Predator doesNotSee Moth [[
ifExpr {{ Moth.prop.isVisibleToPredator.value }} [[
prop Moth.alpha setMin 0.1
]]
]]
when Predator isCenteredOn Moth [[
featCall Moth.Costume setGlow 1
featCall Moth.Movement jitterRotate
every 2 [[
// featCall Moth.Population removeAgent
prop Moth.isInert setTo true
featCall Predator.Costume setGlow 1
]]
]]
marked the checklist item Predator detection of color differences as completed
marked the checklist item Can wearable moths stay still enough to be interpreted as non-moving, fade away and be invisible? as completed
marked the checklist item Gaining tree energy level on first touch as completed
Unbilled QA stuck predator during turn .75h
Spend 6/4-6/5 add mutation, spawn child tests, qa
added 2h 15m of time spent
marked the checklist item How does a parent pass on their color? as completed
marked the checklist item Handling generational mutation as completed
marked the checklist item AI Moths target new tree if energyLevel < 50% as completed
marked the checklist item Seek random target of blueprint type as completed
marked the checklist item Land when bounds in bounds? as completed
Spend 6/10 wander until inside 2.75h
added 2h 45m of time spent
@coreybrady This makes a lot of sense.
A few clarification questions:
Spend design 6/7 0.25h
Spend design 6/17 0.5h
added 45m of time spent
Spend 0.75h team meeting re color design. Unbilled 0.25h.
added 45m of time spent
marked the checklist item 11-point color scale as completed
marked the checklist item gray moths and gray trees as completed
marked the checklist item mutate +/- 2 points along scale as completed
marked the checklist item fade trees between rounds as completed
From Draft VU implementation Moths Google Doc.
Kids control predators via CharControl try to catch AI moths.
AI Moths have different colors based on an 11 point color scale, some are visible, some invisible against background.
Moths do NOT have energyLevel and DO NOT move to a new tree when energyLevel is low.
There are 10 moths? (to match the number in Round 2)
There are multiple rounds of play, with kids tweaking predator vision settings (cone and color range) between each round.
Mutations are +/- 3 steps of the color scale.
Rounds are endless so you can keep going.
No tweaks
[x] Spawning mutations on round init doesn’t work for endless rounds.
[x] CharControlled predators should not eat camouflaged moths?
[x] Only camouflaged moths should blink.
[x] Remove Moths after spawning offspring? If the goal is to keep the system always at 10 moths per round, we'll need to figure out a new mechanism.
featProps
(currently featCalls
, but can be converted to featProps
)ifExpr
nested inside a when
-- This is going to be next to impossible to create a UI for.2-5 students CharControl predators
5-10 students control Moths via Pozyx
When round ends, surviving moths reproduce with color mutations with +/-3 changes to color scale.
Students can tweak forest color and mutation formula
[ ] forest color -- edit rounds.initScript
?
[ ] ??? Maybe set mutation formula? -- edit rounds.initScript
?
prop
and featProp
calls nested in a when
or ifExpr
may not be modifiable via the Script UI, depending on our ability to implement the tweak. If it's not accessible via the ScriptUI, students or researchers may have to edit the script directly in the project file.Both predators and moths are controlled by AI.
Trees get darker with each round.
The goal is to see the population change over time -- moths should get darker with successive populations as trees get darker.
Students can tweak predator vision, mutation, etc.
Should this just be a continuous running simulation (that it not interrupted by rounds) so that you can just watch the change over time?
[x] Introduce many AI Predators to speed up the round?
[x] How do you determine how the population color is changing over time?
featCall Predator.Wizard expose visionDistance
). This would simplify the interface for students to interact with.In GitLab by @jdanish on Jun 28, 2021, 10:22
I think we ultimately do want kids to be able to see the full script for the moth or predator, though one at a time is AOK.
I think highlighting the parameters would be cool, but does that complicate kids adding new parameters? I guess if we assume any parameters added via UI are automatically editable, and then you have to put a parameter in code and not make it editable that'd probably make sense? (I'd need to see what we are talking about, but it feels intuitive).
Eventually we want users to be able to create entire models with multiple rounds without coding skills. So, they'll need access to initScripts for that. However, I am not sure if kids will need access to initScripts for this run. @coreybrady ?
Spend 3.5 6/26 - 6/27 moth script design, script ui, review writeup
added 3h 30m of time spent
Spend 7/18 - 7/26 Moths Script features implementation 29h
added 29h of time spent
In GitLab by @jdanish on May 4, 2021, 09:44
https://docs.google.com/document/d/10dZL4_0bnUkGsIu8RJJCHUCFtHqIaS7cdyAc2qtwVUU/edit#heading=h.3xjzr2xdhi4z
Issues
[x] Predator detection of color differences
[x] Can wearable moths stay still enough to be interpreted as non-moving, fade away and be invisible?
[x] Gaining tree energy level on first touch
[x] Handling generational mutation
[x] AI Moths target new tree if energyLevel < 50%
[ ] Should agentWidgets also fade out when invisible?
[ ] Will wearables glitch cause them to lose their invisibility? Is this a problem for students?
Corey's Writeup from 6/17/2021
I wanted to follow up with you, after our meeting today on COLORS in the Moths activity. I made a NetLogo model-to-think-with, so that we could work with the color, visibility, and mutation/adaptation questions in a context that approximated the activity somewhat. That also means I can show you some of the interactions / visualizations that our group worked with and that motivated the ultimate 'proposal logic' below.
After working with "Team Moths" at Vanderbilt, we decided...
1) we'd like to go with moth colors in a grayscale (the fanciful multi-colored moth ideas we had all ended up with problems related to accessibility, coherence, or scale).
2) we think that a color range of 11 colors for moths works well
3) we want to do 'mutation' (i.e., trait variation in offspring) via selection of one of {parent color, +1, -1, +2, -2 'color slots'}. I have specific logic for all of this, but am summarizing here.
4) in trait variation, we also want to 'clamp' the offspring to the range of 11, (so you can't be more 'bright' than the brightest slot, or more 'dim' than the dimmest)
5) predators will be able to detect a moth if it differs from the background by more than a threshold. This difference is measured in absolute terms (not "moth color slot"), so that the background is actually not limited to the same 11 shades as moths. (This could be useful for doing very gradual changes in the trees, mimicking the industrial revolution change in our historical referent.)
6) we love your moths mockup for (in)visibility, in which, on stopping, moths not visible to predators (i.e., with difference from bkgrnd < threshold) rapidly fade and then 'blink' to allow their human-actors to know where they are.
In working out these ideas, we also identified some interesting activity ideas (e.g., having students lining up by grayscale to create a human histogram that could be discussed in comparison to a generated graph/histogram, etc)
In light of all of the above, we're going to work to update lesson plan in more detail and ensure that everything flows throughout. We believe that all of our shifts in thinking are strict simplifications and/or improvements in technical feasibility, but we want to work it through to make sure. (Specifically, we believe we may have eased some of the technology challenges around Rounds and needs for multiple different views of the world (for predators, etc).)
To Do