forage.fight(param.fight_slope),
    forage.encounter(cannib),
    forage.radius(param.cannibalism_radius),
    move.larva(param.larva_scale,
               param.larva_shape),
    move.adult(param.adult_scale,
               param.adult_shape),
    repro.mating(param.mate_encounter),
    repro.radius(param.mate_radius),
    repro.fecundity(param.fecundity_maximum,
                    param.fecundity_decay),
    repro.density(param.eta,
                  param.gamma),
    repro.init_sex(param.female_prob),
    survive.egg_sur(param.egg_prob),
    survive.pupa_sur(param.pupa_prob),
    survive.adult_sur(param.adult_prob),
    survive.larva_sur(param.larva_prob_non_bt_rr,
                      param.larva_prob_non_bt_ss,
                      param.larva_prob_bt_rr,
                      sur,
                      dominance)
]

base_dir = sys.argv[0].split('.')[0]
base_save = base_dir.split('/')[-1]

try:
    work_path = os.environ['WORK']
    path_save = '{}/{}/{}'.format(work_path,
                                  'FallArmyworm_Thesis',
コード例 #2
0
class Simulator(object):
    """
    Class to setup and run a simulation of only biomass growth:

    Variables:
        nums:   initial population numbers
        forage: the plant forage model
    """

    grid = [(keyword.hexagon, 1, 1, True), (keyword.hexagon, 1, 1, True)]
    attrs = {1: tracking.genotype_attrs}
    data = (np.inf, )
    steps = [({
        keyword.larva: [keyword.survive],
        keyword.egg: [keyword.survive],
        keyword.pupa: [keyword.survive],
        keyword.female: [keyword.survive]
    }, )]
    emigration = []
    immigration = []

    input_models = [
        growth.max_gut(),
        growth.growth(param.alpha_ss, param.alpha_rr, param.beta_ss,
                      param.beta_rr, dominance),
        init_bio.init_num(param.lam_0_egg),
        init_bio.init_mass(param.mu_0_egg_ss, param.mu_0_egg_rr,
                           param.sig_0_egg_ss, param.sig_0_egg_rr, dominance),
        init_bio.init_juvenile(param.mu_0_larva_ss, param.mu_0_larva_rr,
                               param.sig_0_larva_ss, param.sig_0_larva_rr,
                               dominance),
        init_bio.init_mature(param.mu_0_mature_ss, param.mu_0_mature_rr,
                             param.sig_0_mature_ss, param.sig_0_mature_rr,
                             dominance),
        init_bio.init_plant(param.mu_leaf, param.sig_leaf), sex_model,
        sur.egg_sur(param.egg_prob),
        sur.pupa_sur(param.pupa_prob),
        sur.adult_sur(param.adult_prob)
    ]
    input_variables = param.repro_values

    # input_survive.larva_survival,
    nums: hint.init_pops
    bt_prop: float
    ss_bt_sur: float = param.larva_prob_bt_low_ss
    simulation: hint.simulation = None

    def __post_init__(self):

        larva_survive = sur.larva_sur(param.larva_prob_non_bt_rr,
                                      param.larva_prob_non_bt_ss,
                                      param.larva_prob_bt_rr, self.ss_bt_sur,
                                      dominance)
        input_models = self.input_models.copy()
        input_models.append(larva_survive)

        self.simulation = main_simulation.Simulation. \
            setup(self.nums,
                  self.grid,
                  self.attrs,
                  self.data,
                  self.bt_prop,
                  self.steps,
                  self.emigration,
                  self.immigration,
                  *input_models,
                  **self.input_variables)

    def run(self, times: list) -> None:
        """
        Run the simulation for each time

        Args:
            times: the times for the simulation

        Returns:
            biomass data
        """

        for _ in times[1:]:
            self.simulation.step()