PushAndSwap: An open-source library for polynomial-time, sequential multi-robot
path planning.
Copyright (c) 2013, Ryan Luna, Athanasios Krontiris, Kostas Bekris

Contact Information:
- rluna/AT/
- tdk.krontir/AT/
- kostas.bekris/AT/

See LICENSE file for open source license agreement.

The following dependencies are necessary to build PushAndSwap:
Boost.Graph (v1.49 or greater)

Once the dependencies are installed, PushAndSwap can be compiled in the typical
CMake manner using the following commands:

mkdir build
cd build
cmake [-DCMAKE_INSTALL_PREFIX=/path/for/installation] ../

Optionally, the compiled library, header files, and demo programs can be
installed to the default system install directory (or to the specified install

make install

The PushAndSwap class requires just two inputs: a graph, and a list of agents to
plan on the graph.  The problem induced by the agents on the graph can be
solved by invoking the solve() method on the PushAndSwap class.  If a solution
exists, the plan computed can be retrieved by the getPlan() method.
Optionally, the smooth() method can be invoked to heuristically remove
redundancies in the final path.

A simple demo program (PASDemo) is bundled with the PushAndSwap source that
demonstrates all of the functionality described above.  PASDemo reads in an
instance file that defines the graph in GraphML format as well as all agents
and their start/goal configurations on the graph.  Sample instances and
graphs are supplied as well.