Ignore:
Timestamp:
06/30/15 23:02:42 (9 years ago)
Author:
oriona
Message:

removed unused part of code, refactorization

File:
1 edited

Legend:

Unmodified
Added
Removed
  • experiments/frams/foraminifera/data/scripts/forams_benthic.expdef

    r402 r404  
    3434global foodenergywaiting;
    3535global reprocounter;
    36 global delta_change;
    3736
    3837@include "forams_repro.inc"
     
    5352        pop.name = "Creatures";
    5453        pop.en_assim = 0;
    55         pop.nnsim = 1;
     54        pop.nnsim = 0;
    5655        pop.enableperf = 1;
    5756        pop.death = 1;
     
    7069        pop.othermask = 0x10000;
    7170
    72 
    73         var size_h = ExpParams.haplo_rad * ExpParams.delta_rate + ExpParams.haplo_rad;
    74         var size_d = ExpParams.diplo_rad * ExpParams.delta_rate + ExpParams.diplo_rad;
    75         ExpParams.gend = "//0\np:sh=1,sx=" + ExpParams.diplo_rad + ",sy=" + ExpParams.diplo_rad + ",sz=" + ExpParams.diplo_rad + ", rz=3.14159265358979";
    76         ExpParams.genh = "//0\np:sh=1,sx=" + size_h + ",sy=" + size_h + ",sz=" + size_h + ", rz=3.14159265358979";
     71        //radius of the chamber
     72        ExpParams.rads = [1.2, 0.6];
     73        //inital genotypes
     74        ExpParams.genh = "//0\np:sh=1,sx=" + ExpParams.rads[0] + ",sy=" + ExpParams.rads[0] + ",sz=" + ExpParams.rads[0] + ", rz=3.14159265358979";
     75        ExpParams.gend = "//0\np:sh=1,sx=" + ExpParams.rads[1] + ",sy=" + ExpParams.rads[1] + ",sz=" + ExpParams.rads[1] + ", rz=3.14159265358979";
     76        ExpParams.gend += "\nn:p=0,d=\"S\"";
    7777        ExpParams.e_meta = 0.1;
    7878        ExpParams.feedrate = 0.5;
     
    9191        ExpParams.v_min_d = 300;
    9292        ExpParams.v_min_h = 300;
    93         //radius of the chamber
    94         ExpParams.haplo_rad = 1.2;
    95         ExpParams.diplo_rad = 0.6;
    9693        //minimal age for reproduction
    9794        ExpParams.age_min_d = 100;
     
    104101        ExpParams.repro_thr = 1;
    105102
    106         //size change rate
    107         ExpParams.delta_rate = 0.1;
    108103        //grwoth speed in time steps
    109104        ExpParams.growth_step = 50;
     
    118113        World.wrldsiz = ExpParams.wsize;
    119114        World.wrldbnd = 1;
    120 
    121         delta_change = 0.5;
    122115}
    123116
     
    136129                cr.energ0 = ExpParams.v_min_h - ExpParams.repro_thr;
    137130                cr.energy = cr.energ0;
    138                 cr.user1 = {"vamin" : ExpParams.v_min_h, "amin": ExpParams.age_min_h, "delta_h" : ExpParams.haplo_rad * ExpParams.delta_rate, "delta_d" : ExpParams.diplo_rad * ExpParams.delta_rate};
    139                 cr.user2 = {"Va" : ExpParams.v_min_h - ExpParams.repro_thr, "gen" : 0, "growth_step" : ExpParams.growth_step, "rsize" : ExpParams.haplo_rad, "vinit" : ExpParams.v_min_h - ExpParams.repro_thr};
     131                cr.user1 = {"vamin" : ExpParams.v_min_h, "amin": ExpParams.age_min_h};
     132                cr.user2 = {"Va" : ExpParams.v_min_h - ExpParams.repro_thr, "gen" : 0, "growth_step" : ExpParams.growth_step, "rsize" : ExpParams.rads[0], "vinit" : ExpParams.v_min_h - ExpParams.repro_thr};
    140133        }
    141134        ExpState.totaltestedcr = 0;
     
    230223        cr.signals.add("repro");
    231224        cr.signals[0].power = 1;
    232 
    233225}
    234226
    235227function onCreaturesStep(cr)
    236228{
    237         cr.moveAbs(cr.pos_x, cr.pos_y, 0); //adjustment in z axis
     229        //TODO moving inside sediment?
     230        cr.moveAbs(cr.pos_x, cr.pos_y, 0); //adjustment in z axis
    238231        var p = cr.getMechPart(0);
    239232        var n = cr.signals.receiveSet("food", ExpParams.food_range);
     
    276269        if (cr.energy > 100)
    277270        {
     271                //TODO energy costs dependant on size
    278272                // cr.energy_m = cr.user2["Va"]/cr.user2["vinit"];
    279273        }
     
    281275        if (cr.lifespan >= ExpParams.max_age)
    282276        {
     277                //TODO what is max age value? should there be one?
    283278                Populations[0].kill(cr);
     279                return;
    284280        }
    285281
    286282        //foram growth
    287         else if (cr.lifespan == cr.user2["growth_step"])
    288         {
    289                 var pos = [cr.center_x, cr.center_y, cr.center_z];
    290                 var energy = cr.energy;
    291                 var cr2 = null;
    292                 if (cr.user2["gen"] == 0)
    293                 {
    294                         var new_r = ExpParams.haplo_rad * Math.min(Math.max(cr.user2["Va"] / cr.user2["vinit"] * 0.5, 1), 2.5);
    295                         cr.user2["rsize"] = new_r;
    296                         cr2 = Populations[0].add("//0\np:sh=1,sx=" + cr.user2["rsize"] + ",sy=" + cr.user2["rsize"] + ",sz=" + cr.user2["rsize"] + ", rz=3.14159265358979");
    297                         cr2.user1 = {"vamin" : cr.user1["vamin"], "amin": cr.user1["amin"], "delta_h" : cr.user1["delta_h"], "delta_d" : cr.user1["delta_d"]};
    298                 }
    299                 else if (cr.user2["gen"] == 1)
    300                 {
    301                         var new_r = ExpParams.diplo_rad * Math.min(Math.max(cr.user2["Va"] / cr.user2["vinit"] * 0.5, 1), 2.5);
    302                         cr.user2["rsize"] = new_r;
    303 
    304                         var geno = "//0\np:sh=1,sx=" + cr.user2["rsize"] + ",sy=" + cr.user2["rsize"] + ",sz=" + cr.user2["rsize"] + ", rz=3.14159265358979";
    305                         geno += "\nn:p=0,d=\"S\""; //TODO is this the only difference with haploid code? TODO why initial genotypes are not used as defined in ExpParams?
     283        if (cr.lifespan == cr.user2["growth_step"])
     284        {
     285                //TODO how size is related to the energy?
     286                cr.user2["rsize"] = ExpParams.rads[cr.user2["gen"]] * Math.min(Math.max(float(cr.user2["Va"] / cr.user2["vinit"]) * 0.5, 1.0), 2.5);
     287                var geno = "//0\np:sh=1,sx=" + cr.user2["rsize"] + ",sy=" + cr.user2["rsize"] + ",sz=" + cr.user2["rsize"] + ", rz=3.14159265358979";
     288                if (cr.user2["gen"] == 1)
     289                {
     290                        geno += "\nn:p=0,d=\"S\""; //TODO why initial genotypes are not used as defined in ExpParams?
    306291                        //TODO maybe it would be nice if they rotated so the "S" would show where they are going (direction/intention)
    307                         cr2 = Populations[0].add(geno);
    308 
    309 
    310                         cr2.user1 = [ {"vamin" : cr.user1[0]["vamin"], "amin": cr.user1[0]["amin"], "delta_h" : cr.user1[0].get("delta_h"), "delta_d" : cr.user1[0]["delta_d"]  }, {"vamin" : cr.user1[1]["vamin"], "amin": cr.user1[1]["amin"], "delta_h" : cr.user1[1]["delta_h"], "delta_d" : cr.user1[1]["delta_d"]  }];
    311                 }
    312                 cr2.energy = energy;
    313                 cr2.user2 = {"Va" : cr.user2["Va"], "gen" : cr.user2["gen"], "growth_step" : cr.user2["growth_step"], "rsize" : cr.user2["rsize"], "vinit": cr.user2["vinit"]};
     292                }
     293                var cr2 = Populations[0].add(geno);
     294                cr2.energy = cr.energy;
     295                setGenotype(cr2, cr.user1, cr.user2);
    314296                cr2.moveAbs(cr.center_x - cr2.size_x / 2, cr.center_y - cr2.size_y / 2, cr.pos_z);
    315297
     
    355337}
    356338
     339function setGenotype(cr, new_user1, new_user2)
     340{
     341        cr.user2 = {"Va" : new_user2["Va"], "gen" : new_user2["gen"], "growth_step" : new_user2["growth_step"], "rsize" : new_user2["rsize"], "vinit": new_user2["vinit"]};
     342        if (cr.user2["gen"] == 0)
     343        {
     344                cr.user1 = {"vamin" : new_user1["vamin"], "amin": new_user1["amin"] };
     345        }
     346        else if (cr.user2["gen"] == 1)
     347        {
     348                cr.user1 = [ {"vamin" : new_user1[0]["vamin"], "amin": new_user1[0]["amin"] }, {"vamin" : new_user1[1]["vamin"], "amin": new_user1[1]["amin"] }];
     349        }       
     350
     351}
     352
    357353// -------------------------------- creature end --------------------------------
    358354
     
    376372        cr.signals[0].value = cr.getMechPart(0);
    377373
    378         var retry = 100; //try 100 times
    379         while (retry--)
    380         {
    381                 placeCreatureRandomly(cr, 0, 0);
    382                 if (!cr.boundingBoxCollisions(0))
    383                         return cr;
    384         }
    385 
    386         return cr;
     374        placeRandomlyNotColliding(cr);
    387375}
    388376
     
    395383                Collision.Creature1.energy_m = Collision.Creature1.energy_m + e;
    396384                Collision.Creature2.energy_p = Collision.Creature2.energy_p + e;
    397                 var ener = float(Collision.Creature2.user2["Va"]);
    398                 var sum = float(float(ener) + float(e));
    399                 Collision.Creature2.user2["Va"] = float(sum);
     385                Collision.Creature2.user2["Va"] = float(Collision.Creature2.user2["Va"]) + float(e);
    400386        }
    401387}
     
    434420
    435421prop:
    436 id:haplo_rad
    437 name:Haploid radius
    438 type:f 0.1 3 1.2
    439 
    440 prop:
    441422id:growth_step
    442423name:Growth step
    443 type:d 50 10000 1000
    444 
    445 prop:
    446 id:delta_rate
    447 name:Delta rate
    448 type:f 0.0001 0.1 0.001
    449 
    450 prop:
    451 id:diplo_rad
    452 name:Diploid radius
    453 type:f 0.1 3 0.6
    454 
    455 prop:
    456 id:foodPop
    457 name:Food size
    458 type:d 1 1000 10
    459 
    460 prop:
    461 id:age_min
    462 name:Minimal age for reproduction
    463 type:d 100 10000 200
     424type:d 10 10000 1000
     425
     426prop:
     427id:rads
     428name: haploid and diploid radius
     429type:x
    464430
    465431prop:
     
    489455prop:
    490456id:repro_thr
    491 name:Threshold for reproduction
     457name:amount of energy initial creatures need to gather to reproduce
    492458type:d 1 1000 1
    493459
     
    615581flags:16
    616582
     583prop:
     584id:foodPop
     585name:food size
     586type:d 1 1000 10
     587
    617588state:
    618589id:food
Note: See TracChangeset for help on using the changeset viewer.