Source code for negmas.situated.entity

from __future__ import annotations

__all__ = ["Entity"]


[docs] class Entity: """Defines an entity that is a part of the world but does not participate in the simulation""" def __init__(self, type_postfix: str = ""): self._initialized = False self.__type_postfix = type_postfix self.__current_step = 0 def _shorten(self, long_name): name = ( long_name.split(".")[-1] .lower() .replace("factory_manager", "") .replace("manager", "") ) name = ( name.replace("factory", "") .replace("agent", "") .replace("miner", "") .replace("consumer", "") ) if long_name.startswith("jnegmas"): name = f"j-{name}" name = name.strip("_") return name @classmethod def _type_name(cls): return cls.__module__ + "." + cls.__name__ @property def type_name(self): """Returns the name of the type of this entity""" return self.__class__._type_name() + self.__type_postfix @property def short_type_name(self): """Returns a short name of the type of this entity""" return self._shorten(self.type_name) @property def type_postfix(self): return self.__type_postfix
[docs] def init(self): """Override this method to modify initialization logic"""
[docs] def init_(self): """Called to initialize the agent **after** the world is initialized. the AWI is accessible at this point.""" self._initialized = True self.__current_step = 0 self.init()
[docs] def step(self): """Override this method to modify stepping logic"""
[docs] def step_(self): """Called at every time-step. This function is called directly by the world.""" if not self._initialized: self.init_() self.step() self.__current_step += 1