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
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())
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
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
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)
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}")
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