Data and code for the multi-vessel selection and wave scheduling problem
Data files
Sep 24, 2026 version files 51.71 KB
-
data.zip
30.27 KB
-
Manifest.toml
2.68 KB
-
Project.toml
239 B
-
README.md
9.17 KB
-
run_all.jl
515 B
-
src.zip
8.83 KB
Abstract
This repository supports reproduction of the main computational experiments for a multi-vessel selection and wave scheduling problem with prioritized equipment loading. The repository comprises anonymized input data derived from authoritative U.S. Army equipment and organization sources, specifically the Joint Equipment Characteristic Database (JECD) and Modified Table of Organizational Equipment (MTOE) records for a representative Armored Brigade Combat Team (ABCT).
The released dataset includes 300 anonymized equipment groups containing 1,618 equipment items filtered for roll-on/roll-off combat loading relevance, including tracked, wheeled, self-propelled, and towable equipment. Group and item records are provided in JSON format with physical dimensions, weights, anonymized organizational identifiers, and priority fields used by the experiment runner.
The repository also includes vessel specifications for six representative vessel classes: America, Wasp, Whidbey Island, Harpers Ferry, General Frank S. Besson, and Runnymede.
Supplementary Julia scripts are provided to reproduce the genetic-algorithm experiments using the included input data. The runner supports quick, demonstration, and full-factorial modes; the full configuration scaffold spans six vessel classes, five congestion levels, six priority distributions, three equipment-count targets, three landing-zone width settings, two inter-wave constant settings, and 30 replications, for 97,200 total experiment configurations.
Output files generated by the scripts report configuration metadata, objective values, warm-start comparisons, vessel and wave counts, runtime measures, convergence history, and vessel-level group assignments, enabling independent reproduction and inspection of the computational experiment workflow.
This repository contains the anonymized equipment data, vessel specifications, and Julia code used for the computational study in "A Bilevel Approach to Multi-Vessel Selection and Wave Scheduling with Prioritized Packing."
The repository includes:
- one anonymized equipment-group dataset derived from U.S. Army equipment and organization data;
- vessel specifications for the six vessel classes used in the experiments; and
- standalone Julia code for running the genetic-algorithm experiment runner.
1. Repository contents
.
Manifest.toml
Project.toml
README.md
run_all.jl
data.zip/
groups_abct.json
vessels.json
src.zip/
ga_core.jl
ga_runner.jl
Source files:
ga_core.jl: Standalone genetic algorithm components for the multi-vessel selection and wave scheduling experiment runner. This file defines the data structures, data-loading utilities, construction heuristic, solution evaluation routine, and compact genetic algorithm used by the repository's reproduction scripts. The implementation is self-contained and only uses the input files distributed with this repository.
ga_runner.jl: Experiment runner helpers for the multi-vessel selection and wave scheduling repository. This file builds experiment configurations, runs the genetic algorithm for each configuration, and writes JSON result files. Paths are relative to this repository's root by default.
2. Data generation methodology
2.1 Equipment data sources and filtering
The equipment records derive from two U.S. military data sources:
- Joint Equipment Characteristic Database (JECD), which provides equipment physical characteristics such as length, width, height, and weight.
- Modified Table of Organizational Equipment (MTOE), which provides the organizational structure and equipment authorizations for a representative U.S. Army Armored Brigade Combat Team (ABCT).
The dataset was filtered to retain roll-on/roll-off relevant equipment suitable for combat loading operations. This includes self-propelled, tracked, wheeled, and towable equipment that can be driven or towed onto vessels without external material-handling equipment.
2.2 Group formation
Equipment items are organized into groups using military organizational identifiers. Each group corresponds to an anonymized organizational element and contains the equipment assigned to that element.
The released file data/groups_abct.json contains:
- 300 equipment groups;
- 1,618 equipment items; and
- physical dimensions, weights, group-level metadata, and priority fields used by the experiment runner.
2.3 Priority fields
Group-level priority follows the order of appearance in the MTOE-derived source data. Item-level priorities within each group are retained from the generated experimental dataset.
The runner supports the priority-distribution settings used in the computational experiments:
linearstep1_10step1_25step1_50step2_25_50step2_33_67
2.4 Anonymization
Sensitive organizational and equipment-description fields are anonymized consistently across the group and item records. Physical and experimental fields are preserved.
Anonymized fields include:
UICUIC_###PARNOPARNO_###PARATITLEPARATITLE_###MOSLINMOSLIN_####TITLENOMENITEM_####
The anonymization mapping files used to transform the source records are not included in this release.
2.5 Vessel specifications
The file data/vessels.json contains the six vessel classes used in the experiments. Each vessel record gives the class label and usable deck dimensions in inches.
| Vessel class | Length (in) | Width (in) |
|---|---|---|
| America Class LHA | 1,920 | 600 |
| Wasp Class LHD | 3,192 | 600 |
| Whidbey Island Class LSD | 5,280 | 600 |
| Harpers Ferry Class LSD | 2,640 | 600 |
| General Frank S. Besson Class LSV | 2,291 | 660 |
| Runnymede Class LCU | 1,800 | 420 |
3. Data dictionary
3.1 data/groups_abct.json
Top-level object:
groups: array of equipment-group records.
Group fields:
UIC: anonymized unit identifier.PARNO: anonymized paragraph number.PARATITLE: anonymized organizational title.global_priority: group priority order.total_area: sum of item footprint areas in square inches.total_weight: sum of item weights.item_count: number of equipment items in the group.size_category: generated group-size category.heterogeneity: generated within-group heterogeneity category.split: indicator from the source group-generation process.items: array of item records.
Item fields:
UIC: anonymized unit identifier.PARNO: anonymized paragraph number.MOSLIN: anonymized line-item identifier.TITLENOMEN: anonymized equipment nomenclature.length: item length in inches.width: item width in inches.height: item height in inches.weight: item weight.AREA_TO_WEIGHT_RATIO: derived area-to-weight field from the source data.SHIP_CODE: source shipping/equipment code.priority: item priority within the group.
3.2 data/vessels.json
Each vessel record contains:
class: vessel class label.length: usable deck length in inches.width: usable deck width in inches.
4. Requirements
- Julia 1.11 or later.
- Julia package dependencies listed in
Project.tomland locked inManifest.toml. - No commercial solver license is required for the included runner.
Install dependencies from the repository root:
julia --project=. -e 'using Pkg; Pkg.instantiate()'
5. Running the code
From the repository root, run a single smoke-test experiment:
julia --project=. run_all.jl --quick
Run the default demonstration set:
julia --project=. run_all.jl
Run the full experiment configuration scaffold:
julia --project=. run_all.jl --full
The full mode enumerates the computational experiment design:
6 vessel types 5 congestion levels 6 priority distributions 3 equipment counts 3 landing-zone widths 2 inter-wave constant settings 30 replications = 97,200 experiments
The full experiment set is computationally expensive and is intended for high-performance computing use. The default mode uses short per-configuration time limits so users can verify the workflow and inspect output files.
6. Runner modes
--quick: runs one small configuration for installation and data-loading checks.- default mode: runs a 36-configuration demonstration set.
--full: enumerates the full experiment configuration scaffold.
The default demonstration set uses:
6 vessel types 3 congestion levels 2 equipment-count targets 1 priority distribution 1 landing-zone setting 1 seed
7. Output format
Results are written to results/ as JSON files. Each result file contains:
config: experiment settings, including vessel type, congestion level, equipment-count target, landing-zone setting, priority distribution, inter-wave constant setting, random seed, and time limit.results: summary performance fields, including best objective value, warm-start objective value, improvement percentage, number of vessels, number of waves, generation count, runtime, time to best solution, stagnation count, and convergence history.solution: vessel-level group assignments, utilization percentages, wave identifiers, and wave start times.timestamp: local timestamp when the run completed.
Example structure:
{
"config": {
"vessel_type": "America Class LHA",
"gamma": 1.0,
"equipment_count_target": 50,
"equipment_count_actual": 50,
"groups_selected": 12,
"landing_zone_width": "unlimited",
"iwc_enabled": false,
"iwc": 0.0,
"priority_distribution": "linear",
"seed": 42,
"time_limit_s": 10.0
},
"results": {
"best_z_objective": 12345.0,
"warmstart_z_objective": 15000.0,
"improvement_pct": 17.7,
"num_vessels": 3,
"num_waves": 1,
"generations": 20,
"total_time_s": 10.1,
"time_to_best_s": 4.3,
"stagnation_count": 8,
"convergence_history": [15000.0, 14000.0, 12345.0]
},
"solution": {
"vessels": [
{
"vessel_id": 1,
"wave": 1,
"vessel_type": "America Class LHA",
"groups": [1, 2, 3],
"total_area": 250000.0,
"utilization_pct": 21.7
}
],
"wave_start_times": [0.0]
},
"timestamp": "2026-04-30T12:00:00"
}
8. Citation
If you use this code or these instances in your research, please consider citing this repository (https://doi.org/10.5061/dryad.76hdr7t9k).
9. License
This code is provided as supplemental material for academic research purposes via the CC0 license. All data is CC0 and in the public domain.
