This repository contains the MATLAB code used in the paper for incremental waypoint search, experiment replay, and result analysis for autonomous vessels.
This repository supports three main tasks:
- Running waypoint-generation experiments.
- Running the analysis on original or replayed results.
- Replaying selected experiments from shared zip data.
The paper proposes IncWP, an incremental multi-objective waypoint search for testing waypoint-guided autonomous vessels. Instead of evolving the full waypoint set at once, the approach fixes previously selected waypoints and only evolves the current waypoint segment. This reduces simulation cost, lowers failure-detection latency, and allows early navigation failures to be explored before the search spends time on later waypoints.
Selection methods are IncWP_KP, IncWP_Unst, IncWP_Prox, IncWP_Rnd, RandomSearch, IncWP_Kmeans, and FullWP. Supported vessel names are remus100, nspauv, and mariner.
Clone this repository:
git clone https://github.com/Karolinenylaender/WPgen-extended.gitClone the external frameworks used by the project:
git clone https://github.com/cybergalactic/MSS.git
git clone https://github.com/BIMK/PlatEMO.git BIMK-PlatEMO-4.7.0.0The adapted NSGA-II-Adapted code used by this project is tracked in this repository under frameworks/evolutionaryPlatform/NSGA-II-Adapted.
Dependencies and licensing:
MSSby Thor I. Fossen and contributorsPlatEMOby the BIMK Group- the adapted
NSGA-II-Adaptedcode used in this repository
Place the downloaded folders either:
- directly in the repository root as
MSS,BIMK-PlatEMO-4.7.0.0, andNSGA-II-Adapted, or - already inside
frameworks/MSSandframeworks/evolutionaryPlatform
Open MATLAB in the repository root and run:
setupProjectsetupProject adds the required MATLAB paths, moves the framework folders into frameworks/ if needed, and creates the experimentsData, replicationRuns/experiments, and replicationData folder structure used by the project.
If the framework folders are placed in the repository root, setupProject moves them into:
frameworks/MSSframeworks/evolutionaryPlatform/BIMK-PlatEMO-4.7.0.0frameworks/evolutionaryPlatform/NSGA-II-Adapted
The main experiment entry script is runExperiments.m. The approach implementations are in scripts/approaches. After setupProject, the repository is ready to run and resultsPath should point to experimentsData.
To run one standard incremental waypoint experiment directly:
vesselName = "remus100";
selectionType = "IncWP_KP";
experimentNumber = 1;
numGenerations = 1000;
populationSize = 10;
resultsPath = "experimentsData";
runIncWP(vesselName, selectionType, resultsPath, experimentNumber, numGenerations, populationSize)Important options:
vesselName:remus100,nspauv, ormariner.selectionType:IncWP_KP,IncWP_Unst,IncWP_Prox,IncWP_Rnd, orIncWP_Kmeans.resultsPath: explicit output folder path, normallyexperimentsData.experimentNumber: experiment identifier.numGenerations: default is1000.populationSize: default is10.
The table below links the paper naming, MATLAB naming, and the script used to run each approach in scripts/approaches.
| Paper name | MATLAB selection string | Run function | Meaning |
|---|---|---|---|
IncWP_KP |
IncWP_KP |
runIncWP(..., "IncWP_KP", ...) |
Selects the knee point of the Pareto front, representing a compromise between proximity to the original waypoint and path instability. |
IncWP_Unst |
IncWP_Unst |
runIncWP(..., "IncWP_Unst", ...) |
Selects the individual with the highest instability objective value to prioritize failure-revealing paths. |
IncWP_Prox |
IncWP_Prox |
runIncWP(..., "IncWP_Prox", ...) |
Selects the individual closest to the original waypoint, prioritizing realistic and minimal waypoint changes. |
IncWP_Rnd |
IncWP_Rnd |
runIncWP(..., "IncWP_Rnd", ...) |
Selects one reachable Pareto-front individual at random. |
IncWP_Kmeans |
IncWP_Kmeans |
runIncWPKmeans(...) |
Selects multiple starting waypoints using clustering over the final population. |
RandomSearch |
RandomSearch |
runRandomSearch(...) |
Random incremental baseline without guided evolutionary selection. |
FullWP |
FullWP |
runFullWP(...) |
Full waypoint-set search that evolves the complete waypoint sequence at once. |
The first five rows are the IncWP family. RandomSearch and FullWP are the baselines used in the paper.
scripts
Main experiment code. This folder contains the approach entry points in approaches/, the search and simulation logic in vesselSearch/, and the top-level experiment runner in runExperiments.m.
Important subfolders:
approaches: entry points forIncWP,IncWP_Kmeans,RandomSearch, andFullWPvesselSearch/incrementalSearch: incremental waypoint search and path simulationvesselSearch/globalSearch: full waypoint-set search and evaluation codevesselSearch/helpers: shared helper functions used by the search code
analysis
Analysis pipeline for processing experiment outputs and reproducing the reported metrics and figures.
Important subfolders:
dataProcessing: loads raw experiment outputs and restructures them for later analysismetric: computes the reported metrics and statistical summariesdisplayFunctions: plotting and result-display helpers used by the analysis code
replication
Scripts for unpacking the tracked replication data and rerunning the missing simulation outputs.
replicationData
Tracked publication data, including the packaged experiment zip files and zipped analysed results.
frameworks
External frameworks used by the project, including the adapted evolutionary platform and MSS.
Use runAnalysis.m to analyse either original experiment data or replayed data.
For the original experiment data:
runAnalysis("remus100", "experimentsData")For replayed data:
runAnalysis("remus100", "replicationRuns/experiments")Use the replication workflow only when you want to rerun the packaged experiment data. The tracked experiment zip files are stored under replicationData/zippedExperiments/. The path-simulation files are too large to include directly, so runReplication unzips the packaged data and reruns those simulation outputs locally.
To rerun the replication data:
runReplicationrunReplication imports the tracked experiment zip files, reruns the simulations in replicationRuns/experiments/, and then runs the analysis on the replayed outputs.
This project uses third-party code from:
PlatEMO, developed by Ye Tian, Ran Cheng, Xingyi Zhang, Yaochu Jin, and the BIMK GroupMSS(Marine Systems Simulator), developed by Thor I. Fossen and contributorsknee_pt, developed by Dmitry Kaplan
We do not own those components. Keep their license files, notices, and requested citations when redistributing or publishing from this repository.
