Skip to content

Feature/15 add time objective#155

Merged
kdemmich merged 44 commits intomainfrom
feature/15-add-time-objective
Mar 19, 2026
Merged

Feature/15 add time objective#155
kdemmich merged 44 commits intomainfrom
feature/15-add-time-objective

Conversation

@kdemmich
Copy link
Copy Markdown
Collaborator

@kdemmich kdemmich commented Mar 4, 2026

Related Issue / Discussion:

Enable optimisation of arrival-time accuracy in combination with fuel consumption. Enable manipulation of speed.

Changes:

  • New class RMethod(MCDM) for selecting a solution for multi-objective optimisation
  • New file tests/test_genetic_mcdm.py
  • New file scripts/compare_objectives.py for comparing objective values for different routing configurations
  • New config variables GENETIC_OBJECTIVES, BOAT_SPEED_BOUNDARIES (replaced BOAT_SPEED_MAX)
  • Modified file tests/test_config.py, test_genetic.py
  • Modified class SpeedCrossover, CrossoverFactory
  • Modified class RouteBlendMutation, RandomPercentageChangeSpeedMutation, RandomMutationsOrchestrator
  • Modified class RoutingProblem for multi-objective optimisation

Further Details:

Summary:

See internal documentation.

Dependencies:

None.

- add config variable GENETIC_OBJECTIVES
- add monitoring figure for objective space
Add a monitoring plot for the determination of composite weights for the
selection of a solution from the set of non-dominated solution in case
of multi-objective optimisation
Modify the code for the R-method s.t. the expansion towards an arbitray
number of objectives is simple. Add a monitoring plot for the function
for the determination of the composite weight. The function for the
determination of composite weight and the corresponding monitoring plot
will need slight adjustments for n_obj>2.
Add functionality to compare different WRT runs wrt. fuel consumption
and meeting the arrival-time constraint.
Change mean speed of standard deviation to original speed value at the
respective waypoint. Replace config variable  BOAT_SPEED_MAX by
BOAT_SPEED_BOUNDARIES which provide the minimum and maximum speed
values. Speed values lower than the minimum or higher than the
maximum are replaced by the respective boundaries.
According to pymoo, normalisation is not necessary here.
Prevent overwriting of parents by offspring.
Convert seconds to minutes to prevent large values of time objective.
Introduce minimal time difference.

Adjust container for storing objective values.
Generate convergence plots for all objectives. Visualise speed for
figures showing population per generation via color code of routes.
Introduce config settings 'rndm_speed' and 'rndm_waypoints' to turn on
mutation methods that only mutate the speed or the waypoints,
respectively. In case 'random' is activated, both mutations for speed
and waypoints are initiated for every generation.
Replace modifications of parents by those on deepcopied offspring.
Prevent overwriting of GENETIC_REPAIR_TYPE. Add unit test for
SpeedCrossover.
Remove if clauses that rely on BOAT_SPEED config variable default value
being -99. Fix missing PosixPath to str conversion in execute_routing.py
Modify Config.check_speed_determination to meet the run modes
- speed optimisation, fixed waypoints
- spead and waypoint optimisation
- waypoint optimisation, fixed speed
Add respective unit tests.
Move code for selection from set of non-dominated solutions to a
separate base class called MCDM. The implementation of the R-method is
captured in a subclass RMethod.
@kdemmich kdemmich marked this pull request as ready for review March 11, 2026 10:05
@kdemmich kdemmich added the enhancement New feature or request label Mar 19, 2026
@kdemmich kdemmich merged commit e5163fb into main Mar 19, 2026
1 check passed
@kdemmich kdemmich deleted the feature/15-add-time-objective branch March 19, 2026 10:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant