```

```

#### NAME

```       gatask - solve a task assignment problem via a genetic
algorithm

```

#### SYNOPSIS

```       gatask -help
or
gatask [-specs string]  [-size  integer]  [-gens  integer]
[-seed  integer]  [-crate  double]  [-mrate double]
[-pbase double]

```

#### DESCRIPTION

```       Use a genetic algorithm to solve a task assignment problem
with  user-specified  costs.  This program illustrates how
GAs can perform combinatorial optimization.   Reproduction
of  strings  entails special crossover and mutation opera-
tions which preserve constraints on the form  of  feasible
solutions with strings being selected based on fitness.

```

#### OPTIONS

```       -specs string
Problem specification file.

-size integer
Population size.

-gens integer
Number of generations.

-seed integer
Random seed.

-crate double
Crossover rate.

-mrate double
Mutation rate.

-pbase double
Exponentiation base.

```

#### MISCELLANY

```       Feasible  solutions  are  represented  as  an array of LEN
integers which must contain all integers between 0 and LEN
-  1 to denote which person performs which task.  As such,
the mutation and crossover operators  have  to  be  subtly
redefined  so  that candidate solutions are still feasible
after they are crossed and mutated.

For mutation, we simply swap two locations in  a  solution
array.

Crossing two solutions is a little more complicated.  Con-
sult the source code to see how it's done in a manner that

preserves the feasibility of the two children while blend-
ing portions of each parent solution.

The fitness function works in  three  steps.   First,  the
score of a solution is calculated and denoted the raw fit-
ness.  The scaled fitness is then set  to  pow(PBASE,  raw
fitness  -  worst raw fitness).  The normalized fitness is
then set to the scaled fitness divided by the sum  of  the
scaled  fitnesses.   Thus  the  sum of the normalized fit-
nesses must be equal to one while  a  string  with  a  raw
score  of one better than another string is PBASE times as
likely to reproduce, where PBASE  is  the  value  supplied
with the -pbase option.

```

#### BUGS

```       No  sanity  checks  are performed to make sure that any of
the options make sense.

```

#### AUTHOR

```       Copyright (c) 1997, Gary William Flake.

Permission granted for any use according to  the  standard
GNU ``copyleft'' agreement provided that the author's com-
ments are neither modified nor removed.   No  warranty  is
given or implied.

```

Man(1) output converted with man2html