Code and results for the paper:
Towards a Reference Experimental Benchmark for Solving Hub Location Problems
This webpage provides the results of an experimental benchmark for state-of-the-art solution algorithms with hub location problems, to-be-appeared in Transportation Science.
Datasets
The datasets used in our study can be downloaded here.
The zipped archive contains instance data for AP, CAB, and TR with 10-80 nodes. Each instance consists of three comma-separated value files (where X is the shortcut for the instance name):
- X_nodes.csv: Three columns containing the node ID, latitude, and longitude. Note that the fields latitude and longitude are used for visualization purposes only. The actual distances come form the file describing matrix c.
- X_c.csv: Three columns describing the distance c between fromnode and tonode.
- X_w.csv: Three columns describing the demand w between fromnode and tonode. Please note that for our experiments all self-flows (i.e., fromnode==tonode) were set to 0!
For example, data for the instance ap20 can be found in the three files ap20_nodes.csv, ap20_c.csv, and ap20_w.csv.
Code
The code used for our study can be downloaded here. The zipped archive contains various Python code files as follows:
- CPLEXHelper.py: Proxy data structure to unify access to the CPLEX interface.
- DatasetHelper.py: Loading of instance data from comma-separated value into an in-memory data structure.
- CMAHLPC.py: Code for Capacitated Multiple-Allocation Hub Location Problems with Complete Hub Networks
- CMApHMPC.py: Code for Capacitated Multiple-Allocation p-Hub Median Problems with Complete Hub Networks
- CSAHLPC.py: Code for Capacitated Single-Allocation Hub Location Problems with Complete Hub Networks
- CSApHMPC.py: Code for Capacitated Single-Allocation p-Hub Median Problems with Complete Hub Networks
- UMAHLPC.py: Code for Uncapacitated Multiple-Allocation Hub Location Problems with Complete Hub Networks
- UMAHLPI.py: Code for Uncapacitated Multiple-Allocation Hub Location Problems with Incomplete Hub Networks
- UMApHMPC.py: Code for Uncapacitated Multiple-Allocation p-Hub Median Problems with Complete Hub Networks
- UMApHMPI.py: Code for Uncapacitated Multiple-Allocation p-Hub Median Problems with Incomplete Hub Networks
- USAHLPC.py: Code for Uncapacitated Single-Allocation Hub Location Problems with Complete Hub Networks
- USAHLPI.py: Code for Uncapacitated Single-Allocation Hub Location Problems with Incomplete Hub Networks
- USApHMPC.py: Code for Uncapacitated Single-Allocation p-Hub Median Problems with Complete Hub Networks
- USApHMPI.py: Code for Uncapacitated Single-Allocation p-Hub Median Problems with Incomplete Hub Networks
The code has light dependencies for standard Python libraries (numpy, pandas, matplotlib, psutil) and the Python bindings of the CPLEX solver. All experiments were executed on Python 3.6 using a single thread for CPLEX.
Results
The results obtained in our study can be downloaded here. All results are stored in a comma-separated value file with the following columns (one row corresponds to one instance and solver combination):
- HLP: Identifies the hub location problem type
- dataset: ap/cab/tr
- n: Number of nodes
- p: Fixed number of hubs p (in case of setup-cost based problems the setup cost is computed based on p, as described in the paper)
- q: Fixed number of hub links q
- alpha: Discount factor for hub link flow
- method: Solver
- status: Final status of the solver (OTIMAL)
- UB: Upper bound upon termination
- LB: Lower bound upon termination
- runtime: Runtime in seconds
- mem: Memory usage in Byte
- assignment: spoke assignment array for single allocation problems and hub set for multiple allocation problems
- links: Set of hub links (only for incomplete problems)