Why extending

The implemented simulator already tries to support customization, e.g., by letting users control the number of instantiated agents, the energy generator, etc. However, this control is limited to elements that are already implemented.

This simulator was designed to be extended, in order to introduce more variety, your own data, your moral values, and so on. To further customize the simulator, users of this package may extend the existing classes and provide them instead of the default ones when creating an instance of the environment. These pages describe what elements can be extended, what are their role in the simulator, and how they can be extended.

Simplified class diagram representing the links between the important classes. Attributes and methods are not shown.
Extension points

Element

Role

Reward

Determine the reward signal for each agent, i.e., to which degree they performed correctly. Important to extend to encourage new behaviours.

DataConversion

Provide agents’ profiles from raw data files. Important to extend to use new profiles.

NeedProfile

Determine the agents’ need at each step. Important to extend to use new distributions (random, realistic, …).

ProductionProfile

Determine the agents’ personal production at each step. Important to extend to use new distributions (random, realistic, …).

Comfort functions

Determine the comfort of an agent based on its consumption and need, at each step. Important to extend to provide different kinds of agents that have a more “flexible” or “strict” comfort.

EnergyGenerator

Generate amounts of available energy each step. Important to extend to control these amounts, hence the “difficulty” of agents to consume and satisfy their need.

Observations

Describe the current state of the environment to agents. Important to extend to provide different observations to agents, change the definition of a state.