dynamicVRPEMOA: Evolutionary Multi-Objective Algorithm for dynamic routing.

Description Usage Arguments Value

View source: R/emoa.R

Description

EMOA designed to tackle a challenging multi-objective vehicle routing problem, where the goal is to minimize tour length(s) of one or multiple vehicles. Simultaneously, the number of unvisited customers which request for service as time passes by is to be minimized.

Usage

1
2
3
4
5
6
7
8
9
dynamicVRPEMOA(fitness.fun, instance, time.resolution = 100L,
  n.timeslots = NULL, n.vehicles = 1L,
  decision.fun = dynvrp::decideRandom, decision.params = list(),
  do.pause = FALSE, p.swap = 1, init.keep = TRUE,
  local.search.method = NULL, local.search.gens = 100L,
  init.distribution = "uniform",
  stop.conds = list(ecr::stopOnIters(100L)), mu = 50L,
  local.search.args = list(on.ls.failure), lambda = mu, seed = NULL,
  aposteriori = FALSE, ...)

Arguments

fitness.fun

[function(ind, instance, ...)]
Fitness function depends on individuals (see docs for initIndividual), the problem instance of type Network and optional further parameter (not used at the moment).

instance

[Network]
Network object with exactly two depots and optional release dates.

time.resolution

[numeric(1)]
Width of time windows. Default is 100.

n.vehicles

[integer(1)]
The number of vehicles. Default is 1.

decision.fun

[function(fitness, ...)]
Function used to make decision after each time slot. May be used for interactive decision or decision maker simulation (e.g., always decide for lexicographic optimum regarding one of the objective functions). Default is decideRandom, i.e., random choice of solution. If a vector of functions is passed the i-th function is used to make a choice in the i-th era.

decision.params

[list | NULL]
List of named lists of parameter choices for decision.fun. The i-the list is passed down to the i-th decision.fun in the i-th era.

do.pause

[logical(1)]
Pause execution after each time slot? Default is FALSE.

p.swap

[numeric(1)]
Probability for swap mutation. Default is 1.

init.keep

[logical(1)]
Should individuals in eras > 1 carry over information from last population? Default is TRUE.

local.search.method

[character(1)]
Local search algorithm. Default is NULL, i.e., no local search at all.

local.search.gens

[numeric]
Generations where local search should be applied.

init.distribution

[character(1)]
How shall available dynamic customers be sampled? Option “binomial”: each dynamic available customer is active with probability 0.5 independently. Option “uniform”: if there are n_d available dynamic customers, we have P(X = i) = \frac{1}{n_d} for i \in \{1, …, n_d\}. In a second step i positions are sampled at random.

stop.conds

[list[ecr_terminator]]
List of stopping conditions for each internal EMOA run. Default is to stop after 100 generations.

mu

[integer(1)]
Population size. Defaults to 50.

local.search.args

[list]
List of arguments for local search algorithm. Defaults to empty list.

lambda

[integer(1)]
Number of offspring. Default is mu.

seed

[integer | NULL]
Optional seed for run. Set outside the algorithm by default.

aposteriori

[logical(1)]
Treat the problem from an a posteriori perspective, i.e., perform just a single run of the EMOA, but give him oracle knowledge on the request times of dynamic requests.

...

[any]
Not used at the moment.

Value

[list] List with the following components:

era.results

Fine grained results. Use str to get insights.

pareto.front

Data frame with columns

“f1” [numeric]

Tour length.

“f2” [integer]

Normalized number of unvisited customers.

“f2shifted” [integer]

Unnormalized number of unvisited customers.

,

“era” [integer]

Corresponding era.

“selected” [logical]

Indicates whether the solution was selected by the decision maker.

populations

Data frame with objective vectors of all populations over all generations. Contains components

“f1” [numeric]

tour length

“f2” [integer]

(normalized tour length)

“f2shifted” [integer]

unnormalized number of unvisited customers.

,

“era” [integer]

Corresponding era.

“gen” [integer]

Generation.

meta

Data frame with additional meta information per era, namely

“era” [integer]

Corresponding era.

“current.time” [numeric]

Time passed so far.

“n.mandatory” [integer]

Number of mandatory customers.

“n.dynamic” [integer]

Total number of dynamic customers.

“n.dynamic.available” [integer]

Number of available dynamic customers, i.e., those who already requested for service.

“n.dynamic.upper.bound” [integer]

Upper bound for the number of unserved dynamic customers (note, that a partial tour is already traveled.) in normalized space, i.e., the space used in the last era.

“n.dynamic.lower.bound” [integer]

Lower bound for the number of unserved dynamic customers (depends on the time and the number of already arrived dynamic requests.

“n.dynamic.in.init.tour” [integer]

Number of dynamic customers already visited.

“time.passed” [numeric]

Time passed during the start of the optimization process.

“init.tour” [character]

Comma-separated partial, already traveled tour.

“dm.tour” [character]

Comma-separated sequence of customers in tour selected by decision maker in the corresponding era.


jakobbossek/dynvrp documentation built on Jan. 19, 2020, 9:53 p.m.