Benchmarking
============
To run a benchmark, one can use the command line interface ``PyVRP`` provides.
After installation, it is available as ``pyvrp`` from the command line.
To find out about available options, run
.. code-block:: shell
pyvrp --help
To benchmark ``pyvrp``, we mostly use instances from `CRVPLIB `_ instances.
Particularly:
* For the VRPTW, we use `the Gehring and Homberger instances `_, particularly those with 1000 customers.
These instances are each run for two hours (on a reference CPU with PassMark score 2000; the time limit should be scaled by the score of your CPU).
* For the CVRP, we use `the X-instances of Uchoa `_.
Each instance has :math:`n` clients; the runtimes are computed as :math:`2.4 n` seconds (on a reference CPU with PassMark score 2183; the time limit should be scaled by the score of your CPU).
Thus, an instance with 100 clients is ran for 240 seconds, assuming a CPU with PassMark score 2183.
Each instance is run ten times with different seeds.
Each run is performed on a single core.
For each instance, we take the average objectives/gaps of these ten runs with different seeds.
To get the benchmark instance sets quickly, the ``PyVRP/Instances`` repository may be initialised as a submodule:
.. code-block:: shell
git submodule init instances
After running this command, the instances will be available in ``instances/``.