Ejemplo n.º 1
0
    def test_serialization(self):

        self.world.layer_height.data[5][5] = 1
        self.world.layer_temperature.data[5][5] = 2
        self.world.layer_wind.data[5][5] = (3.0, 3.0)
        self.world.layer_atmosphere.data[5][5] = AtmospherePoint(wind=(3.0, 3.0), temperature=-1, wetness=0.3)
        self.world.layer_wetness.data[5][5] = 5
        self.world.layer_vegetation.data[5][5] = 1

        self.assertEqual(self.world, World.deserialize(config=BaseConfig, data=self.world.serialize()))
        self.world.do_step()
Ejemplo n.º 2
0
    def test_serialization(self):

        self.world.layer_height.data[5][5] = 1
        self.world.layer_temperature.data[5][5] = 2
        self.world.layer_wind.data[5][5] = (3.0, 3.0)
        self.world.layer_atmosphere.data[5][5] = AtmospherePoint(
            wind=(3.0, 3.0), temperature=-1, wetness=0.3)
        self.world.layer_wetness.data[5][5] = 5
        self.world.layer_vegetation.data[5][5] = 1

        self.assertEqual(
            self.world,
            World.deserialize(config=BaseConfig, data=self.world.serialize()))
        self.world.do_step()
Ejemplo n.º 3
0
    def setUp(self):

        self.world = World(w=self.W, h=self.H, config=BaseConfig)
        self.layer = self.world.layer_vegetation
Ejemplo n.º 4
0
class WorldTests(TestCase):

    W = 10
    H = 10

    def setUp(self):

        self.world = World(w=self.W, h=self.H, config=BaseConfig)
        self.layer = self.world.layer_vegetation

    def test_simple_step(self):
        self.world.do_step()

    def test_resize_increase(self):
        self.world.do_step()
        self.world.resize(self.world.w + 2, self.world.h + 3)
        self.world.do_step()

    def test_resize_decrease(self):
        self.world.do_step()
        self.world.resize(self.world.w - 2, self.world.h - 3)
        self.world.do_step()

    def test_serialization(self):

        self.world.layer_height.data[5][5] = 1
        self.world.layer_temperature.data[5][5] = 2
        self.world.layer_wind.data[5][5] = (3.0, 3.0)
        self.world.layer_atmosphere.data[5][5] = AtmospherePoint(wind=(3.0, 3.0), temperature=-1, wetness=0.3)
        self.world.layer_wetness.data[5][5] = 5
        self.world.layer_vegetation.data[5][5] = 1

        self.assertEqual(self.world, World.deserialize(config=BaseConfig, data=self.world.serialize()))
        self.world.do_step()

    def test_cell_info_randomize_stability(self):
        cell = self.world.cell_info(5, 5)
        randomized_cell = cell.randomize(1, 0.5)

        for i in range(100):
            self.assertEqual(randomized_cell, cell.randomize(1, 0.5))

    def test_cell_info_randomize_random_state_restore(self):
        random.seed(1)

        test_list = [random.randint(-100, 100) for i in range(100)]

        random.seed(1)

        cell = self.world.cell_info(5, 5)

        cell.randomize(1, 0.5)

        self.assertEqual(test_list, [random.randint(-100, 100) for i in range(100)])
Ejemplo n.º 5
0
 def setUp(self):
     self.world = World(w=self.W, h=self.H, config=BaseConfig)
     self.layer = self.world.layer_wind
Ejemplo n.º 6
0
from deworld import power_points
from deworld.configs import BaseConfig
from deworld import normalizers
from deworld.cartographer import draw_world

# shutil.rmtree('./results', ignore_errors=True)

# os.mkdir('./results')
# os.mkdir('./results/height')
# os.mkdir('./results/temperature')
# os.mkdir('./results/wind')

WIDTH = 100
HEIGHT = 100

world = World(w=WIDTH, h=HEIGHT, config=BaseConfig)

world.add_power_point(power_points.CircleAreaPoint(layer_type=LAYER_TYPE.HEIGHT,
                                                   name='circular_point_1',
                                                   x=25,
                                                   y=25,
                                                   power=0.75,
                                                   radius=15,
                                                   normalizer=normalizers.linear))

world.add_power_point(power_points.CircleAreaPoint(layer_type=LAYER_TYPE.HEIGHT,
                                                   name='circular_point_2',
                                                   x=35,
                                                   y=45,
                                                   power=-0.75,
                                                   radius=15,
Ejemplo n.º 7
0
from deworld import power_points
from deworld.configs import BaseConfig
from deworld import normalizers
from deworld.cartographer import draw_world

# shutil.rmtree('./results', ignore_errors=True)

# os.mkdir('./results')
# os.mkdir('./results/height')
# os.mkdir('./results/temperature')
# os.mkdir('./results/wind')

WIDTH = 100
HEIGHT = 100

world = World(w=WIDTH, h=HEIGHT, config=BaseConfig)


def get_height_power_function(borders, power_percent=1.0):
    def power_function(world, x, y):
        height = world.layer_height.data[y][x]

        if height < borders[0]:
            return (0.0, math.fabs(borders[0] - height) * power_percent)
        if height > borders[1]:
            return (math.fabs(borders[1] - height) * power_percent, 0.0)

        optimal = (borders[0] + borders[1]) / 2

        if height < optimal:
            return (0.0, math.fabs(borders[0] - height) / 2 * power_percent)
Ejemplo n.º 8
0
class WorldTests(TestCase):

    W = 10
    H = 10

    def setUp(self):

        self.world = World(w=self.W, h=self.H, config=BaseConfig)
        self.layer = self.world.layer_vegetation

    def test_simple_step(self):
        self.world.do_step()

    def test_resize_increase(self):
        self.world.do_step()
        self.world.resize(self.world.w + 2, self.world.h + 3)
        self.world.do_step()

    def test_resize_decrease(self):
        self.world.do_step()
        self.world.resize(self.world.w - 2, self.world.h - 3)
        self.world.do_step()

    def test_serialization(self):

        self.world.layer_height.data[5][5] = 1
        self.world.layer_temperature.data[5][5] = 2
        self.world.layer_wind.data[5][5] = (3.0, 3.0)
        self.world.layer_atmosphere.data[5][5] = AtmospherePoint(
            wind=(3.0, 3.0), temperature=-1, wetness=0.3)
        self.world.layer_wetness.data[5][5] = 5
        self.world.layer_vegetation.data[5][5] = 1

        self.assertEqual(
            self.world,
            World.deserialize(config=BaseConfig, data=self.world.serialize()))
        self.world.do_step()

    def test_cell_info_randomize_stability(self):
        cell = self.world.cell_info(5, 5)
        randomized_cell = cell.randomize(1, 0.5)

        for i in range(100):
            self.assertEqual(randomized_cell, cell.randomize(1, 0.5))

    def test_cell_info_randomize_random_state_restore(self):
        random.seed(1)

        test_list = [random.randint(-100, 100) for i in range(100)]

        random.seed(1)

        cell = self.world.cell_info(5, 5)

        cell.randomize(1, 0.5)

        self.assertEqual(test_list,
                         [random.randint(-100, 100) for i in range(100)])
Ejemplo n.º 9
0
from deworld import power_points
from deworld.configs import BaseConfig
from deworld import normalizers
from deworld.cartographer import draw_world

# shutil.rmtree('./results', ignore_errors=True)

# os.mkdir('./results')
# os.mkdir('./results/height')
# os.mkdir('./results/temperature')
# os.mkdir('./results/wind')

WIDTH = 100
HEIGHT = 100

world = World(w=WIDTH, h=HEIGHT, config=BaseConfig)


def get_height_power_function(borders, power_percent=1.0):
    def power_function(world, x, y):
        height = world.layer_height.data[y][x]

        if height < borders[0]:
            return (0.0, math.fabs(borders[0] - height) * power_percent)
        if height > borders[1]:
            return (math.fabs(borders[1] - height) * power_percent, 0.0)

        optimal = (borders[0] + borders[1]) / 2

        if height < optimal:
            return (0.0, math.fabs(borders[0] - height) / 2 * power_percent)