Module vrp_core::solver::search

source ·
Expand description

The mutation module specifies building blocks for mutation operator used by evolution.

The default implementation of mutation operator is RuinAndRecreateMutation which is based on ruin and recreate principle, introduced by Schrimpf et al. (2000).

Structs

  • Adjusted string removal ruin strategy based on “Slack Induction by String Removals for Vehicle Routing Problems” by Jan Christiaens, Greet Vanden Berghe.
  • Removes a few random, close to each other, routes from solution.
  • A ruin strategy which removes job clusters using DBSCAN algorithm.
  • Provides the way to run multiple local search operators with different probability.
  • Provides the way to run multiple ruin methods one by one on the same solution.
  • Provides way to reuse generic behaviour.
  • A search operator which decomposes original solution into multiple partial solutions, preforms search independently, and then merges partial solution back into one solution.
  • A local search operator which tries to exchange jobs in best way between different routes.
  • A local search operator which tries to exchange random jobs between different routes.
  • A local search operator which tries to exchange jobs in random way inside one route.
  • A local search operator which tries to exchange sequence of jobs between routes.
  • Implements a SWAP* algorithm described in “Hybrid Genetic Search for the CVRP: Open-Source Implementation and SWAP* Neighborhood” by Thibaut Vidal.
  • A mutation operator which performs search in infeasible space.
  • A mutation operator which applies local search principles.
  • A ruin strategy which removes jobs in neighbourhood of randomly selected job (inclusive).
  • Provides way to use different recreate methods on different selection phases.
  • A ruin strategy which removes random jobs from solution.
  • A ruin strategy which removes random route from solution.
  • A recreate method as described in “Slack Induction by String Removals for Vehicle Routing Problems” (aka SISR) paper by Jan Christiaens, Greet Vanden Berghe.
  • A recreate method which is equivalent to cheapest insertion heuristic.
  • A recreate method which always insert first the farthest job in empty route and prefers filling non-empty routes first.
  • A recreate method which selects on each insertion step only subset of randomly chosen jobs.
  • A recreate strategy which solution using nearest neighbor algorithm.
  • A recreate method which perturbs the cost by a factor to introduce randomization.
  • A recreate strategy which computes the difference in cost of inserting customer in its best and kth best route, where k is a user-defined parameter. Then it inserts the customer with the max difference in its least cost position.
  • A recreate strategy which skips best job insertion for insertion.
  • A recreate method which skips random jobs and routes.
  • A recreate method which takes a slice from jobs and routes.
  • A search operator which removes jobs from existing routes and prevents their insertion into the same routes again. The main idea is to introduce a bit more diversity in the population.
  • Specifies a limit for amount of jobs to be removed.
  • Reschedules departure time of the routes in the solution.
  • A mutation operator based on ruin and recreate principle.
  • Provides the way to pick one heuristic operator from the group.
  • Provides the way to run one of multiple recreate methods.
  • Provides the way to pick one ruin from the group ruin methods.
  • A ruin strategy which detects the most cost expensive jobs in each route and delete them with their neighbours.
  • Removes a “worst” routes: e.g. the smallest ones.

Traits

  • Specifies behavior of a local search operator.
  • A trait which specifies logic to produce a new feasible solution from partial one.
  • A trait which specifies logic to destroy parts of solution.

Type Aliases

  • A type which specifies a group of multiple ruin strategies with their probability.