## # the width and height of the actual simulation ## FIELD_WIDTH: 500 FIELD_HEIGHT: 500 ## # width and height of the visualization window # doesn't have to be the same as FIELD_WIDTH and FIELD_HEIGHT from above ## DISPLAY_WIDTH: 400 DISPLAY_HEIGHT: 400 ## # used when creating the continuous 2D objects # I usually try to set SENSOR_DISCRETIZATION to the maximum communication distance of the sensors, # and EMITTER_DISCRETIZATION to the maximum emit distance of any emitter ## SENSOR_DISCRETIZATION: 15 EMITTER_DISCRETIZATION: 250 ## # background color of the visualization ## BACKGROUND_COLOR: 255 255 255 ## # WRITE_DATA: [write] # - write -> boolean value indicating whether or not to write output file for this run # # DATA_WRITE_INTERVAL: [interval] # - interval -> positive int value indicating how often to write data # # OUTPUT_DIR: [directory] # - directory -> String value indicating the directory that the output should be written (if WRITE_DATA == true) ## WRITE_DATA: false DATA_WRITE_INTERVAL: 1 OUTPUT_DIR: output ## # Number of frequencies used in the system. # The colors indicate how the agents are drawn. # # Make sure that there is a 'SENSOR_COLOR_n: R G B [A]' and 'EMITTER_COLOR_n: R G B [A]' line for each n = [1,NUM_FREQUENCIES]. # R, G, B are for red, green, blue # A can be added for the alpha channel; however, adding this slows down the simulation. ## NUM_FREQUENCIES: 4 SENSOR_COLOR_1: 255 0 0 SENSOR_COLOR_2: 0 255 0 SENSOR_COLOR_3: 0 0 255 SENSOR_COLOR_4: 255 255 0 SENSOR_COLOR_5: 255 0 255 SENSOR_COLOR_6: 0 255 255 EMITTER_COLOR_1: 255 0 0 128 EMITTER_COLOR_2: 0 255 0 128 EMITTER_COLOR_3: 0 0 255 128 EMITTER_COLOR_4: 255 255 0 128 EMITTER_COLOR_5: 255 0 255 128 EMITTER_COLOR_6: 0 255 255 128 ## # The following parameters indicate how the sensors are created. # # NUM_SENSOR_GROUPS: [num] # - num -> int value indicating the number of sensor groups that will follow # - each sensor group is numbered [1,n] (where n is the value given in NUM_SENSOR_GROUPS), and # should contain each of the following parameters (described in more detail below # - SENSOR_POSITIONER_i # - SENSOR_PHYSICAL_RADIUS_i # - SENSOR_COMM_DISTANCE_i # - SENSOR_UPDATE_PROBABILITY_i # - SENSOR_INITIAL_FREQUENCY_ASSIGNER_i # - SENSOR_MOVER_i # - SENSOR_FREQUENCY_UPDATER_i # # SENSOR_POSITIONER_i: [options described below] # - determines how the sensors are placed in the environment, and the parameters can take on any # of the following forms: # # - SinglePositioner [x] [y] # - x -> double value indicating the x-coordinate of the sensor # - y -> double value indicating the y-coordinate of the sensor # - creates a single sensor at the given coordinates # # - GridPositioner [rows] [cols] [xAnchor] [yAnchor] [width] [height] # - rows -> int value indicating the number of rows in the grid of sensors # - cols -> int value indicating the number of columns in the grid of sensors # - xAnchor -> double value indicating the location of the upper-left-most sensor in the grid # - yAnchor -> double value indicating the location of the upper-left-most sensor in the grid # - width -> double value indicating the width of the grid # - height -> double value indicating the height of the grid # - creates a grid of rows-by-cols sensors evenly spaced in the specified area # # SENSOR_PHYSICAL_RADIUS_i: [radius] # - radius -> double value indicating the radius of sensors when they are drawn # - does not affect the dynamics of a simulation as sensors (and emitters) are always treated as point objects # # SENSOR_COMM_DISTANCE_i: [distance] # - distance -> double value indicating the distance that sensors broadcast data to neighboring sensors # # SENSOR_UPDATE_PROBABILITY_i: [probability] # - probability -> double value indicating the probability that a sensor update its frequency each time step # # SENSOR_INITIAL_FREQUENCY_ASSIGNER_i: [options described below] # - determines how the sensors are initially assigned their frequency # - the parameters can take on any of the following: # # - RandomAssigner # - assigns frequencies randomly # # - HomogeneousAssigner [frequency] # - assigns all of the sensors to the given frequency # - make sure the frequency is in the range [0, NUM_FREQUENCIES-1] # # SENSOR_MOVER_i: [options described below] # - indicates how the sensors move about in their environment # - the parameters can take on any of the following: # # - StationaryMover # - sensors do not move # # - FixedWaypointMover [x1] [y1] [x2] [y2] ... [xn] [yn] # - x1, y1, x2, y2, ... -> double values indicating the waypoints that the sensor moves to # - once the sensor has reached the first waypoint, that is, location (x1, y1), the # sensor starts moving to the second point (x2, y2), etc. # - once the sensor has reached point (xn, yn), the sensor begins moving back to (x1, y1) # # - RandomWaypointMover [xAnchor] [yAnchor] [width] [height] # - xAnchor -> double value indicating the location of the upper-left-most point in the bounding area # - yAnchor -> double value indicating the location of the upper-left-most point in the bounding area # - width -> double value indicating the width of the bounding area # - height -> double value indicating the height of the bounding area # - A waypoint is randomly generated in the given area, once the sensor reaches that point, # a new waypoint is randomly generated, and the sensor heads towards it. This process is # repeated infinitely. # # SENSOR_FREQUENCY_UPDATER_i: [options described below] # - indicates the algorithm that the sensors use to determine which frequency to sense # - the parameters can take on any of the following: # # - Method1FrequencyUpdater # - uses own frequency when computing frequency-counts and may switch out of own frequency # when it ties any other frequency for least represented # - Method1 from AAMAS 2009 paper (Campbell and Wu) # # - Method2FrequencyUpdater # - does not use own frequency when computing frequency-counts and will not switch out # of own frequency if it is tied with other frequency(s) as the least represented # - Method2 from AAMAS 2009 paper (Campbell and Wu) # # - Method3FrequencyUpdater # - randomly chooses frequency # - Method3 from AAMAS 2009 paper (Campbell and Wu) # # - StationaryFrequencyUpdater # - does nothing, i.e., frequencies don't change ## NUM_SENSOR_GROUPS: 1 SENSOR_POSITIONER_1: GridPositioner 20 20 50 50 400 400 SENSOR_PHYSICAL_RADIUS_1: 5 SENSOR_COMM_DISTANCE_1: 25 SENSOR_UPDATE_PROBABILITY_1: 1.0 SENSOR_INITIAL_FREQUENCY_ASSIGNER_1: HomogeneousAssigner 0 SENSOR_MOVER_1: RandomWaypointMover 0 0 500 500 SENSOR_FREQUENCY_UPDATER_1: Method2FrequencyUpdater ## # The following parameters indicate how the emitters are created. # # NUM_EMITTER_GROUPS: [num] # - num -> int value indicating the number of emitter groups that will follow # - each emitter group is numbered [1,n] (where n is the value given in NUM_EMITTER_GROUPS), and # should contain each of the following parameters (described in more detail below # - EMITTER_POSITIONER_i # - EMITTER_PHYSICAL_RADIUS_i # - EMITTER_SIGNAL_INFO_i # - EMITTER_INITIAL_FREQUENCY_ASSIGNER_i # - EMITTER_SIGNAL_CONTROLLER_i # - EMITTER_MOVER_i # # EMITTER_POSITIONER_i: [options described below] # - determines how the emitters are placed in the environment # - look at SENSOR_POSITIONER_i above for more details # # EMITTER_PHYSICAL_RADIUS_i: [radius] # - radius -> double value indicating the radius of emitters when they are drawn # - does not affect the dynamics of a simulation as emitters (and sensors) are always treated as point objects # # EMITTER_SIGNAL_INFO_i: [emitDirectionX] [emitDirectionY] [emitDistance] [emitSpread] # - senseDirectionX -> double value indicating the x-direction the emitter is initially emitting its signal # - senseDirectionY -> double value indicating the y-direction the emitter is initially emitting its signal # - emitDistance -> double value indicating how far this emitter's signal travels # - emitSpread -> double value indicating the the total angle that the signal spreads # # EMITTER_INITIAL_FREQUENCY_ASSIGNER_i: [options described below] # - determines how the sensors are initially assigned their frequency # - look at SENSOR_INITIAL_FREQUENCY_ASSIGNER_i above for more details # # EMITTER_SIGNAL_CONTROLLER_i: [options described below] # - indicates how the emitter determines where to direct its signal; options are as follows: # # - StationarySignalController # - does nothing to the direction of the emitters' initial signal directions # # - FixedPointSignalController [targetX] [targetY] # - targetX -> double value indicating the x-coordinate of targeted point # - targetY -> double value indicating the y-coordinate of targeted point # - the emitter will always point its signal towards the target point # # EMITTER_MOVER_i: [options described below] # - indicates how the sensors move about in their environment # - look at SENSOR_MOVER_i above for more details ## NUM_EMITTER_GROUPS: 3 EMITTER_POSITIONER_1: SinglePositioner 0 0 EMITTER_PHYSICAL_RADIUS_1: 5 EMITTER_SIGNAL_INFO_1: 0 1 250 30 EMITTER_INITIAL_FREQUENCY_ASSIGNER_1: HomogeneousAssigner 0 EMITTER_SIGNAL_CONTROLLER_1: FixedPointSignalController 250 250 EMITTER_MOVER_1: FixedWaypointMover 0 0 0 500 500 500 500 0 EMITTER_POSITIONER_2: SinglePositioner 100 100 EMITTER_PHYSICAL_RADIUS_2: 5 EMITTER_SIGNAL_INFO_2: 0 1 150 30 EMITTER_INITIAL_FREQUENCY_ASSIGNER_2: HomogeneousAssigner 1 EMITTER_SIGNAL_CONTROLLER_2: FixedPointSignalController 250 250 EMITTER_MOVER_2: FixedWaypointMover 100 100 100 400 400 400 400 100 EMITTER_POSITIONER_3: SinglePositioner 200 200 EMITTER_PHYSICAL_RADIUS_3: 5 EMITTER_SIGNAL_INFO_3: 0 1 50 30 EMITTER_INITIAL_FREQUENCY_ASSIGNER_3: HomogeneousAssigner 2 EMITTER_SIGNAL_CONTROLLER_3: FixedPointSignalController 250 250 EMITTER_MOVER_3: FixedWaypointMover 200 200 200 300 300 300 300 200