Skip to content

fix: add fallback mutation for small routes in GA crossover#196

Open
arybhatt4533 wants to merge 1 commit into52North:mainfrom
arybhatt4533:fix/ga-diversity-issue-189
Open

fix: add fallback mutation for small routes in GA crossover#196
arybhatt4533 wants to merge 1 commit into52North:mainfrom
arybhatt4533:fix/ga-diversity-issue-189

Conversation

@arybhatt4533
Copy link
Copy Markdown

Description:
This PR addresses stability issues and potential crashes in the Genetic Algorithm crossover operators (SinglePointCrossover and TwoPointCrossover) when dealing with short routes.

Key Changes:
Introduced fallback_mutate: Added a safety mechanism in OffspringRejectionCrossover. When a route is too small for a standard crossover (e.g., < 3 waypoints for SP or < 6 for TP), the algorithm now applies a small random mutation instead of returning identical parents or crashing.

Fixed Coordinate Slicing: Ensured that only Latitude and Longitude (0:2) are passed to the patchfn.patch method. This prevents errors when waypoints contain additional data like speed or time.

Type Casting Safety: Added .astype(float) in the mutation logic to prevent NumPy UFuncOutputCastingError when performing arithmetic operations on integer-based test arrays.

Boundary Protection: Updated np.random.randint ranges to strictly avoid modifying start and end waypoints, ensuring route integrity.

Verification:
Tested with routes of size 2 (triggered SP fallback).

Tested with routes of size 4 (triggered TP fallback).

Verified that no CastingError occurs during coordinate perturbation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant