Exemple #1
0
def create_farm(world, name, labour_consumption, food_production, food_storage,
                money):
    farm = world.create_entity()
    storage = Storage()
    storage.set_limit(ResourcePile(Resource.FOOD, food_storage))

    needs = Needs()
    needs.add(
        Need("have someone in work",
             priority=1,
             pile=ResourcePile(Resource.MAN_DAY),
             price_change_on_buy=0.9,
             price_change_on_failed_buy=1.1))
    #needs.add(Need("have someone in work", priority=2, pile=ResourcePile(Resource.MAN_DAY), price_change_on_buy=0.8, price_change_on_failed_buy=1.05))
    #needs.add(Need("have someone in work", priority=3, pile=ResourcePile(Resource.MAN_DAY), price_change_on_buy=0.7, price_change_on_failed_buy=1.02))

    world.add_component(farm, Details(name))
    world.add_component(farm, Wallet(Money(money)))
    world.add_component(
        farm,
        Producer(ResourcePile(Resource.MAN_DAY, labour_consumption),
                 ResourcePile(Resource.FOOD, food_production)))
    world.add_component(farm, storage)
    world.add_component(farm, needs)
    return farm
def prepare_transaction_arguments(world, buyer_money, seller_money, buy_price,
                                  sell_price):
    buyer = world.create_entity()
    seller = world.create_entity()
    world.add_component(buyer, Wallet(Money(buyer_money)))
    world.add_component(buyer, Storage())
    world.add_component(seller, Wallet(Money(seller_money)))
    world.add_component(seller, Storage())

    sell_ent = world.create_entity()
    sell_order = SellOrder(seller, Resource.FOOD, Money(sell_price))
    buy_ent = world.create_entity()
    buy_order = BuyOrder(buyer, Resource.FOOD, Money(buy_price))

    world.add_component(buy_ent, buy_order)
    world.add_component(sell_ent, sell_order)
    return buyer, buy_order, seller, sell_order
Exemple #3
0
def createGlobalEntities(world):
    globals = world.create_entity()
    world.add_component(globals, StarDate())
    world.add_component(globals, StatsHistory())
    inheritance_pool = world.create_entity()
    world.add_component(inheritance_pool, Details("Insurance Pool"))
    world.add_component(inheritance_pool, Storage())
    world.add_component(inheritance_pool, Wallet(Money(0)))
    world.add_component(inheritance_pool, InheritancePool())
Exemple #4
0
def create_cloning_center(world, name, embryo_storage, embryo_food_cost,
                          money):
    cloning_center = world.create_entity()

    storage = Storage()
    storage.set_limit(ResourcePile(Resource.EMBRYO, embryo_storage))

    needs = Needs()
    needs.add(
        Need("food for one embryo",
             priority=1,
             pile=ResourcePile(Resource.FOOD, embryo_food_cost),
             price_change_on_buy=0.95,
             price_change_on_failed_buy=1.1))
    needs.add(
        Need("food for some more embrios",
             priority=2,
             pile=ResourcePile(Resource.FOOD, embryo_food_cost * 2),
             price_change_on_buy=0.9,
             price_change_on_failed_buy=1.05))
    needs.add(
        Need("food for even more embrios",
             priority=3,
             pile=ResourcePile(Resource.FOOD, embryo_food_cost * 3),
             price_change_on_buy=0.9,
             price_change_on_failed_buy=1.05))
    #needs.add(Need("have someone in work", priority=3, pile=ResourcePile(Resource.MAN_DAY), price_change_on_buy=0.7, price_change_on_failed_buy=1.02))

    world.add_component(cloning_center, Details(name))
    world.add_component(cloning_center, Wallet(Money(money)))
    # FIXME this should create embryo first but producing system allows only for one person to produce one thing (no more labor if man needs to change embrio to grown_human)
    # world.add_component(cloning_center, Producer(ResourcePile(Resource.FOOD, embryo_food_cost), ResourcePile(Resource.EMBRYO)))
    world.add_component(
        cloning_center,
        Producer(ResourcePile(Resource.FOOD, embryo_food_cost),
                 ResourcePile(Resource.GROWN_HUMAN)))
    world.add_component(cloning_center, storage)
    world.add_component(cloning_center, needs)
    return cloning_center
