Ignore:
Timestamp:
08/03/15 12:06:54 (9 years ago)
Author:
oriona
Message:

refactoring, removed unused params, creatures and food chanfe to forams and nutirents

File:
1 edited

Legend:

Unmodified
Added
Removed
  • experiments/frams/foraminifera/data/scripts/foraminifera.inc

    r418 r421  
    66function reproduce_haploid(parent, parent2)
    77{
    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;
    99
    1010        for (var j = 0; j < number; j++)
    1111        {
    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 user1
     12                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
    1313        }
    1414}
     
    1616function reproduce_diploid(parent)
    1717{
    18         var number = parent.user2["Va"] / ExpParams.ofnumh;
     18        var number = parent.user2["Va"] / ExpParams.energy0h;
    1919        for (var j = 0; j < number / 2; j++)
    2020        {
     
    2323                if (Math.rnd01 < ExpParams.crossprob)
    2424                {
    25                         crossover(parent, "vamin");
     25                        crossover(parent, "minenergy");
    2626                        crossed = 1;
    2727                }
     
    2929                for (var k = 0; k < 2; k++)
    3030                {
    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?
    3232                }
    3333
     
    3535                if (crossed == 1)
    3636                {
    37                         crossover(parent, "vamin");
     37                        crossover(parent, "minenergy");
    3838                        crossed = 0;
    3939                }
     
    6161function onStep()
    6262{
    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 gene
    81                         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 gene
    88                         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];
    11163
    11264        if (ExpParams.logging == 1)
    11365        {
    114                 log(l1, "log.txt");
    115                 log(l2, "log2.txt");
    116                 log(l3, "log3.txt");
     66                createStatistics();
    11767        }
    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)
    12172        {
    122                 for (var i = 0; i < ExpParams.foodPop; i++)
     73                for (var i = 0; i < ExpParams.nutrientPop; i++)
    12374                {
    124                         addfood();
     75                        addNutrient();
    12576                }
    12677
    127                 foodenergywaiting = 0.0;
     78                nutrientenergywaiting = 0.0;
    12879                Simulator.checkpoint();
    12980        }
     
    183134}
    184135
     136function 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}
    185185// -------------------------------- step end --------------------------------
Note: See TracChangeset for help on using the changeset viewer.