Skip to content
Snippets Groups Projects
Verified Commit 429cb788 authored by Luca Capezzuto's avatar Luca Capezzuto
Browse files

initial commit

parents
No related branches found
No related tags found
No related merge requests found
Showing
with 390 additions and 0 deletions
[submodule "BinaryMaxSum"]
path = BinaryMaxSum
url = https://github.com/RMASBench/BinaryMaxSum.git
[submodule "roborescue"]
path = roborescue
url = https://github.com/RMASBench/roborescue.git
[submodule "MaxSum"]
path = MaxSum
url = https://github.com/RMASBench/MaxSum.git
[submodule "BlockadeLoader"]
path = BlockadeLoader
url = https://github.com/RMASBench/BlockadeLoader.git
Subproject commit 937405169cca20be57e0c09203d1086cc9cd972a
Subproject commit d17f49268f5bb96677f1fb9002b9682f08c83bfc
Subproject commit 5fbe62abae9b289a8fb2d084bb62ec02a3d7b116
# RMASBench: Multi-Agent Coordination Benchmark
This is the RMASBench benchmarking tool, extended for the paper [Anytime, Efficient and Distributed Multi-Agent Coordination in Urban Search and Rescue](https://lcpz.gitlab.io/publications).
Following are brief instructions on how to install, build and produce the results.
For reference, see the original [repository](https://github.com/rmasbench/rmasbench)
and the RCR [manual](https://roborescue.sourceforge.io/docs/rcrs-manual.pdf).
## Requirements
- GNU/Linux or macOS
- Java **1.7**
- Ant
- Maven
## Installation
```shell
git clone --recursive https://github.com/cmi/gopal/rmasbench.git
```
## Build
```shell
cd rmasbench
./build.sh
```
## Note
The simulator creates some cache files at its first execution. This procedure
can take hours on slow machines. To skip it, download the
[cache-rays.zip](https://git.soton.ac.uk/cmi/gopal/rmasbench-cache) archive and
unzip the contents into `RSLB2/boot`, overriting the folders `cache/` and
`rays/` if they already exists.
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry exported="true" kind="lib" path="lib/cglib-nodep-2.2.2.jar"/>
<classpathentry exported="true" kind="lib" path="lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar"/>
<classpathentry exported="true" kind="lib" path="lib/javassist-3.18.1-GA.jar"/>
<classpathentry exported="true" kind="lib" path="lib/junit_4/junit-4.10-javadoc.jar"/>
<classpathentry exported="true" kind="lib" path="lib/junit_4/junit-4.10-sources.jar"/>
<classpathentry exported="true" kind="lib" path="lib/junit_4/junit-4.10.jar"/>
<classpathentry exported="true" kind="lib" path="lib/junit/junit-3.8.2.jar"/>
<classpathentry exported="true" kind="lib" path="lib/log4j-1.2-api-2.0-beta7.jar"/>
<classpathentry exported="true" kind="lib" path="lib/log4j-api-2.0-beta7.jar"/>
<classpathentry exported="true" kind="lib" path="lib/log4j-core-2.0-beta7.jar"/>
<classpathentry exported="true" kind="lib" path="lib/mapdb-0.9.9.jar"/>
<classpathentry exported="true" kind="lib" path="lib/mockito-all-1.9.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/objenesis-2.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/powermock-mockito-1.5.3-full.jar"/>
<classpathentry exported="true" kind="lib" path="lib/trove-3.0.3.jar"/>
<classpathentry exported="true" kind="lib" path="jars/rescuecore2.jar"/>
<classpathentry exported="true" kind="lib" path="jars/bms-1.0.1-SNAPSHOT.jar"/>
<classpathentry exported="true" kind="lib" path="jars/MaxSum.jar"/>
<classpathentry exported="true" kind="lib" path="jars/kernel.jar"/>
<classpathentry exported="true" kind="lib" path="jars/clear.jar"/>
<classpathentry exported="true" kind="lib" path="jars/collapse.jar"/>
<classpathentry exported="true" kind="lib" path="jars/gis2.jar"/>
<classpathentry exported="true" kind="lib" path="jars/handy.jar"/>
<classpathentry exported="true" kind="lib" path="jars/human.jar"/>
<classpathentry exported="true" kind="lib" path="jars/ignition.jar"/>
<classpathentry exported="true" kind="lib" path="jars/maps.jar"/>
<classpathentry exported="true" kind="lib" path="jars/misc.jar"/>
<classpathentry exported="true" kind="lib" path="jars/resq-fire.jar"/>
<classpathentry exported="true" kind="lib" path="jars/sample.jar"/>
<classpathentry exported="true" kind="lib" path="jars/traffic3.jar"/>
<classpathentry exported="true" kind="lib" path="jars/standard.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
# Folder to store dependency sources
dependencies
# Non-distributable scenarios
scenarios/**/*.xml
# Local logging setup
supplement/*.xml
supplement/*.properties
# Run results
boot/logs
boot/results
boot/export
boot/*.png
boot/**/*.cfg
boot/*.gps
boot/rays/*
boot/cache/*
# Log files
run/logs
# Compiled classes
build
# Generated jar
dist
# Private netbeans stuff
nbproject/private
/bin/
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>RSLB2</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
# Known bugs
- [ ] The scoring function should not improve when fires are *indomable*. A fire
is *indomable* when it cannot be contained by the available fire fighters.
In these cases, the score should be reduced by a factor that is proportional
to the percentage of burned-down buildings, and the percentage of buildings
that reported significant damage.
!include common.cfg
# The probability that a buried civilian will call for help
civilian.help.probability : 0.1
# The probability that a damaged civilian will call for help
civilian.ouch.probability : 0.1
# Civilians with HP less than this threshold will not call for help
civilian.conscious.threshold : 2500
!include common.cfg
# The road clear rate in square meters per timestep per police force
clear.repair.rate: 10
# Maximum distance from a blockage in mm.
clear.repair.distance: 10000
clear.repair.rad: 1250
!include common.cfg
# Damage distribution for wooden buildings
collapse.wood.p-destroyed: 0.15
collapse.wood.p-severe: 0.15
collapse.wood.p-moderate: 0.15
collapse.wood.p-slight: 0.15
collapse.wood.p-none: 0.4
# Damage distribution for steel buildings
collapse.steel.p-destroyed: 0.1
collapse.steel.p-severe: 0.15
collapse.steel.p-moderate: 0.2
collapse.steel.p-slight: 0.25
collapse.steel.p-none: 0.3
# Damage distribution for concrete buildings
collapse.concrete.p-destroyed: 0.3
collapse.concrete.p-severe: 0.25
collapse.concrete.p-moderate: 0.2
collapse.concrete.p-slight: 0.15
collapse.concrete.p-none: 0.1
# Amount of damage for each collapse degree class
collapse.destroyed.mean: 100
collapse.destroyed.sd: 5
collapse.severe.mean: 75
collapse.severe.sd: 5
collapse.moderate.mean: 50
collapse.moderate.sd: 5
collapse.slight.mean: 25
collapse.slight.sd: 5
# Whether to create road blockages or not
collapse.create-road-blockages: false
# Assumed height of walls per floor in m.
collapse.floor-height: 7
# Possible extent of wall collapse.
collapse.wall-extent.min: 0.4
collapse.wall-extent.max: 1
!include types.cfg
# Random seed for all components
random.seed: 1
senario.human.random-id: true
kernel.host: localhost
kernel.port: 7000
!include comms/comms-01-full.cfg
#!include comms/comms-02-unreliable.cfg
#!include comms/comms-03-mixed.cfg
#!include comms/comms-04-many.cfg
#!include comms/comms-05-medium.cfg
#!include comms/comms-06-none.cfg
generator.output: ../maps/gml/generated/map.gml
generator.manhattan.grid.width: 10
generator.manhattan.grid.height: 10
generator.manhattan.grid.size: 100
generator.manhattan.road.width: 7
generator.manhattan.building.width.min: 5
generator.manhattan.building.height.min: 5
generator.manhattan.building.separation.min: 1
generator.manhattan.building.separation.max: 5
generator.manhattan.building.split.min-size: 50
generator.manhattan.building.split.max-size: 1000
generator.manhattan.building.split.chance: 0.9
\ No newline at end of file
# The map directory to read
gis.map.dir : ../maps/gml/legacy/Kobe
# Optional: The map file to read. Defaults to map.gml
gis.map.file : map.gml
# Optional: The scenario file to read. Defaults to scenario.xml
gis.map.scenario : scenario.xml
!include common.cfg
# The lambda value of the Poisson distribution used to choose how many fires to ignite per timestep
ignition.random.lambda: 0.05
ignition.gas_station.explosion.range:50000
\ No newline at end of file
!include common.cfg
!include gis.cfg
!include comms.cfg
!include perception.cfg
!include score.cfg
# Also include configs for simulators and agents
!include collapse.cfg
!include clear.cfg
!include misc.cfg
!include resq-fire.cfg
!include traffic3.cfg
!include ignition.cfg
!include civilian.cfg
!include sample-agents.cfg
!include viewer.cfg
# Name of the kernel log file
kernel.logname: logs/rescue.log
# Number of timesteps to run
kernel.timesteps: 300
# The simulation termination conditions
kernel.termination: kernel.TimestepTerminationCondition
#kernel.termination: kernel.TimestepTerminationCondition rescuecore2.standard.kernel.CiviliansDeadOrRescuedTerminationCondition
# The amount of time (ms) agents have to send commands each timestep
kernel.agents.think-time: 1000
# Number of timesteps that agents commands are ignored
kernel.agents.ignoreuntil: 3
# List of command collectors to use
kernel.commandcollectors: kernel.TimedCommandCollector
#kernel.commandcollectors: kernel.TimedCommandCollector rescuecore2.standard.kernel.StandardCommandCollector
# List of command filters to use
kernel.commandfilters +: kernel.WrongTimeCommandFilter
kernel.commandfilters +: kernel.FrozenAgentsCommandFilter
kernel.commandfilters +: rescuecore2.standard.kernel.DeadAgentsCommandFilter
kernel.commandfilters +: rescuecore2.standard.kernel.BuriedAgentsCommandFilter
kernel.commandfilters +: rescuecore2.standard.kernel.SingleCommandFilter
# The agent registrar
kernel.agents.registrar: rescuecore2.standard.kernel.StandardAgentRegistrar
# The amount of time agents have to start up
kernel.startup.connect-time: 300000 # 5 minute startup time
# kernel.startup.connect-time: 10000 # 10 second startup time
# Automatic choice of GIS
kernel.gis.auto: gis2.GMLWorldModelCreator
# Automatic choice of perception
#kernel.perception.auto: rescuecore2.standard.kernel.LineOfSightPerception
kernel.perception.auto: rescuecore2.standard.kernel.StandardPerception
# Automatic choice of communication model
kernel.communication.auto: rescuecore2.standard.kernel.comms.ChannelCommunicationModel
# Automatically start simulators/viewers/agents
kernel.simulators.auto +: collapse.CollapseSimulator
kernel.simulators.auto +: clear.ClearSimulator
kernel.simulators.auto +: misc.MiscSimulator
kernel.simulators.auto +: firesimulator.FireSimulatorWrapper
kernel.simulators.auto +: traffic3.simulator.TrafficSimulator
kernel.simulators.auto +: ignition.IgnitionSimulator
kernel.viewers.auto +: sample.SampleViewer
kernel.agents.auto +: sample.SampleFireBrigade*n
kernel.agents.auto +: sample.SamplePoliceForce*n
kernel.agents.auto +: sample.SampleAmbulanceTeam*n
kernel.agents.auto +: sample.SampleCentre*n
kernel.agents.auto +: sample.SampleCivilian*n
# Kernel UI components
kernel.ui.components: rescuecore2.standard.kernel.StandardWorldModelViewerComponent
!include common.cfg
!include gis.cfg
!include comms.cfg
!include perception.cfg
!include score.cfg
# Also include configs for simulators and agents
!include collapse.cfg
!include clear.cfg
!include misc.cfg
!include resq-fire.cfg
!include traffic3.cfg
!include ignition.cfg
!include civilian.cfg
!include sample-agents.cfg
!include viewer.cfg
# Name of the kernel log file
kernel.logname: logs/rescue.log
# Number of timesteps to run
kernel.timesteps: 300
# The simulation termination conditions
kernel.termination: kernel.TimestepTerminationCondition
#kernel.termination: kernel.TimestepTerminationCondition rescuecore2.standard.kernel.CiviliansDeadOrRescuedTerminationCondition
# The amount of time (ms) agents have to send commands each timestep
kernel.agents.think-time: 1000
# Number of timesteps that agents commands are ignored
kernel.agents.ignoreuntil: 3
# List of command collectors to use
kernel.commandcollectors: kernel.TimedCommandCollector
#kernel.commandcollectors: kernel.TimedCommandCollector rescuecore2.standard.kernel.StandardCommandCollector
# List of command filters to use
kernel.commandfilters +: kernel.WrongTimeCommandFilter
kernel.commandfilters +: kernel.FrozenAgentsCommandFilter
kernel.commandfilters +: rescuecore2.standard.kernel.DeadAgentsCommandFilter
kernel.commandfilters +: rescuecore2.standard.kernel.BuriedAgentsCommandFilter
kernel.commandfilters +: rescuecore2.standard.kernel.SingleCommandFilter
# The agent registrar
kernel.agents.registrar: rescuecore2.standard.kernel.StandardAgentRegistrar
# The amount of time agents have to start up
kernel.startup.connect-time: 3600000 # 1 hour startup time
# kernel.startup.connect-time: 10000 # 10 second startup time
# Automatic choice of GIS
kernel.gis.auto: gis2.GMLWorldModelCreator
# Automatic choice of perception
#kernel.perception.auto: rescuecore2.standard.kernel.LineOfSightPerception
kernel.perception.auto: rescuecore2.standard.kernel.StandardPerception
# Automatic choice of communication model
kernel.communication.auto: rescuecore2.standard.kernel.comms.ChannelCommunicationModel
# Kernel UI components
kernel.ui.components: rescuecore2.standard.kernel.StandardWorldModelViewerComponent
log.viewers : rescuecore2.standard.view.StandardWorldModelViewer
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment