- Timestamp:
- 08/03/15 12:06:54 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
experiments/frams/foraminifera/data/scripts/foraminifera.inc
r418 r421 6 6 function reproduce_haploid(parent, parent2) 7 7 { 8 var number = parent.user2["Va"] / ExpParams. ofnumd + parent2.user2["Va"] / ExpParams.ofnumd;8 var number = parent.user2["Va"] / ExpParams.energy0d + parent2.user2["Va"] / ExpParams.energy0d; 9 9 10 10 for (var j = 0; j < number; j++) 11 11 { 12 createOffspring(ExpParams.gend, ExpParams. ofnumd, [parent.user1, parent2.user1], {"Va" : ExpParams.ofnumd, "gen" : 1 , "growth_step" : ExpParams.growth_step, "rsize": ExpParams.rads[1], "vinit": ExpParams.ofnumd}); //TODO genes from both generations in user112 createOffspring(ExpParams.gend, ExpParams.energy0d, [parent.user1, parent2.user1], {"Va" : ExpParams.energy0d, "gen" : 1 , "growth_step" : ExpParams.growth_step, "rsize": ExpParams.rads[1], "vinit": ExpParams.energy0d}); //TODO genes from both generations in user1 13 13 } 14 14 } … … 16 16 function reproduce_diploid(parent) 17 17 { 18 var number = parent.user2["Va"] / ExpParams. ofnumh;18 var number = parent.user2["Va"] / ExpParams.energy0h; 19 19 for (var j = 0; j < number / 2; j++) 20 20 { … … 23 23 if (Math.rnd01 < ExpParams.crossprob) 24 24 { 25 crossover(parent, " vamin");25 crossover(parent, "minenergy"); 26 26 crossed = 1; 27 27 } … … 29 29 for (var k = 0; k < 2; k++) 30 30 { 31 createOffspring(ExpParams.genh, ExpParams. ofnumh, {"vamin" : ExpParams.v_min_h, "amin": ExpParams.age_min_h}, {"Va" : ExpParams.ofnumh, "gen" : 0 , "growth_step" : ExpParams.growth_step, "rsize" : ExpParams.rads[0], "vinit": ExpParams.ofnumh});31 createOffspring(ExpParams.genh, ExpParams.energy0h, {"minenergy" : ExpParams.minenerg[0], "minage": ExpParams.minage[0]}, {"Va" : ExpParams.energy0h, "gen" : 0 , "growth_step" : ExpParams.growth_step, "rsize" : ExpParams.rads[0], "vinit": ExpParams.energy0h}); //TODO different vamin and amin for haploids and diploids? 32 32 } 33 33 … … 35 35 if (crossed == 1) 36 36 { 37 crossover(parent, " vamin");37 crossover(parent, "minenergy"); 38 38 crossed = 0; 39 39 } … … 61 61 function onStep() 62 62 { 63 var haploids = 0;64 var diploids = 0;65 var e_inc_h = 0.0;66 var e_inc_d = 0.0;67 var e_nut = 0.0;68 var size_h = 0.0;69 var size_d = 0.0;70 var vmin_h = 0.0;71 var vmin_d = 0.0;72 73 for (var i = 0; i < Populations[0].size; i++)74 {75 var cr = Populations[0].get(i);76 if (cr.user2["gen"] == 0)77 {78 haploids += 1;79 e_inc_h += cr.energy;80 size_h += ExpParams.rads[0]; //TODO change of size dependent on gene81 vmin_h += cr.user1["vamin"];82 }83 else if (cr.user2["gen"] == 1)84 {85 diploids += 1;86 e_inc_d += cr.energy;87 size_d += ExpParams.rads[1]; //TODO change of size dependent on gene88 vmin_d += cr.user1[0]["vamin"];89 }90 }91 92 for (var i = 0; i < Populations[1].size; i++)93 {94 var cr = Populations[1].get(i);95 e_nut += cr.energy;96 }97 98 if (haploids < 2 && diploids == 0)99 {100 Simulator.print("no more creatures, stopped.");101 Simulator.stop();102 }103 104 var l1 = [haploids, diploids, Populations[1].size];105 var l2 = [e_inc_h, e_inc_d, e_nut];106 var dp = diploids;107 var hp = haploids;108 if (dp == 0) dp = 0.000001;109 if (hp == 0) hp = 0.000001;110 var l3 = [size_h / hp, vmin_h / hp, size_d / dp, vmin_d / dp];111 63 112 64 if (ExpParams.logging == 1) 113 65 { 114 log(l1, "log.txt"); 115 log(l2, "log2.txt"); 116 log(l3, "log3.txt"); 66 createStatistics(); 117 67 } 118 //food growth --------------------------------------------- 119 foodenergywaiting = foodenergywaiting + ExpParams.feedrate; 120 if (foodenergywaiting > ExpParams.feede0) 68 69 //nutrient growth --------------------------------------------- 70 nutrientenergywaiting = nutrientenergywaiting + ExpParams.feedrate; 71 if (nutrientenergywaiting > ExpParams.feede0) 121 72 { 122 for (var i = 0; i < ExpParams. foodPop; i++)73 for (var i = 0; i < ExpParams.nutrientPop; i++) 123 74 { 124 add food();75 addNutrient(); 125 76 } 126 77 127 foodenergywaiting = 0.0;78 nutrientenergywaiting = 0.0; 128 79 Simulator.checkpoint(); 129 80 } … … 183 134 } 184 135 136 function createStatistics() 137 { 138 var haploids = 0; 139 var diploids = 0; 140 var e_inc_h = 0.0; 141 var e_inc_d = 0.0; 142 var e_nut = 0.0; 143 var size_h = 0.0; 144 var size_d = 0.0; 145 var vmin_h = 0.0; 146 var vmin_d = 0.0; 147 148 for (var i = 0; i < Populations[0].size; i++) 149 { 150 var cr = Populations[0].get(i); 151 if (cr.user2["gen"] == 0) 152 { 153 haploids += 1; 154 e_inc_h += cr.energy; 155 size_h += ExpParams.rads[0]; //TODO change of size dependent on gene 156 vmin_h += cr.user1["minenergy"]; 157 } 158 else if (cr.user2["gen"] == 1) 159 { 160 diploids += 1; 161 e_inc_d += cr.energy; 162 size_d += ExpParams.rads[1]; //TODO change of size dependent on gene 163 vmin_d += cr.user1[0]["minenergy"]; 164 } 165 } 166 167 for (var i = 0; i < Populations[1].size; i++) 168 { 169 var cr = Populations[1].get(i); 170 e_nut += cr.energy; 171 } 172 173 var l1 = [haploids, diploids, Populations[1].size]; 174 var l2 = [e_inc_h, e_inc_d, e_nut]; 175 var dp = diploids; 176 var hp = haploids; 177 if (dp == 0) dp = 0.000001; 178 if (hp == 0) hp = 0.000001; 179 var l3 = [size_h / hp, vmin_h / hp, size_d / dp, vmin_d / dp]; 180 181 log(l1, "log_sizes.txt"); 182 log(l2, "log_energy.txt"); 183 log(l3, "log_sizes_v.txt"); 184 } 185 185 // -------------------------------- step end --------------------------------
Note: See TracChangeset
for help on using the changeset viewer.