• No se han encontrado resultados

CORTOMETRAJES Y CONTENIDOS AUDIOVISUALES MULTIPLATAFORMA

CURTMETRATGES I CONTINGUTS AUDIOVISUALS MULTIPLATAFORMA SOLICITUD DE AYUDAS PARA PRODUCCIÓN AUDIOVISUAL EN VALENCIANO:

CORTOMETRAJES Y CONTENIDOS AUDIOVISUALES MULTIPLATAFORMA

For population-based metaheuristics, multiple solutions are taken into account when producing new solutions in each generation. Population-based metaheuristics that have been implemented to find solutions to the CARP include ant colony optimisation and genetic algorithms.

Ant colony optimisation Ant colony optimisation (ACO) is a metaheuristic that

is inspired by how ants work together to find the shortest path between their nest and a food source. Along a path it walks past, an ant leaves a chemical substance, called pheromone, which guides other ants that travel after it: among various possible paths, an ant will more likely choose a path with a more concentrated pheromone. If there is more than one path between the nest and the food source, a shorter path will tend to have a more concentrated pheromone, thus attracting more ants to follow that path. In terms of solving the CARP (or routing problems in general), each ant is regarded as an agent that constructs a solution. Each solution attribute (e.g. a pair of tasks that are serviced consecutively) is associated with a “pheromone value.” The pheromone values are updated after all ants finish constructing solutions.

Changes in the pheromone values of attributes that are used by some ants depend on qualities of the solutions that contain those attributes. The next generation of ants then construct solutions based on the current pheromone values: the higher the value, the higher probability the ant will use the corresponding attribute. This process is repeated for a given number of generations, and the algorithm returns the best found solution. ACO algorithms may also involve an evaporation process, whereby the pheromone values “evaporate” or reduce before each generation starts. This helps the algorithms focus more on solutions that are constructed in more recent generations.

When applying ACO to the CARP (or other optimisation problems in general), there are at least two questions that need answering: (i) What is represented by a walk of an ant? (ii) What feature of a solution is a pheromone associated with? In an ACO algorithm that Santos et al. (2010) proposed for the CARP, each ant constructs a single route, which they referred to as a “Single Network Tour (SNT),” containing all tasks. Each “walking step” of an ant corresponds to adding an oriented task (i.e. a task with a specified direction) to its SNT. A pheromone value τij is associated with a pair of oriented tasks (ai, aj), representing an ant “walking from task ai to task aj.” Suppose that ai is the last task in the SNT, the next task to be added in each step depends on pheromone values. There are several rules for determining the next task, for example, choosing task aj with the highest pheromone value τik among all possible tasks ak, or randomly choosing one of possible tasks with probability proportional to its pheromone value. During the construction of a SNT, the capacity constraint is omitted. Once all tasks are added to a SNT, a feasible solution is obtained by means of Ulusoy’s Partitioning (see Section 2.5). The total distance of the feasible solution is used as a measure of the quality of the corresponding SNT. After all ants construct their SNTs (the number of ants is a parameter to be specified), pheromone values are updated. The increase in the pheromone value for each pair of oriented task depends on the quality of SNTs that contain it: a higher quality SNT contributes a larger increase. For an exact way of calculating pheromone values, see Bullnheimer et al. (1997), whose method of updating pheromone values was adopted by Santos et al. (2010).

Genetic algorithms A genetic algorithm (GA) is a search algorithm that is

inspired by the way biological entities have evolved: In simple terms, each entity has a “chromosome”, which determines the entity’s features. Chromosomes are combined to produce new chromosomes and hence new entities. Ideally, a combination of chromosomes that yield “good” features would lead to new chromosomes with good or

even better features. Main concepts in a genetic algorithm include representation of chromosomes, crossover operators, population replacement, and mutation operators. A general genetic algorithm operates as follows: First, an initial set of solutions (i.e. initial population) is generated by some constructive heuristics. Then, in each iteration (also called generation), pairs of solutions, called parents, are selected and each pair undergo a crossover operator to produce new solutions, called offsprings. The offsprings are added to the population and some solutions in the population that are deemed low quality are discarded.

• Chromosomes. A chromosome in a genetic algorithm can be viewed as a code, usually in the form of a sequence of certain items or symbols, that can be converted into a solution. For the CARP, this may be as simple as a sequence of all tasks (Lacomme et al., 2004). To evaluate the chromosome, it has to be converted into a feasible solution. For example, a sequence of all tasks can be divided into feasible routes by means of Ulusoy’s partitioning (described in Section 2.5).

• Crossover operators. A crossover operator produces new “offspring” chromosomes

from existing (usually two) “parents” chromosomes. This is achieved by

cutting each given chromosome into several subsequences and recombining them in some way to form new chromosomes. Examples of crossover operators are the linear order crossover (LOX) and the order crossover (OX). Given two parents P1 = (P1(1), . . . , P1(n)) and P2 = (P2(1), . . . , P2(n)), where

each Pk(l) is a task and n is the number of all tasks, and given “cutting”

indices i, j with 1 ≤ i ≤ j ≤ n, the LOX produces an offspring C1 by

first setting C1(l) = P1(l) for l = i, . . . , j. Then, the remaining tasks C1(1) . . . , C1(i − 1), C1(j + 1), . . . , C1(n) are obtained by taking each task in P2 successively form P2(1) to P2(n), ignoring tasks that are already in C1. For the OX, an offspring C1 is produced by first setting C1(l) = P1(l) for l = i, . . . , j (the same as LOX) but the remaining tasks are obtained in a different order: the tasks P2(1) to P2(n)) (again, ignoring those that are already in C1) are successively placed at C1(j + 1), . . . , C1(n) before C1(1) . . . , C1(i − 1). After that, tasks in C1 are rotated so that C1(i) = P1(i). For both LOX and OX, the other offspring C2 is produced in the same way as C1 but with P1 in place of P2 and vice versa

• Population replacement. There are two schemes for evolving the population: incremental and generational (Lacomme et al., 2004). The main difference between these schemes is the number of parents that undergo crossover

operators in each generation. In an incremental GA, two parents undergo a crossover operator, and one of the offsprings (selected at random) replaces one of the solutions that is deemed “low quality”, e.g. the worst solution or one of the solutions whose total cost is greater than the median cost of the population (assuming the minimisation problem). In a generational GA, the whole population is divided into pairs and each pair undergoes a crossover operator. This results in twice as many chromosomes in the population. All the chromosomes are then ranked from “best” to “worst”, and the second half of the population are discarded.

• Mutation operators. Some genetic algorithms (Lacomme et al., 2001, 2004) also involve mutation operators, which make some changes to the offsprings after the crossover operator with a given probability. This potentially introduces features that do not exist in the parents, i.e. it can promote diversity in the population, thus preventing early convergence of the population. Some mutation operators are specifically designed to improve the quality of the solutions, for example, a mutation operator can be a local search; a genetic algorithm that involves a local search in this way is also called a memetic algorithm.

For examples of how genetic or memetic algorithms can be applied to the CARP, see Lacomme et al. (2004), Tang et al. (2009), and Fu et al. (2010).