Agent Configuration
Agents in HAMLET are configured through YAML files, allowing users to define their behavior, energy consumption, production capacities, forecasting methods, and market participation. This section explains the structure of the agent configuration file.
General Settings
Each agent type (e.g., SFH, MFH, C&I) is defined under a specific category. The general configuration includes:
Number of Agents (number_of): Defines how many agents of this type will be created.
Basic Parameters (parameters): Specifies agent attributes such as number of occupants, living area, and building efficiency.
Market Participation (market_participant_share): Determines what fraction of the agents participate in the market.
Example: .. code-block:: yaml
- sfh:
- general:
number_of: 10 parameters:
occupants: [3, 4] area: [100, 130] efficiency: [55, 150]
market_participant_share: 1
Energy Demand & Supply
Agents can consume and produce energy through different means:
### Inflexible Load Represents the baseline energy demand that cannot be shifted or controlled.
Annual Demand (`demand`): Specifies total energy consumption in Wh/a.
Deviation (`demand_deviation`): Allows random variation to simulate different households.
Example: .. code-block:: yaml
- inflexible-load:
share: 1 num: [1] sizing:
distribution: [0.2, 0.6, 0.2] demand: [2.5e6, 4e6, 5.5e6] demand_deviation: [5e5, 1e6, 5e5]
### Flexible Load Represents shiftable demand, such as electric heating, EV charging, or industrial processes.
Time Offset (`time_offset`): Defines how long the demand can be postponed.
Forecasting Method (`fcast`): Specifies how the agent predicts its energy demand.
Example: .. code-block:: yaml
- flexible-load:
share: 0.5 num: [1] sizing:
distribution: [0.4, 0.4, 0.2] demand: [2.5e6, 4e6, 5.5e6] time_offset: [6, 12, 24]
### Renewable Generation Agents can own photovoltaic (PV) systems, wind turbines, or fixed generators.
Installed Power (`power`): Defines the system’s capacity.
Forecasting (`fcast`): Configures methods for predicting generation.
Example: .. code-block:: yaml
- pv:
share: 0.7 num: [1] sizing:
power: [1.5, 1.5] orientation: [0, -20] angle: [40, 50] controllable: [false, false]
- fcast:
method: naive
Energy Storage
Agents may have energy storage systems such as batteries or heat storage.
Capacity (`capacity`): Defines storage size in Wh.
Efficiency (`efficiency`): Represents charge-discharge efficiency.
State of Charge (`soc`): Initial energy stored in the system.
Example: .. code-block:: yaml
- battery:
share: 0.8 num: [1] sizing:
power: [1] capacity: [1] efficiency: [0.95] soc: [0.1]
Electric Vehicles (EVs)
EVs are modeled as mobile storage units with specific charging strategies.
Charging Power (`charging_home`, `charging_AC`, `charging_DC`): Maximum power for each charging location.
Vehicle-to-Grid (`v2g`): Defines whether the EV can discharge back into the grid.
Example: .. code-block:: yaml
- ev:
share: 0.5 num: [1] sizing:
capacity: [5e4, 7.5e4, 1e5] charging_home: [7.2e3, 7.2e3, 1.1e4] v2g: [false, false, false]
Energy Management Systems (EMS)
Each agent can be equipped with an Energy Management System (EMS) to optimize energy usage.
Real-Time Controller (`rtc`): Optimizes energy dispatch at each timestep.
Forecast-Based Controller (`fbc`): Plans energy use based on future predictions.
Example: .. code-block:: yaml
- ems:
- controller:
- rtc:
method: linopy linopy:
solver: gurobi time_limit: 120
- fbc:
method: linopy horizon: 86400
Market Participation
Agents can participate in energy markets using different trading strategies.
Strategy (`strategy`): Defines how agents place bids and offers.
Trading Horizon (`horizon`): Specifies how far ahead agents plan trades.
Example: .. code-block:: yaml
- market:
strategy: linear horizon: [86400, 72000, 57600, 43200] linear:
steps_to_final: 1 steps_from_init: 0
Summary
Agents in HAMLET represent energy consumers, producers, and flexible assets.
YAML configuration defines their behavior, forecasting, and market participation.
Different forecasting models and control strategies allow detailed customization.