from .base_agent import BaseAgent class AutoProductionAgent(BaseAgent): """ Automaticaly produces commodity if in business inventory """ def __init__(self,sim,business,worker=1,employment_rate=0) -> None: super().__init__(sim) self.business=business self.prod=business.production self.worker=worker self.employment_rate=employment_rate self.employment_index=worker self.target=0 def set_worker(self,workers): if workers>1: self.worker=workers else: self.worker=1 def set_target(self,qty): self.target=qty def can_produce(self): # If can produce item for com in self.prod["prod"]: for k,v in com.items(): if v > self.business.inventory[k]: return False # check if we should produce if self.business.resource_in_possesion()>self.target: return False return True def tick(self,step,epi): for i in range(self.worker): if not self.can_produce(): continue # remove cost from inventory for com in self.prod["prod"]: for k,cost in com.items(): self.business.inventory[k]-=cost # add commodity self.business.inventory[self.prod['name']]+=self.prod["amount"]