diff --git a/db/commoditys.yml b/db/commoditys.yml index f5195e2..2d6886e 100644 --- a/db/commoditys.yml +++ b/db/commoditys.yml @@ -4,7 +4,7 @@ spec: max_world_price: 100 - name: "Food" - max_world_price: 5 + max_world_price: 10 - name: "Grain" max_world_price: 5 diff --git a/econ/__pycache__/exchange.cpython-310.pyc b/econ/__pycache__/exchange.cpython-310.pyc index ed015d3..07df5ba 100644 Binary files a/econ/__pycache__/exchange.cpython-310.pyc and b/econ/__pycache__/exchange.cpython-310.pyc differ diff --git a/econ/agents/__pycache__/base_distribution_agent.cpython-310.pyc b/econ/agents/__pycache__/base_distribution_agent.cpython-310.pyc index 68a11fc..3ea6b7b 100644 Binary files a/econ/agents/__pycache__/base_distribution_agent.cpython-310.pyc and b/econ/agents/__pycache__/base_distribution_agent.cpython-310.pyc differ diff --git a/econ/agents/__pycache__/price_believe_distribute.cpython-310.pyc b/econ/agents/__pycache__/price_believe_distribute.cpython-310.pyc index 35c1b31..c7839f5 100644 Binary files a/econ/agents/__pycache__/price_believe_distribute.cpython-310.pyc and b/econ/agents/__pycache__/price_believe_distribute.cpython-310.pyc differ diff --git a/econ/agents/base_distribution_agent.py b/econ/agents/base_distribution_agent.py index 24353ff..5946805 100644 --- a/econ/agents/base_distribution_agent.py +++ b/econ/agents/base_distribution_agent.py @@ -23,6 +23,7 @@ class Base_Distribution_Agent(BaseAgent,ABC): self.tqty=0 self.income_offset=0 self.qty_offset=0 + self.trade_curser=0 super().__init__(simulation) def set_target(self,target: int): @@ -125,9 +126,13 @@ class Base_Distribution_Agent(BaseAgent,ABC): self.income_offset-=income_to_confirm self.qty_offset-=dis_qty self.income_offset=round(self.income_offset,2) + self.trade_curser=len(self.trades)-1 def reset(self, episode): self.qty_offset=0 + self.tqty=0 self.income_offset=0 + self.tincome=0 + self.trade_curser=0 self.trades=[] return super().reset(episode) \ No newline at end of file diff --git a/econ/agents/price_believe_distribute.py b/econ/agents/price_believe_distribute.py index 9013636..3e61bf6 100644 --- a/econ/agents/price_believe_distribute.py +++ b/econ/agents/price_believe_distribute.py @@ -24,7 +24,7 @@ class Price_Believe_Distribiute_Agent(Base_Distribution_Agent): # aquire based on current price belive cx_id = self.select_best_cx() - price = round(self.price_believe[cx_id]) + price = round(self.price_believe[cx_id],2) if price < self.min_price: price = self.min_price order = self.distribute_resource( @@ -136,6 +136,7 @@ class Price_Believe_Distribiute_Agent(Base_Distribution_Agent): def reset(self, episode): # Clean shop for today + self.update_trades() for cx_id in range(len(self.exchanges)): cx = self.exchanges[cx_id] cx_orders = self.open_orders[cx_id] @@ -144,7 +145,7 @@ class Price_Believe_Distribiute_Agent(Base_Distribution_Agent): self.collect_balance_from_cxs() self.collect_resource_from_cxs(self.resource) # book keeping - self.update_trades() + self.open_orders = {i: [] for i in range(len(self.exchanges))} self.orders = {i: {} for i in range(len(self.exchanges))} return super().reset(episode) diff --git a/econ/business/Price_Believe_Business.py b/econ/business/Price_Believe_Business.py index 3630703..5898f76 100644 --- a/econ/business/Price_Believe_Business.py +++ b/econ/business/Price_Believe_Business.py @@ -13,13 +13,13 @@ class Price_Believe_Business(Business): self.expense_per_unit = -1 self.income_per_unit = -1 self.distribute = Price_Believe_Distribiute_Agent( - simulation, self, production["name"], exchange, 0.2, 20) + simulation, self, production["name"], exchange, 0.2, 30) self.craft = AutoProductionAgent(simulation, self) self.aquire = {} for k, v in production["prod"].items(): a = Price_Believe_Aquire_Agent( - simulation, self, k, exchange, 0.2, 10) + simulation, self, k, exchange, 0.2, 5) a.set_target(v*2) a.set_price_max(10) self.aquire[k] = a @@ -47,8 +47,8 @@ class Price_Believe_Business(Business): ie = 0 if ie > 1: ie = 1 - #retain=((self.max_storage-ie*self.max_storage)*amount)-amount - retain=0 + retain=((self.max_storage-ie*self.max_storage)*amount)-amount + #retain=0 # set target for aquire @@ -124,6 +124,7 @@ class Price_Believe_Business(Business): return self.income_per_unit = qty_sold/income self.distribute.confirm_distribution(qty_sold, step) + a=self.distribute.trade_curser def close_business(self): for k, a in self.aquire.items(): diff --git a/econ/business/__pycache__/Price_Believe_Business.cpython-310.pyc b/econ/business/__pycache__/Price_Believe_Business.cpython-310.pyc index 3641e43..de44c4e 100644 Binary files a/econ/business/__pycache__/Price_Believe_Business.cpython-310.pyc and b/econ/business/__pycache__/Price_Believe_Business.cpython-310.pyc differ diff --git a/econ/exchange.py b/econ/exchange.py index 3eeda63..c0ab438 100644 --- a/econ/exchange.py +++ b/econ/exchange.py @@ -130,7 +130,7 @@ class Exchange(): if amount<1: # invalid order return None - full_price=round(price*amount) + full_price=round(price*amount,2) # Move resources into escrow diff --git a/main.py b/main.py index 51889af..9f9c607 100644 --- a/main.py +++ b/main.py @@ -41,7 +41,7 @@ sim.reset() while len(sim.get_underutelized_prods(1))>0: sim.create_bussiness(1) #sim.reset() -for a in tqdm(range(50)): +for a in tqdm(range(100)): for i in range(100): sim.tick(100) print(f"|Stats| Num of Businesses: {len(sim.businesses)} Num Tickfunk: {len(sim.tick_funcs)} Time Agent Tick: {sim.timings['dsa']} Time Logging {sim.timings['dbl']}")