Files
econ_emt/econ/business/base_business.py
2023-06-26 11:31:47 +02:00

58 lines
1.8 KiB
Python

from abc import ABC
import log
class Business(ABC):
def __init__(self,id,production,balance) -> None:
"""production (dict): {
name: 'Gem',
amount: 4,
craft: {
'Raw_Gem': 4,
'Tool_Gem': 0.2,
}
}
balance (int): Starting Balance
"""
self.id=id
self.production=production
self.balance_history=[balance]
self.balance=balance
#Setup Inventory
self.inventory={production["name"]: 0}
for l in production["prod"]:
for k,v in l.items():
self.inventory[k]=0
pass
def tick(self,step):
self.tick_business_decisions(step)
def tick_business_decisions(self,step):
assert "no business decision method has been created"
pass
def tick_episode(self,episode_count):
"""
Call for resetting for the next episode
"""
self.balance_history.append(self.balance)
self.tick_business_episode(episode_count)
def tick_business_episode(self,episode_count):
"""
Call for resetting for the next episode
"""
assert "no business episode tick method has been created"
def close_business(self):
assert "close_business has not been provided"
def log(self,episode,episode_length,step):
data={}
data["id"]=self.id
data["episode"]=episode
data["step"]=step
data["tstep"]=step+episode*episode_length
data["production"]=self.production["name"]
data["balance"]=self.balance
log.BUSINESSData.append(data)