Exemple #5
0
def create_well(world, name, labour_consumption, water_production,
                water_storage, money):
    entity = world.create_entity()
    storage = Storage()
    storage.set_limit(ResourcePile(Resource.WATER, water_storage))

    needs = Needs()
    needs.add(
        Need("have someone in work",
             priority=1,
             pile=ResourcePile(Resource.MAN_DAY),
             price_change_on_buy=0.9,
             price_change_on_failed_buy=1.1))

    world.add_component(entity, Details(name))
    world.add_component(entity, Wallet(Money(money)))
    world.add_component(
        entity,
        Producer(ResourcePile(Resource.MAN_DAY, labour_consumption),
                 ResourcePile(Resource.WATER, water_production)))
    world.add_component(entity, storage)
    world.add_component(entity, needs)
    return entity
Exemple #6
0
                mem_log["time"][i], mem_log["total"][i], mem_log["dirty"][i],
                mem_log["cache"][i], mem_log["used"][i]
            ])


def export_time(task_list, filename):
    with open(filename, 'w', newline='') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow(["type", "start", "end"])
        for i in range(len(task_list)):
            writer.writerow(
                [task_list[i][0], task_list[i][1], task_list[i][2]])


mm = MemoryManager(268600, 268600, read_bw=7100, write_bw=3300)
storage = Storage(450000, read_bw=465, write_bw=465)
kernel = IOManager(mm, storage, dirty_ratio=0.4)

input_size = 20000
compute_time = 28

file1 = File("file1", input_size, input_size)
file2 = File("file2", input_size, input_size)
file3 = File("file3", input_size, input_size)
file4 = File("file4", input_size, input_size)

start_time = 0

task1_read_end = kernel.read(file1, start_time)
task1_compute_end = kernel.compute(task1_read_end, compute_time)
task1_write_end = kernel.write(file2, task1_compute_end)
Exemple #7
0
 def consume_if_possible(storage: Storage, pile: ResourcePile):
     if storage.has_at_least(pile):
         storage.remove(pile)
         print(f"Removed {pile} from {details.name}")
     else:
         print(f"Consumer {details.name} did not have {pile}")
Exemple #8
0
def create_person(world, name, food_consumption, food_amount,
                  water_consumption, water_amount, money):
    person = world.create_entity()
    storage = Storage()
    storage.add(ResourcePile(Resource.FOOD, food_amount))
    storage.add(ResourcePile(Resource.WATER, water_amount))
    # not possible to store man days
    storage.set_limit(ResourcePile(Resource.MAN_DAY, 1))

    needs = Needs()
    needs.add(
        Need("have water for tomorrow",
             priority=0,
             pile=ResourcePile(Resource.WATER, water_consumption),
             price_change_on_buy=0.8,
             price_change_on_failed_buy=1.1))
    needs.add(
        Need("have food for tomorrow",
             priority=1,
             pile=ResourcePile(Resource.FOOD, food_consumption),
             price_change_on_buy=0.8,
             price_change_on_failed_buy=1.1))
    needs.add(
        Need("have water for next few days",
             priority=2,
             pile=ResourcePile(Resource.WATER, 5 * water_consumption),
             price_change_on_buy=0.8,
             price_change_on_failed_buy=1.1))
    needs.add(
        Need("have food for next few days",
             priority=2,
             pile=ResourcePile(Resource.FOOD, 4 * food_consumption),
             price_change_on_buy=0.8,
             price_change_on_failed_buy=1.1))
    needs.add(
        Need("have a big stash of water",
             priority=3,
             pile=ResourcePile(Resource.WATER, 15 * water_consumption),
             price_change_on_buy=0.8,
             price_change_on_failed_buy=1.1))
    needs.add(
        Need("have a big stash of food",
             priority=3,
             pile=ResourcePile(Resource.FOOD, 10 * food_consumption),
             price_change_on_buy=0.8,
             price_change_on_failed_buy=1.1))

    world.add_component(person, Details(name))
    world.add_component(person, Wallet(Money(money)))
    consumption = Consumer()
    consumption.add_need(ResourcePile(Resource.FOOD, food_consumption))
    consumption.add_need(ResourcePile(Resource.WATER, water_consumption))
    world.add_component(person, consumption)
    # man days are produced from nothing
    world.add_component(
        person,
        Producer(ResourcePile(Resource.NOTHING, 0),
                 ResourcePile(Resource.MAN_DAY)))
    # simplified growth process so that human cannot grow before is bought at cloning center
    # world.add_component(person, Producer(ResourcePile(Resource.EMBRYO), ResourcePile(Resource.GROWN_HUMAN)))
    world.add_component(person, storage)
    world.add_component(person, needs)
    return person