Instance generators for all 8 competition domains are released for the benefit of the competitors. The competition instances (pre-released and unseen) will be generated using theses generators as well.
The generators are included in the distribution of pyRDDLGym under pyRDDLGym/Examples/InstanceGenerators
and can be accessed directly (via import).
They can also be accessed through the ExampleManager
interface for pyRDDLGym version 1.0.4 and above.
Once an Example manager object has been instanciated an instance can be generated via the interface:
EnvInfo = ExampleManager.GetEnvInfo(env)
EnvInfo.generate_instance(name, param, path)
The generate_instance
method has the following signature:
string ExampleManager.generate_instance(string name, dict param, string path[optional])
instance<name>.rddl
, where <name>
is the string specified in the name field.As each domain has different set of parameters we document here the dictionary keys required for each domain
A problem with a single zone and a single heater:
params = {
'num_heaters': 1,
'num_zones': 1,
'density': 1.0,
'temp-zone-range-init': (0., 15.),
'temp-heater-range-init': (0., 10.),
'TEMP-ZONE-MIN': 22.0,
'TEMP-ZONE-MAX': 25.0,
'p-switch-number': 0,
'p-switch-prob': 0.02,
'horizon': 100,
'discount': 1.0
}
A problem with a single rover and a single mineral to harvest:
params = {
'num_minerals': 1,
'num_rovers': 1,
'location_bounds': (-10., 10.),
'area_bounds': (3., 6.),
'value_bounds': (0., 20.),
'horizon': 100,
'discount': 1.0
}
A problem with a single valley:
params = {
'terrain_xleft': -1.2,
'terrain_widths': [0.7, 1.1],
'terrain_heights': [0.9, 0.9],
'num_points': 100,
'pos': -0.6,
'vel': 0.01,
'goal-min': 0.5,
'horizon': 200,
'discount': 1.0
}
A problem with a single generator:
params = {
'num_gas': 1,
'num_nuclear': 0,
'num_solar': 0,
'demand_scale': 1.0,
'temp_variance': 5.0,
'temp_range': (-30.0, 40.0),
'horizon': 100, 'discount': 1.0
}
A simple problem without obstacles:
params = {
'num_blocks': 0,
'min_block_size': 0.0,
'max_block_size': 0.0,
'scale': 1.0,
'goal_radius': 0.06,
'horizon': 200,
'discount': 1.0
}
A problem with providers selling the same commodity:
params = {
'provider_dispersion': 10.0,
'provider_fan_out': 1,
'num_provider_clusters': 1,
'num_users': 100,
'docs_per_cluster': 2,
'user_stddev': 20.0,
'horizon': 100,
'discount': 1.0,
}
A problem with a single reservoir to be controlled:
params = {
'num_reservoirs': 1,
'max_edges': 1,
'top_range': (100., 200.),
'target_range': (0.4, 0.7),
'rain_var': 5.,
'horizon': 100,
'discount': 1.
}
A problem with a single controllable UAV:
params = {
'num_aircraft': 1,
'num_control': 1,
'variance': 1.0,
'xrange': (-50., 50.),
'yrange': (-50., 50.),
'zrange': (0., 100.),
'horizon': 100,
'discount': 1.0
}