Exemplo n.º 1
0
def test_reproduce():
    test_ecosystem_configuration = get_test_ecosystem_configuration()
    test_ecosystem_configuration.lion_reproduce_birth_rate = 0.1
    test_ecosystem_configuration.maximum_lion_population = 109
    test_ecosystem_configuration.gazelle_net_reproduce_rate = 0.2
    test_ecosystem_configuration.maximum_gazelle_population = 1441
    test_ecosystem_configuration.grass_net_reproduce_rate = 0.3
    test_ecosystem_configuration.maximum_grass_population = 3381
    model = ecosystem.EcosystemModel(test_ecosystem_configuration)
    model.reset(100, 1000, 2000)
    assert model._lion_population == 100
    assert model._gazelle_population == 1000
    assert model._grass_population == 2000

    # reproduce without lion reproduction
    model.step(0.0, 0.0)
    assert model._lion_population == 100
    assert model._gazelle_population == 1200
    assert model._grass_population == 2600

    # reproduce with 80% lion reproduction
    model.step(0.8, 0.0)
    assert model._lion_population == 108
    assert model._gazelle_population == 1440
    assert model._grass_population == 3380

    # reproduce capped by maximum population
    model.step(1.0, 0.0)
    assert model._lion_population == 109
    assert model._gazelle_population == 1441
    assert model._grass_population == 3381
Exemplo n.º 2
0
def test_hunt():
    test_ecosystem_configuration = get_test_ecosystem_configuration()
    test_ecosystem_configuration.lion_hunt_rate = 0.1
    test_ecosystem_configuration.maximum_lion_food = 9
    model = ecosystem.EcosystemModel(test_ecosystem_configuration)
    model.reset(100, 1000, 0)
    assert model._lion_food == 0
    assert model._lion_population == 100
    assert model._gazelle_population == 1000

    # step without lion hunting
    model.step(0.0, 0.0)
    assert model._lion_food == 0
    assert model._lion_population == 100
    assert model._gazelle_population == 1000

    # step with 80% lion hunting
    model.step(0.0, 0.8)
    assert model._lion_food == 8
    assert model._lion_population == 100
    assert model._gazelle_population == 992

    # excess of maximum food is lost
    model.step(0.0, 0.8)
    assert model._lion_food == 9
    assert model._lion_population == 100
    assert model._gazelle_population == 984
Exemplo n.º 3
0
def test_lion_death():
    test_ecosystem_configuration = get_test_ecosystem_configuration()
    test_ecosystem_configuration.lion_death_rate = 0.1
    model = ecosystem.EcosystemModel(test_ecosystem_configuration)
    model.reset(100, 0, 0)
    assert model._lion_population == 100
    model.step(0.0, 0.0)
    assert model._lion_population == 90
Exemplo n.º 4
0
def test_init_sim():
    test_ecosystem_configuration = get_test_ecosystem_configuration()
    model = ecosystem.EcosystemModel(test_ecosystem_configuration)
    assert model.ecosystem_configuration == test_ecosystem_configuration
    assert model._lion_population == 0
    assert model._lion_food == 0
    assert model._gazelle_population == 0
    assert model._grass_population == 0
    model.reset(1, 2, 3)
    assert model._lion_population == 1
    assert model._gazelle_population == 2
    assert model._grass_population == 3
Exemplo n.º 5
0
def test_gazelle_food():
    test_ecosystem_configuration = get_test_ecosystem_configuration()
    test_ecosystem_configuration.gazelle_food_consumption = 0.1
    model = ecosystem.EcosystemModel(test_ecosystem_configuration)
    model.reset(0, 100, 15)
    assert model._gazelle_population == 100
    assert model._grass_population == 15
    model.step(0.0, 0.0)
    assert model._gazelle_population == 100
    assert model._grass_population == 5
    model.step(0.0, 0.0)
    assert model._gazelle_population == 50
    assert model._grass_population == 0
Exemplo n.º 6
0
def test_lion_food():
    test_ecosystem_configuration = get_test_ecosystem_configuration()
    test_ecosystem_configuration.lion_food_consumption = 0.1
    model = ecosystem.EcosystemModel(test_ecosystem_configuration)
    model.reset(100, 0, 0)
    assert model._lion_food == 10
    assert model._lion_population == 100
    model.step(0.0, 0.0)
    assert model._lion_food == 0
    assert model._lion_population == 100
    model.step(0.0, 0.0)
    assert model._lion_food == 0
    assert model._lion_population == 0
Exemplo n.º 7
0
def test_sustainable_default_configuration():
    # verify that a stable state is possible where all populations rise using the default configuration
    config = ecosystem.EcosystemConfiguration()
    model = ecosystem.EcosystemModel(config)

    # this may need to be adjusted whenever the base simulation is changed
    model.reset(1000, 3000, 9000)
    initial_lion_population = model._lion_population
    initial_lion_food = model._lion_food
    initial_gazelle_population = model._gazelle_population
    initial_grass_population = model._grass_population
    reproduce_slightly_above_death_rate = (
        config.lion_death_rate + 0.05) / config.lion_reproduce_birth_rate
    hunt_slightly_above_food_consumption = (config.lion_food_consumption +
                                            0.05) / config.lion_hunt_rate
    model.step(reproduce_slightly_above_death_rate,
               hunt_slightly_above_food_consumption)
    assert model._lion_population > initial_lion_population
    assert is_whole_number(model._lion_population)
    assert model._lion_food > initial_lion_food
    assert model._gazelle_population > initial_gazelle_population
    assert is_whole_number(model._gazelle_population)
    assert model._grass_population > initial_grass_population
    assert is_whole_number(model._grass_population)