Simulation-of-long-distance.../Model.nlogo

1956 lines
51 KiB
Plaintext
Raw Normal View History

2019-08-31 19:32:07 +00:00
breed [males male]
breed [females female]
males-own
[
; When dies a specific male? Value in years.
ageOfDeathYears
; Age in years, e.g. for plotting and statistics.
ageYears
; Age in days. Makes things easier due to the fact that one tick is a day.
ageDays
; Is a specific male able to breed?
isFertile
]
females-own
[
; When dies a specific female? Value in years.
ageOfDeathYears
; Age in years, e.g. for plotting and statistics.
ageYears
; Age in days. Makes things easier due to the fact that one tick is a day.
ageDays
; Is a specific female able to breed?
isFertile
; How many children can a specific female become?
maxChildren
; How many children had this female?
previousChildren
; When does the menopause begins?
startMenopauseYears
; Is an individual female pregnant?
isPregnant
; How long is a female pregnant?
pregnantSinceDays
]
globals
[
; The chip's capacity.
capacity
; How many females are on board? This number gets updates on each tick.
numberFemales
; How many females alive are infertile? Gets updated each tick.
numberFemalesInfertile
; How many males are on board? This number gets updated on each tick.
numberMales
; How many males alive are infertile? Gets updated each tick.
numberMalesInfertile
; How many accidents happens in the mission?
numberAccidents
; How many crew members died by accidents?
numberDeathsByAccidents
; How many crew members are died?
numberDeaths
; How many births?
numberBirths
; How many females are born?
numberBirthsFemales
; How many males are born?
numberBirthsMales
; The current year.
currentYear
; The crew's mean age.
meanAgeYears
; The mean age of females.
meanAgeFemalesYears
; The mean age of males.
meanAgeMalesYears
]
to setup
clear-all
; Configure the plots' pens to behave on a daily or monthly basis:
ifelse simulateMonthsInsteadOfDays
[
set-current-plot "Population over time (6300 years)"
set-current-plot-pen "females"
set-plot-pen-interval 30.42
set-current-plot-pen "males"
set-plot-pen-interval 30.42
set-current-plot-pen "total"
set-plot-pen-interval 30.42
set-current-plot "Population over time (last 365 days)"
set-current-plot-pen "females"
set-plot-pen-interval 30.42
set-current-plot-pen "males"
set-plot-pen-interval 30.42
set-current-plot-pen "total"
set-plot-pen-interval 30.42
]
[
set-current-plot "Population over time (6300 years)"
set-current-plot-pen "females"
set-plot-pen-interval 1
set-current-plot-pen "males"
set-plot-pen-interval 1
set-current-plot-pen "total"
set-plot-pen-interval 1
set-current-plot "Population over time (last 365 days)"
set-current-plot-pen "females"
set-plot-pen-interval 1
set-current-plot-pen "males"
set-plot-pen-interval 1
set-current-plot-pen "total"
set-plot-pen-interval 1
]
; The ship's capacity:
set capacity 500
; Load the ships's environment:
import-pcolors "Spaceship.png"
; Half the crew consists of males:
create-males initialCrewSize / 2
[
; Set the shape and color:
set shape "person"
set color blue ; males are blue
; Determine the date of death for each individual.
; The time of death is a normal distribution:
set ageOfDeathYears random-normal maxAgeMales ageStdDeviation
; Determine the initial age at time of mission's start:
set ageYears random-normal initialAgeMales initialAgeStdDeviation
; Calculate the corresponding age as days:
set ageDays ageYears * 365
; Initially, set all individuals to be fertile. We fix this in a moment.
set isFertile true
]
; Half the crew consists of females:
create-females initialCrewSize / 2
[
; Set the shape and color:
set shape "person"
set color red ; females are red
; Determine the date of death for each individual.
; The time of death is a normal distribution:
set ageOfDeathYears random-normal maxAgeFemals ageStdDeviation
; Determine the initial age at time of mission's start:
set ageYears random-normal initialAgeFemales initialAgeStdDeviation
; Calculate the corresponding age as days:
set ageDays ageYears * 365
; Initially, set all individuals to be fertile. We fix this in a moment.
set isFertile true
; Determine how many children a specific female can have.
; When the specific female is infertile, use 0. Otherwise, it is a normal distribution:
set maxChildren random-normal maxChildrenPerFemale maxChildrenStdDeviation
; Determine when the menopause begins:
set startMenopauseYears random-normal meanAgeMenopause ageMenopauseStdDeviation
; No female is pregnant at the time of mission's start:
set isPregnant false
set pregnantSinceDays 0
]
; Now, some initial crew members might got a negative age:
ask turtles with [ ageYears < 0 ]
[
set ageDays random 365
set ageYears ageDays / 365
]
; Distribute the crew across the spaceship:
ask turtles [ setxy random-xcor random-ycor ]
; Ensure the crew is not in space:
moveAwayFromSpace
; Count the number of females and males on board.
; This is necessary to this point in time, to
; calculate the fertile state of the crew:
countSex
; Get the initial crew's mean age:
determineMeanAges
; Now, we are fixing the crew's fertile state:
ask n-of (numberMales * (infertilityMales / 100)) males [ set isFertile false ]
ask n-of (numberFemales * (infertilityFemales / 100)) females [ set isFertile false ]
; Next, we can fix the number of possible children accordingly:
ask females [ set maxChildren ifelse-value isFertile [ maxChildren ] [ 0 ] ]
; Count the number of females and males, again.
; This time it is necessary, to show the correct statistics
; in the dashboard:
countSex
reset-ticks
output-print "Please wait until the mission's\nsimulation ends ..."
end
to go
; Check if and who died:
checkLife
; Determine if any accident occurs today:
checkAccident
; Count the number of females and males to consider
; the deaths:
countSex
; The mission might ended:
if missionEnds?
[
stop
]
; Doing males' actions:
actMales
; Doing females' actions:
actFemals
; Do mating:
mate
; Protect children and pregnant individuals:
protect
; Ensure the crew is not in space:
moveAwayFromSpace
; Determine the number of females and males, again.
; Due to births, the numbers might be increased:
countSex
; Calculate the mean age:
determineMeanAges
; Determine the current year:
determineYear
; Update the plotting:
updatePlots
; Next day or month (cf. simulateMonthsInsteadOfDays) ...
ifelse simulateMonthsInsteadOfDays
[
; Next month...
tick-advance 30.42
]
[
; Next day...
tick
]
end
to actMales
ask males
[
forward random 6
right random 90
]
end
to actFemals
ask females
[
forward random 6
right random 90
; Doing pregnancy management:
if isPregnant
[
ifelse simulateMonthsInsteadOfDays
[
set pregnantSinceDays pregnantSinceDays + 30.42
]
[
set pregnantSinceDays pregnantSinceDays + 1
]
]
]
; Determine how many births we have today:
let births count females with [ pregnantSinceDays > 270 ]
; End the pregnancy:
ask females with [ pregnantSinceDays > 270 ]
[
set pregnantSinceDays 0
set isPregnant false
set previousChildren previousChildren + 1
]
; For each birth...
repeat births
[
; Twin rate is approx. 1% per birth:
let isTwin random 100 > 98
; How many children does the female gets?
let numberChildren ifelse-value isTwin [ 2 ] [ 1 ]
; For each child:
repeat numberChildren
[
; 50/50 chance for sex:
let isMale random 100 > 50
; Birth:
ifelse not isMale
[
create-females 1
[
; Set the shape and color:
set shape "person"
set color red ; females are red
; Determine the date of death for each individual.
; The time of death is a normal distribution:
set ageOfDeathYears random-normal maxAgeFemals ageStdDeviation
; Determine the initial age at time of mission's start:
set ageYears 0
; Calculate the corresponding age as days:
set ageDays 1
; Is this individual fertile?
set isFertile random 100 < (100 - infertilityFemales)
; Determine how many children a specific female can have.
; When the specific female is infertile, use 0. Otherwise, it is a normal distribution:
set maxChildren random-normal maxChildrenPerFemale maxChildrenStdDeviation
; Determine when the menopause begins:
set startMenopauseYears random-normal meanAgeMenopause ageMenopauseStdDeviation
; Not yet pregnant:
set isPregnant false
set pregnantSinceDays 0
]
; Statistics:
set numberBirths numberBirths + 1
set numberBirthsFemales numberBirthsFemales + 1
]
[
create-males 1
[
; Set the shape and color:
set shape "person"
set color blue ; males are blue
; Determine the date of death for each individual.
; The time of death is a normal distribution:
set ageOfDeathYears random-normal maxAgeMales ageStdDeviation
; Determine the initial age at time of mission's start:
set ageYears 0
; Calculate the corresponding age as days:
set ageDays 1
; Is this individual fertile?
set isFertile random 100 < (100 - infertilityMales)
]
; Statistics:
set numberBirths numberBirths + 1
set numberBirthsMales numberBirthsMales + 1
]
]
]
; Move all newborn to the secure area:
ask turtles with [ ageDays = 1 ]
[
setxy 0 0
]
end
to checkAccident
; Determine if there is any accident. We choose a random number between 0 and 99.
; Any value below 99 means no accident.
let accident random 100
; Are we having an accident today?
if accident >= 99
[
set numberAccidents numberAccidents + 1
; Okay. Now we have to determine where in spaceship the accident occurs.
; As darker the color of the patches, as higher is the risk. The white
; areas are save. But from time to time, even there an accident happens.
;
; Value mappings:
; 0 - 70 = black area (pcolor 0)
; 71 - 90 = dark area (pcolor > 0 and pcolor < 2.9)
; 91 - 98 = gray area (pcolor > 2.9 and pcolor < 9)
; 99 = white area (pcolor > 9 and pcolor <= 9.9)
let affectedArea random 100
; The black area:
if affectedArea >= 0 and affectedArea <= 70
[
; Approx. 30% of these accidents are mortal:
let mortal random 100 >= 70
if mortal
[
; Determine how many crew members are killed:
let kills floor random-normal 1 1.1
if kills > 0
[
; Kill the affected members:
ask up-to-n-of kills turtles with [pcolor = 0] [ die ]
; Statistics:
set numberDeathsByAccidents numberDeathsByAccidents + kills
set numberDeaths numberDeaths + kills
]
]
]
; The dark area:
if affectedArea > 70 and affectedArea <= 90
[
; Approx. 15% of these accidents are mortal:
let mortal random 100 >= 85
if mortal
[
; Determine how many crew members are killed:
let kills floor random-normal 0.9 0.8
if kills > 0
[
; Kill the affected members:
ask up-to-n-of kills turtles with [pcolor = 0] [ die ]
; Statistics:
set numberDeathsByAccidents numberDeathsByAccidents + kills
set numberDeaths numberDeaths + kills
]
]
]
; The gray area:
if affectedArea > 90 and affectedArea <= 98
[
; Approx. 5% of these accidents are mortal:
let mortal random 100 >= 95
if mortal
[
; Determine how many crew members are killed:
let kills floor random-normal 0.8 0.8
if kills > 0
[
; Kill the affected members:
ask up-to-n-of kills turtles with [pcolor = 0] [ die ]
; Statistics:
set numberDeathsByAccidents numberDeathsByAccidents + kills
set numberDeaths numberDeaths + kills
]
]
]
; The white, save area:
if affectedArea > 98
[
; Approx. 1% of these accidents are mortal:
let mortal random 100 > 98
if mortal
[
; Determine how many crew members are killed:
let kills floor random-normal 0.5 0.5
if kills > 0
[
; Kill the affected members:
ask up-to-n-of kills turtles with [pcolor = 0] [ die ]
; Statistics:
set numberDeathsByAccidents numberDeathsByAccidents + kills
set numberDeaths numberDeaths + kills
]
]
]
]
end
to checkLife
ask males
[
ifelse ageYears > ageOfDeathYears
[
set numberDeaths numberDeaths + 1
die
]
[
ifelse simulateMonthsInsteadOfDays
[
set ageDays ageDays + 30.42
]
[
set ageDays ageDays + 1
]
set ageYears ageDays / 365
]
]
ask females
[
ifelse ageYears > ageOfDeathYears
[
set numberDeaths numberDeaths + 1
die
]
[
ifelse simulateMonthsInsteadOfDays
[
set ageDays ageDays + 30.42
]
[
set ageDays ageDays + 1
]
set ageYears ageDays / 365
]
]
end
to countSex
set numberMales count males
set numberMalesInfertile count males with [ isFertile = false ]
set numberFemales count females
set numberFemalesInfertile count females with [ isFertile = false ]
end
to determineMeanAges
if any? females
[
set meanAgeFemalesYears mean [ageYears] of females
]
if any? males
[
set meanAgeMalesYears mean [ageYears] of males
]
set meanAgeYears (meanAgeMalesYears + meanAgeFemalesYears) / 2
end
to determineYear
set currentYear ticks / 365
end
to mate
; The maximal number of males:
let maxAllowedMales count males with [ ageYears >= startAgePermittedMating and ageYears <= endAgePermittedMating ]
; Dynamic control?
if useDynamicPermittedMating
[
; Reached 90% of spaceship's capacity?
if count turtles + count females with [ isPregnant ] > capacity * 0.8
[
; Allow approx. 1/3 to be mate:
set maxAllowedMales floor maxAllowedMales / 3
]
; Reached 95% of spaceship's capacity?
if count turtles + count females with [ isPregnant ] > capacity * 0.9
[
; Restrict the males down to three:
set maxAllowedMales 3
]
if count turtles + count females with [ isPregnant ] > capacity * 0.95
[
; Restrict the males down to three:
set maxAllowedMales 0
]
]
; Start by selecting the allowed number of males in the correct age:
ask up-to-n-of maxAllowedMales males with [ ageYears >= startAgePermittedMating and ageYears <= endAgePermittedMating ]
[
; Choose a random partner:
let partner one-of females with [ not isPregnant and ageYears >= startAgePermittedMating and ageYears <= endAgePermittedMating and ageYears < startMenopauseYears]
; Both are fertile?
if partner != nobody and isFertile and [isFertile] of partner and [ previousChildren < maxChildren ] of partner
[
; Chances of pregnancy after intercourse: 75%
let getsPregnant random 100 > 75
if getsPregnant
[
ask partner
[
set isPregnant true
]
]
]
]
end
to-report missionEnds?
if (currentYear > 6300)
[
clear-output
output-print "The mission was successful:\nsurvivors reached the\ndistant planet."
report true
]
if (numberFemales + numberMales > capacity)
[
clear-output
output-print "Unfortunately, there was too\nmuch offspring, so that the\ncapacity of the spaceship was\nexceeded. The crew has starved,\ndied of thirst or suffocated."
report true
]
if (numberFemales = 0 and numberMales = 0)
[
clear-output
output-print "The mission failed because\nthe crew was extinct."
report true
]
report false
end
to moveAwayFromSpace
; Patch color >10 means red, which is the space around the ship.
; We move all crew members away into the ship:
while [any? turtles with [ pcolor > 10]]
[
ask turtles with [ pcolor > 10]
[
forward random 6
right random 90
]
]
end
to protect
; Protect children:
ask turtles with [ ageYears < 16 and pcolor < 9.8 ]
[
facexy 0 0
forward random 3
]
; Protect pregnant females:
ask females with [ isPregnant and pcolor < 9.8 ]
[
facexy 0 0
forward random 4
]
end
to updatePlots
; Set the range of the population's plot. We want to see the
; last year in more detail. Thus, we use this function to
; move the window of the plot along:
set-current-plot "Population over time (last 365 days)"
ifelse currentYear < 1.0
[
set-plot-x-range 0 365
]
[
set-plot-x-range ceiling ((currentYear * 365) - 365) ceiling (currentYear * 365)
]
update-plots
end
@#$#@#$#@
GRAPHICS-WINDOW
625
18
1397
415
-1
-1
11.76
1
10
1
1
1
0
0
0
1
-32
32
-16
16
1
1
1
ticks
30.0
SLIDER
9
31
224
64
initialCrewSize
initialCrewSize
2
250
100.0
2
1
people
HORIZONTAL
BUTTON
249
21
337
67
NIL
setup
NIL
1
T
OBSERVER
NIL
NIL
NIL
NIL
1
BUTTON
249
68
337
117
NIL
go
T
1
T
OBSERVER
NIL
NIL
NIL
NIL
1
MONITOR
367
107
497
152
# males
numberMales
17
1
11
MONITOR
498
107
617
152
# females
numberFemales
17
1
11
PLOT
626
420
1396
570
Population over time (6300 years)
Days
Number Peoples
0.0
2299500.0
0.0
500.0
false
true
"" ""
PENS
"females" 1.0 1 -5298144 true "" "plot numberFemales"
"males" 1.0 1 -13345367 true "" "plot numberMales"
"total" 1.0 0 -16777216 true "" "plot numberFemales + numberMales"
PLOT
625
577
1397
727
Population over time (last 365 days)
Days
Number Peoples
0.0
365.0
0.0
500.0
false
true
"" ""
PENS
"females" 1.0 1 -5298144 true "" "plot numberFemales"
"males" 1.0 1 -13345367 true "" "plot numberMales"
"total" 1.0 0 -16777216 true "" "plot numberFemales + numberMales"
MONITOR
366
20
618
85
Current Year
currentYear
1
1
16
SLIDER
8
247
225
280
maxAgeFemals
maxAgeFemals
0.5
120
85.0
0.1
1
years
HORIZONTAL
SLIDER
8
281
225
314
maxAgeMales
maxAgeMales
0.5
120
79.0
0.1
1
years
HORIZONTAL
SLIDER
8
315
225
348
ageStdDeviation
ageStdDeviation
0
25
15.0
1
1
years
HORIZONTAL
MONITOR
368
266
548
311
mean age crew
meanAgeYears
2
1
11
MONITOR
498
199
617
244
mean age femals
meanAgeFemalesYears
2
1
11
MONITOR
367
199
497
244
mean age males
meanAgeMalesYears
2
1
11
TEXTBOX
11
10
161
30
Initial parameters:
16
0.0
1
TEXTBOX
9
109
159
127
Crew's initial age:
11
0.0
1
SLIDER
8
127
223
160
initialAgeFemales
initialAgeFemales
1
80
20.0
1
1
years
HORIZONTAL
SLIDER
8
161
223
194
initialAgeMales
initialAgeMales
1
80
20.0
1
1
years
HORIZONTAL
SLIDER
8
194
223
227
initialAgeStdDeviation
initialAgeStdDeviation
0
36
22.0
1
1
years
HORIZONTAL
TEXTBOX
10
231
160
249
Max. age:
11
0.0
1
TEXTBOX
371
93
491
111
Males' statistics:
11
0.0
1
TEXTBOX
503
93
612
111
Females' statistics:
11
0.0
1
TEXTBOX
11
366
161
384
Crew's bio parameters:
11
0.0
1
SLIDER
9
381
224
414
infertilityFemales
infertilityFemales
0
100
10.0
1
1
%
HORIZONTAL
SLIDER
9
415
224
448
infertilityMales
infertilityMales
0
100
15.0
1
1
%
HORIZONTAL
MONITOR
498
153
617
198
# females (infertile)
numberFemalesInfertile
0
1
11
MONITOR
367
153
497
198
# males (infertile)
numberMalesInfertile
0
1
11
SLIDER
9
449
224
482
maxChildrenPerFemale
maxChildrenPerFemale
1
10
2.0
0.1
1
children
HORIZONTAL
SLIDER
9
483
224
516
maxChildrenStdDeviation
maxChildrenStdDeviation
0
2
0.5
0.1
1
NIL
HORIZONTAL
OUTPUT
247
598
603
737
16
TEXTBOX
249
552
605
636
After the mission ended, the reason why this was the case is given here:
16
0.0
1
MONITOR
368
313
548
358
# accidents
numberAccidents
17
1
11
MONITOR
369
360
548
405
# deaths caused by accidents
numberDeathsByAccidents
17
1
11
TEXTBOX
369
249
519
267
Crew's statistics:
11
0.0
1
SLIDER
8
647
221
680
meanAgeMenopause
meanAgeMenopause
40.0
50.0
48.81
0.5
1
years
HORIZONTAL
TEXTBOX
10
630
160
648
Females's bio parameters:
11
0.0
1
SLIDER
8
683
222
716
ageMenopauseStdDeviation
ageMenopauseStdDeviation
1
6
3.9
0.1
1
years
HORIZONTAL
SLIDER
9
517
224
550
startAgePermittedMating
startAgePermittedMating
16
50
35.0
1
1
years
HORIZONTAL
SLIDER
9
551
224
584
endAgePermittedMating
endAgePermittedMating
20
100
40.0
1
1
years
HORIZONTAL
MONITOR
369
406
548
451
# deaths
numberDeaths
17
1
11
MONITOR
369
499
439
544
# births
numberBirths
17
1
11
MONITOR
440
499
502
544
# females
numberBirthsFemales
17
1
11
MONITOR
503
499
566
544
# males
numberBirthsMales
17
1
11
MONITOR
369
453
548
498
# pregnancies
count females with [ isPregnant ]
17
1
11
SWITCH
9
584
224
617
useDynamicPermittedMating
useDynamicPermittedMating
0
1
-1000
SWITCH
9
67
224
100
simulateMonthsInsteadOfDays
simulateMonthsInsteadOfDays
0
1
-1000
@#$#@#$#@
## Model Description
### Introduction
This model is an attempt to recreate the experiment of Frédéric Marin and Camille Beluffi from 2018 [1] by means of ABM. The experiment deals with the questions of how to choose the initial crew of a spacecraft and how to regulate its reproduction in order to survive a 6,300 year intergalactic journey from Earth to the distant planet Proxima Centauri b.
### Scope
The model considers the number of people, their sex and the simplified biological parameters relevant for reproduction. In addition and in contrast to the original experiment, the risk of different tasks in the spaceship is considered. Some activities, e.g. at the technical facilities, are associated with a higher accident risk.
Essential resources such as water, food and medicine, etc. are explicitly not taken into account. The basic assumption is that the spaceship offers enough resources for everyone or can produce them during the journey.
The settlement of Proxima Centauri b is also not taken into account. The experiment is successful if survivors arrive on the distant planet.
## Running the Model
### Dependencies
The model needs the representation of the spaceship in order to execute the setup function. Therefore the `Spaceship.png` file must be located in the directory of the `Survival on Space Flight.nlogo` file. This file is read in automatically. Further manual steps are therefore not necessary.
### Time Scale
The model simulates a day of travel as a tick. In order to simulate the 6,300 years i.e. 2,299,500 ticks, technical challenges arise. Among others, the standard memory allocated for NetLogo is not sufficient to simulate this number of years on a daily basis. This problem is due to the fact that NetLogo is a Java program. One solution is to allocate more memory to the program.
Another solution is the parameter `simulateMonthsInsteadOfDays` in the user interface. If this parameter is enabled, the simulation calculates 30.42 days for each tick instead of one day per tick.
Thus, the parameter `simulateMonthsInsteadOfDays` is enabled by default.
### Necessary Time for a Run i.e. a Mission
Several test runs with four CPU cores have shown that with default parameters approx. 10 minutes are needed for a mission or 6,300 years.
## Environment
The environment used is a two-dimensional representation of a spaceship. The top view from above was chosen as viewpoint. The spaceship is divided into different areas. These areas are represented by grey shades. The darker an area is, the higher is the accident risk. The brighter an area is, the lower is the accident risk.
These areas with the positions of the agents model e.g. different professions and tasks. Work on the engines or other mechanical facilities entails a higher accident risk. Work on the IT infrastructure, in resource extraction (e.g. food) or in the preparation of food is potentially less dangerous.
The spaceship is surrounded by space, which is represented in the model as red color. Space is deadly.
## Agents
### Femals
#### Properties
- `ageOfDeathYears`: At what age will the agent die (in years)?
- `ageYears`: The current age of the agent (in years).
- `ageDays`: The current age of the agent (in days).
- `isFertile`: Is this agent fertile and can produce offspring?
- `maxChildren`: What is the maximum number of children this female can have?
- `previousChildren`: How many children has this female given birth to?
- `startMenopauseYears`: At what age (in years) does menopause begin for this female?
- `isPregnant`: Is this female currently pregnant?
- `pregnantSinceDays`: If this female is currently pregnant, since how many days?
#### Behaviour / Actions
- **Movement:** In every tick a female moves randomly in the spaceship as long as she is older than 15 years and not pregnant. Pregnant females and females younger than 16 years only stay in the middle of the spacecraft so that they are protected from lethal accidents.
- **Pregnancy:** If a female is pregnant, the pregnancy progresses. If a female has been pregnant for at least 270 days, her pregnancy gets terminated and at least one offspring is born. There is a 1% probability that twins will be born. The probability that the offspring is male or female is 50%.
- **Accidents:** A female might be involved in an accident. The probability depends on the position in the spaceship. Not every accident is lethal. Every day, the probability of an accident occurrence is 1%. When an accident happens, it happens 70% in a black area, 20% in a dark area, 8% in a gray area, and 1% in the white area. The accidents in the black area end in 30%, in the dark area in 15%, in the grey area in 5%, and in the white area in 1% of the cases deadly.
- **Reproduction:** A female can reproduce. All males and females that are within the allowed age of reproduction try to mate. The couples are formed randomly. If one of the two partners is not fertile, no pregnancy occurs. If both partners are fertile, there is a 75% probability of pregnancy after intercourse.
- **Death:** A female can die. Either due to age or an accident.
### Males
#### Properties
- `ageOfDeathYears`: At what age will the agent die (in years)?
- `ageYears`: The current age of the agent (in years).
- `ageDays`: The current age of the agent (in days).
- `isFertile`: Is this agent fertile and can produce offspring?
#### Behaviour / Actions
- **Movement:** In every tick a male moves randomly in the spaceship as long as he is older than 15 years. Males younger than 16 years only stay in the middle of the spacecraft so that they are protected from lethal accidents.
- **Accidents:** A male might be involved in an accident. The probability depends on the position in the spaceship. Not every accident is lethal. Every day, the probability of an accident occurrence is 1%. When an accident happens, it happens 70% in a black area, 20% in a dark area, 8% in a gray area, and 1% in the white area. The accidents in the black area end in 30%, in the dark area in 15%, in the grey area in 5%, and in the white area in 1% of the cases deadly.
- **Reproduction:** A male can reproduce. All males and females that are within the allowed age of reproduction try to mate. The couples are formed randomly. If one of the two partners is not fertile, no pregnancy occurs. If both partners are fertile, there is a 75% probability of pregnancy after intercourse.
- **Death:** A male can die. Either due to age or an accident.
## Order of Events
### Function: Setup
1. **Reset:** Reset i.e. clear the entire simulation.
1. **Pens:** Initialize all pens of both diagrams. This is necessary so that the user can choose between a simulation on a daily or monthly basis.
1. **Capacity:** Define the capacity of the spaceship so that a maximum of 500 people can live on it.
1. **Import representation:** Import the two-dimensional representation of the spaceship from the `Spaceship.png` file. This will also import the colors that indicate which risk zones exist where in the spaceship.
1. **Create males:** Creates the first half of the crew (males): Set males' color to blue. Define the date of death and the age of all males as the normal distribution with the parameters selected from the user interface. Define all males as fertile (all males were examined before the mission so that initially only fertile members are present).
1. **Create females:** Creates the second half of the crew (females): Set females' color to red. Define the date of death and the age of all females as the normal distribution with the parameters selected from the user interface. Define all females as fertile (all females were examined before the mission so that initially only fertile members are present). Determine how many children a female can have and when her menopause begins, both as normal distribution with the parameters selected in the user interface. Define that all females are not pregnant.
1. **Fixing crew's age:** Depending on the parameters selected in the user interface, it might happen that some crew members have a negative age due to the normal distribution of age. Therefore, this step ensures that the members affected by this effect receive an age between 0 and 365 days.
1. **Random position:** Assign a random position in the spaceship to each crew member.
1. **Not in space:** Make sure no crew member was randomly positioned outside the spacecraft.
1. **Count sex:** Count how many males and females currently exist and how many are fertile or infertile. This step is necessary to subsequently calculate the initial infertility as a distribution over the crew.
1. **Determine mean age:** Calculate the average age of the crew.
1. **Crews' infertility:** Randomly distribute the infertility status to the crew according to the parameters configured in the user interface.
1. **Unfertile women cannot have children:** This step ensures that women who are infertile cannot have children.
1. **Count sex:** Count how many males and females currently exist and how many are fertile or infertile. This step will now be performed again after the infertility status has been correctly distributed across the crew. This will give us statistics about the actual infertility at the start time of the mission.
1. **Reset ticks:** The ticks of the simulation are reset.
### Function Go
At each tick of the simulation the following events take place. Reminder: A tick simulates one day of the intergalactic journey or approx. one month (depending on your choice in the user interface).
1. **Check life:** The first step is to check if and how many crew members die today. Everyone whose lifespan has expired is marked dead and is no longer part of the simulation. All members who do not die naturally today will become one day or month older.
1. **Check if accidents occur:** It will be checked whether there will be an accident on the spaceship today. The statistical probability of an accident is 1%. If this probability applies, an accident occurs. It is also checked in which part of the spaceship the accident occurs. When an accident happens, it happens 70% in a black area, 20% in a dark area, 8% in a gray area, and 1% in the white area. The accidents in the black area end in 30%, in the dark area in 15%, in the grey area in 5%, and in the white area in 1% of the cases deadly. Depending on whether and where an accident occurs, appropriate crew members from the affected part of the ship are randomly selected and marked as dead. These members are then no longer part of the simulation.
1. **Count sex:** Count how many males and females currently exist and how many are fertile or infertile. This will update the mission's statistic after all natural and unnatural deaths have been addressed.
1. **Mission ended?** It will be checked if the mission has been completed. This is the case when the mission year 6300 has been reached. The survivors of the mission can then colonize the distant planet. If the number of crew members is above the capacity limit, the mission also ends: In this case the members starve, die of thirst or suffocate because the resources are not sufficient. The mission can also end when all humans on the ship are extinct.
1. **Male actions:** The actions of the males are limited to the fact that their agents move randomly in the spaceship.
1. **Female actions:** The females move first randomly in the spaceship. With all females that are pregnant, the pregnancy progresses by one or 30 day(s). Afterwards it is determined whether and how many births there will be today. The pregnancy of the affected females is terminated and the birth is initiated. For each birth it is statistically determined whether there will be twins. The probability of this is 1%. Then it is decided whether a male or female will be born. The probability is the same for both sexes. For each newborn the age is set to zero and the other parameters are assigned as in the setup (day of death, fertility, number of children, menopause, etc.) The newborns are added to the crew.
1. **Mating:** In this step it is first determined how many males are at the permitted age for reproduction. This number indicates the maximum number of theoretically possible reproductions for that day. If the option for dynamic control of allowed reproduction is enabled in the user interface, this number is dynamically reduced if necessary to prevent overpopulation on the spacecraft. If the capacity limit is reached to 80%, only 30% of the males are allowed to mate with a female. If the capacity limit was reached to 90%, only three males are allowed to mate with a female. If the capacity limit is already reached to 95% or more, no reproduction at all is permitted on this day. The number of males determined in this way is selected randomly. The selected males randomly select a suitable female. Suitable females are not yet pregnant, are in the age range for permitted reproduction and are younger than the time of menopause. Now it is checked whether both partners are fertile and the female has not yet exceeded her child limit. If all conditions are met, intercourse occurs. After that there is a 75% probability that the female has become pregnant. If this probability is fulfilled, the female is marked as pregnant.
1. **Protection:** This step ensures that all children younger than 17 years and all pregnant females are in the safest area of the spacecraft. This measure ensures that the highest mission priority is maintained (crew survival).
1. **Not in space:** Make sure no crew member was randomly positioned outside the spacecraft.
1. **Count sex:** Count how many males and females currently exist and how many are fertile or infertile. This will update the statistics after all births due for that day have been handled.
1. **Determine mean age:** Calculate the average age of the crew.
1. **Determine year:** Calculate the current mission year.
1. **Update plots:** The "*Population over time (last 365 days)*" diagram is updated. This cannot be done automatically because, so to speak, the window of the graph has to move, so that the last 365 days are always visible.
1. **Time advancement:** Depending on the configuration, the simulation progresses by one day or one month.
## User Interface
The user interface is divided into six parts. For each part there is subsequently a separate section so that the information is better arranged.
### Initial parameters
- `initialCrewSize` The number of crew members to the mission's start. **Default: 100**
- `simulateMonthsInsteadOfDays` Should one day or one month be simulated per tick of the simulation? **Default: On = Months**
### Crew's initial age
- `initialAgeFemales` The age of females at the beginning of the mission. **Default: 20 years**
- `initialAgeMales` The age of males at the beginning of the mission. **Default: 20 years**
- `initialAgeStdDeviation` The age of the crew is a normal distribution. This is its standard deviation. **Default: 22 years**
### Max. age
- `maxAgeFemals` The maximum age of females. **Default: 85 years**
- `maxAgeMales` The maximum age of males. **Default: 79 years**
- `ageStdDeviation` The maximum age is a normal distribution. This is its standard deviation. **Default: 15 years**
### Crew's bio parameters
- `infertilityFemales` The infertility of females. **Default: 10%**
- `infertilityMales` The infertility of males. **Default: 15%**
- `maxChildrenPerFemale` The maximum number of children a woman can give birth to. **Default: 2 children**
- `maxChildrenStdDeviation` The maximum number of children per female is a normal distribution. This is its standard deviation. **Default: 0.5 children**
- `startAgePermittedMating` The age at which reproduction is allowed on this mission. **Default: 35 years**
- `endAgePermittedMating` The age up to which reproduction is permitted during this mission. **Default: 40 years**
- `useDynamicPermittedMating` Enables or disables the dynamic control of reproduction. Might prevents overpopulation. **Default: On**
### Females's bio parameters
- `meanAgeMenopause` The age at which the female menopause begins. Frédéric Marin and Camille Beluffi indicate 45 years as mean age, cf. [1]. A standard deviation is missing in their paper. I therefore use the default values from Magurský, Mesko, and Sokolík from 1975, cf. [2]. **Default: 48.81 years**
- `ageMenopauseStdDeviation` The age at which female menopause begins is a normal distribution. This is its standard deviation. As mentioned before, Frédéric Marin and Camille Beluffi [1] do not mention any standard deviation. I therefore use the information from Magurský, Mesko, and Sokolík [2]. **Default: 3.9 years**
### Statistics
- *Current year*: Indicates the current year of the mission.
- *Males' statistics* and *Females' statistics*: Indicates the total number of males and females, their average age, and the number of infertile individuals.
- *Crew's statistics*: Indicates the average age of the entire crew, how many accidents there were, how many deadly accidents and how many deaths overall. The number of pregnancies, the total number of births and the number of males and females born are also specified.
- *Population over time (6300 years)*: A time series over the duration of the entire mission, i.e. 6300 years. The time series indicates the size of the population. The total population, as well as the number of males and females.
- *Population over time (last 365 days)*: A time series of the population size over the last 365 days. The total population as well as the number of males and females are given.
## Things to Notice
This model has a lot of parameters, so a lot of interesting insights can be obtained. A first example is given here: It seems to be very difficult to find a stable combination of parameters so that the mission is guaranteed to be successful (even if the experiment is repeated several times). At least, without the dynamic control of propagation. I have not succeeded so far.
When the dynamic control of reproduction is activated, success can be guaranteed with two allowed children per female. However, this dynamic control is a significant cut in the freedom of the crew. From an ethical point of view it does not seem to be acceptable.
It would lead to a situation in which only a few selected people would be allowed to reproduce, which could lead to corruption and crime. The crew might tend to eliminate older crew members in order to escape the strict rules of dynamic control, etc. Therefore, it seems useful to find a parameter set under which dynamic control of reproduction is not necessary.
## Citation and References
### Cite this Model
2019-08-31 20:23:33 +00:00
This model can be cited in its entirety by citing the repository: "Sommer, Thorsten (2019). Simulation of long-distance space flight. DOI: [10.5281/zenodo.3382922](https://doi.org/10.5281/zenodo.3382922)"
2019-08-31 19:32:07 +00:00
2019-08-31 20:23:33 +00:00
The procedure of the simulation can be cited as: "Sommer, Thorsten (2019). Simulation of 6300 year intergalactic journey. DOI: [dx.doi.org/10.17504/protocols.io.6zshf6e](https://doi.org/10.17504/protocols.io.6zshf6e).
2019-08-31 19:32:07 +00:00
### References
- [1] https://arxiv.org/abs/1806.03856
- [2] https://www.ncbi.nlm.nih.gov/pubmed/4380
@#$#@#$#@
default
true
0
Polygon -7500403 true true 150 5 40 250 150 205 260 250
airplane
true
0
Polygon -7500403 true true 150 0 135 15 120 60 120 105 15 165 15 195 120 180 135 240 105 270 120 285 150 270 180 285 210 270 165 240 180 180 285 195 285 165 180 105 180 60 165 15
arrow
true
0
Polygon -7500403 true true 150 0 0 150 105 150 105 293 195 293 195 150 300 150
box
false
0
Polygon -7500403 true true 150 285 285 225 285 75 150 135
Polygon -7500403 true true 150 135 15 75 150 15 285 75
Polygon -7500403 true true 15 75 15 225 150 285 150 135
Line -16777216 false 150 285 150 135
Line -16777216 false 150 135 15 75
Line -16777216 false 150 135 285 75
bug
true
0
Circle -7500403 true true 96 182 108
Circle -7500403 true true 110 127 80
Circle -7500403 true true 110 75 80
Line -7500403 true 150 100 80 30
Line -7500403 true 150 100 220 30
butterfly
true
0
Polygon -7500403 true true 150 165 209 199 225 225 225 255 195 270 165 255 150 240
Polygon -7500403 true true 150 165 89 198 75 225 75 255 105 270 135 255 150 240
Polygon -7500403 true true 139 148 100 105 55 90 25 90 10 105 10 135 25 180 40 195 85 194 139 163
Polygon -7500403 true true 162 150 200 105 245 90 275 90 290 105 290 135 275 180 260 195 215 195 162 165
Polygon -16777216 true false 150 255 135 225 120 150 135 120 150 105 165 120 180 150 165 225
Circle -16777216 true false 135 90 30
Line -16777216 false 150 105 195 60
Line -16777216 false 150 105 105 60
car
false
0
Polygon -7500403 true true 300 180 279 164 261 144 240 135 226 132 213 106 203 84 185 63 159 50 135 50 75 60 0 150 0 165 0 225 300 225 300 180
Circle -16777216 true false 180 180 90
Circle -16777216 true false 30 180 90
Polygon -16777216 true false 162 80 132 78 134 135 209 135 194 105 189 96 180 89
Circle -7500403 true true 47 195 58
Circle -7500403 true true 195 195 58
circle
false
0
Circle -7500403 true true 0 0 300
circle 2
false
0
Circle -7500403 true true 0 0 300
Circle -16777216 true false 30 30 240
cow
false
0
Polygon -7500403 true true 200 193 197 249 179 249 177 196 166 187 140 189 93 191 78 179 72 211 49 209 48 181 37 149 25 120 25 89 45 72 103 84 179 75 198 76 252 64 272 81 293 103 285 121 255 121 242 118 224 167
Polygon -7500403 true true 73 210 86 251 62 249 48 208
Polygon -7500403 true true 25 114 16 195 9 204 23 213 25 200 39 123
cylinder
false
0
Circle -7500403 true true 0 0 300
dot
false
0
Circle -7500403 true true 90 90 120
face happy
false
0
Circle -7500403 true true 8 8 285
Circle -16777216 true false 60 75 60
Circle -16777216 true false 180 75 60
Polygon -16777216 true false 150 255 90 239 62 213 47 191 67 179 90 203 109 218 150 225 192 218 210 203 227 181 251 194 236 217 212 240
face neutral
false
0
Circle -7500403 true true 8 7 285
Circle -16777216 true false 60 75 60
Circle -16777216 true false 180 75 60
Rectangle -16777216 true false 60 195 240 225
face sad
false
0
Circle -7500403 true true 8 8 285
Circle -16777216 true false 60 75 60
Circle -16777216 true false 180 75 60
Polygon -16777216 true false 150 168 90 184 62 210 47 232 67 244 90 220 109 205 150 198 192 205 210 220 227 242 251 229 236 206 212 183
fish
false
0
Polygon -1 true false 44 131 21 87 15 86 0 120 15 150 0 180 13 214 20 212 45 166
Polygon -1 true false 135 195 119 235 95 218 76 210 46 204 60 165
Polygon -1 true false 75 45 83 77 71 103 86 114 166 78 135 60
Polygon -7500403 true true 30 136 151 77 226 81 280 119 292 146 292 160 287 170 270 195 195 210 151 212 30 166
Circle -16777216 true false 215 106 30
flag
false
0
Rectangle -7500403 true true 60 15 75 300
Polygon -7500403 true true 90 150 270 90 90 30
Line -7500403 true 75 135 90 135
Line -7500403 true 75 45 90 45
flower
false
0
Polygon -10899396 true false 135 120 165 165 180 210 180 240 150 300 165 300 195 240 195 195 165 135
Circle -7500403 true true 85 132 38
Circle -7500403 true true 130 147 38
Circle -7500403 true true 192 85 38
Circle -7500403 true true 85 40 38
Circle -7500403 true true 177 40 38
Circle -7500403 true true 177 132 38
Circle -7500403 true true 70 85 38
Circle -7500403 true true 130 25 38
Circle -7500403 true true 96 51 108
Circle -16777216 true false 113 68 74
Polygon -10899396 true false 189 233 219 188 249 173 279 188 234 218
Polygon -10899396 true false 180 255 150 210 105 210 75 240 135 240
house
false
0
Rectangle -7500403 true true 45 120 255 285
Rectangle -16777216 true false 120 210 180 285
Polygon -7500403 true true 15 120 150 15 285 120
Line -16777216 false 30 120 270 120
leaf
false
0
Polygon -7500403 true true 150 210 135 195 120 210 60 210 30 195 60 180 60 165 15 135 30 120 15 105 40 104 45 90 60 90 90 105 105 120 120 120 105 60 120 60 135 30 150 15 165 30 180 60 195 60 180 120 195 120 210 105 240 90 255 90 263 104 285 105 270 120 285 135 240 165 240 180 270 195 240 210 180 210 165 195
Polygon -7500403 true true 135 195 135 240 120 255 105 255 105 285 135 285 165 240 165 195
line
true
0
Line -7500403 true 150 0 150 300
line half
true
0
Line -7500403 true 150 0 150 150
pentagon
false
0
Polygon -7500403 true true 150 15 15 120 60 285 240 285 285 120
person
false
0
Circle -7500403 true true 110 5 80
Polygon -7500403 true true 105 90 120 195 90 285 105 300 135 300 150 225 165 300 195 300 210 285 180 195 195 90
Rectangle -7500403 true true 127 79 172 94
Polygon -7500403 true true 195 90 240 150 225 180 165 105
Polygon -7500403 true true 105 90 60 150 75 180 135 105
plant
false
0
Rectangle -7500403 true true 135 90 165 300
Polygon -7500403 true true 135 255 90 210 45 195 75 255 135 285
Polygon -7500403 true true 165 255 210 210 255 195 225 255 165 285
Polygon -7500403 true true 135 180 90 135 45 120 75 180 135 210
Polygon -7500403 true true 165 180 165 210 225 180 255 120 210 135
Polygon -7500403 true true 135 105 90 60 45 45 75 105 135 135
Polygon -7500403 true true 165 105 165 135 225 105 255 45 210 60
Polygon -7500403 true true 135 90 120 45 150 15 180 45 165 90
sheep
false
15
Circle -1 true true 203 65 88
Circle -1 true true 70 65 162
Circle -1 true true 150 105 120
Polygon -7500403 true false 218 120 240 165 255 165 278 120
Circle -7500403 true false 214 72 67
Rectangle -1 true true 164 223 179 298
Polygon -1 true true 45 285 30 285 30 240 15 195 45 210
Circle -1 true true 3 83 150
Rectangle -1 true true 65 221 80 296
Polygon -1 true true 195 285 210 285 210 240 240 210 195 210
Polygon -7500403 true false 276 85 285 105 302 99 294 83
Polygon -7500403 true false 219 85 210 105 193 99 201 83
square
false
0
Rectangle -7500403 true true 30 30 270 270
square 2
false
0
Rectangle -7500403 true true 30 30 270 270
Rectangle -16777216 true false 60 60 240 240
star
false
0
Polygon -7500403 true true 151 1 185 108 298 108 207 175 242 282 151 216 59 282 94 175 3 108 116 108
target
false
0
Circle -7500403 true true 0 0 300
Circle -16777216 true false 30 30 240
Circle -7500403 true true 60 60 180
Circle -16777216 true false 90 90 120
Circle -7500403 true true 120 120 60
tree
false
0
Circle -7500403 true true 118 3 94
Rectangle -6459832 true false 120 195 180 300
Circle -7500403 true true 65 21 108
Circle -7500403 true true 116 41 127
Circle -7500403 true true 45 90 120
Circle -7500403 true true 104 74 152
triangle
false
0
Polygon -7500403 true true 150 30 15 255 285 255
triangle 2
false
0
Polygon -7500403 true true 150 30 15 255 285 255
Polygon -16777216 true false 151 99 225 223 75 224
truck
false
0
Rectangle -7500403 true true 4 45 195 187
Polygon -7500403 true true 296 193 296 150 259 134 244 104 208 104 207 194
Rectangle -1 true false 195 60 195 105
Polygon -16777216 true false 238 112 252 141 219 141 218 112
Circle -16777216 true false 234 174 42
Rectangle -7500403 true true 181 185 214 194
Circle -16777216 true false 144 174 42
Circle -16777216 true false 24 174 42
Circle -7500403 false true 24 174 42
Circle -7500403 false true 144 174 42
Circle -7500403 false true 234 174 42
turtle
true
0
Polygon -10899396 true false 215 204 240 233 246 254 228 266 215 252 193 210
Polygon -10899396 true false 195 90 225 75 245 75 260 89 269 108 261 124 240 105 225 105 210 105
Polygon -10899396 true false 105 90 75 75 55 75 40 89 31 108 39 124 60 105 75 105 90 105
Polygon -10899396 true false 132 85 134 64 107 51 108 17 150 2 192 18 192 52 169 65 172 87
Polygon -10899396 true false 85 204 60 233 54 254 72 266 85 252 107 210
Polygon -7500403 true true 119 75 179 75 209 101 224 135 220 225 175 261 128 261 81 224 74 135 88 99
wheel
false
0
Circle -7500403 true true 3 3 294
Circle -16777216 true false 30 30 240
Line -7500403 true 150 285 150 15
Line -7500403 true 15 150 285 150
Circle -7500403 true true 120 120 60
Line -7500403 true 216 40 79 269
Line -7500403 true 40 84 269 221
Line -7500403 true 40 216 269 79
Line -7500403 true 84 40 221 269
wolf
false
0
Polygon -16777216 true false 253 133 245 131 245 133
Polygon -7500403 true true 2 194 13 197 30 191 38 193 38 205 20 226 20 257 27 265 38 266 40 260 31 253 31 230 60 206 68 198 75 209 66 228 65 243 82 261 84 268 100 267 103 261 77 239 79 231 100 207 98 196 119 201 143 202 160 195 166 210 172 213 173 238 167 251 160 248 154 265 169 264 178 247 186 240 198 260 200 271 217 271 219 262 207 258 195 230 192 198 210 184 227 164 242 144 259 145 284 151 277 141 293 140 299 134 297 127 273 119 270 105
Polygon -7500403 true true -1 195 14 180 36 166 40 153 53 140 82 131 134 133 159 126 188 115 227 108 236 102 238 98 268 86 269 92 281 87 269 103 269 113
x
false
0
Polygon -7500403 true true 270 75 225 30 30 225 75 270
Polygon -7500403 true true 30 75 75 30 270 225 225 270
@#$#@#$#@
NetLogo 6.1.0
@#$#@#$#@
@#$#@#$#@
@#$#@#$#@
<experiments>
<experiment name="test experiment" repetitions="1" runMetricsEveryStep="false">
<setup>setup</setup>
<go>go</go>
<metric>count turtles</metric>
<enumeratedValueSet variable="initialCrewSize">
<value value="100"/>
</enumeratedValueSet>
<enumeratedValueSet variable="endAgePermittedMating">
<value value="100"/>
</enumeratedValueSet>
<enumeratedValueSet variable="initialAgeFemales">
<value value="20"/>
</enumeratedValueSet>
<enumeratedValueSet variable="ageStdDeviation">
<value value="12"/>
</enumeratedValueSet>
<enumeratedValueSet variable="initialAgeStdDeviation">
<value value="22"/>
</enumeratedValueSet>
<enumeratedValueSet variable="infertilityMales">
<value value="15"/>
</enumeratedValueSet>
<enumeratedValueSet variable="maxChildrenStdDeviation">
<value value="0.5"/>
</enumeratedValueSet>
<enumeratedValueSet variable="meanAgeMenopause">
<value value="48.81"/>
</enumeratedValueSet>
<enumeratedValueSet variable="ageMenopauseStdDeviation">
<value value="3.9"/>
</enumeratedValueSet>
<enumeratedValueSet variable="maxChildrenPerFemale">
<value value="2"/>
</enumeratedValueSet>
<enumeratedValueSet variable="maxAgeMales">
<value value="73.4"/>
</enumeratedValueSet>
<enumeratedValueSet variable="initialAgeMales">
<value value="20"/>
</enumeratedValueSet>
<enumeratedValueSet variable="startAgePermittedMating">
<value value="16"/>
</enumeratedValueSet>
<enumeratedValueSet variable="maxAgeFemals">
<value value="80.1"/>
</enumeratedValueSet>
<enumeratedValueSet variable="infertilityFemales">
<value value="10"/>
</enumeratedValueSet>
<enumeratedValueSet variable="useDynamicPermittedMating">
<value value="true"/>
</enumeratedValueSet>
</experiment>
</experiments>
@#$#@#$#@
@#$#@#$#@
default
0.0
-0.2 0 0.0 1.0
0.0 1 1.0 0.0
0.2 0 0.0 1.0
link direction
true
0
Line -7500403 true 150 150 90 180
Line -7500403 true 150 150 210 180
@#$#@#$#@
0
@#$#@#$#@