Genetic algorithms are based on the principles of evolution. A genetic algorithm typically consists of a population of possible solutions to a problem. The population is continually evolving in response to a fitness function that ranks the solutions. When a population evolves from one generation to the next the best solutions are retained in the next generation while the worst solutions are thrown out. Genetic variations of the best solutions are added to the next generation by applying genetic operators.

A genetic algorithm can be used to learn the interests of a user from a set of web documents the user has rated. The user’s interests are represented by a profile vector in the vector space model and learned from a population of potential profiles. The fitness of a potential profile *P* is determined by minimizing the following function:

_{}

where _{} is a real number in the range of 0 and 1 representing the users rating of a document _{} and _{} is the cosine measure. Potential profiles are constructed by applying three classic genetic operators, namely reproduction, crossover and mutation. The reproduction operator preserves a vector profile for the next generation. The crossover operator takes two parents and produces two offspring by dividing two profile vectors into two halves and exchanging the terms and corresponding weights of one halve. The mutation operator randomly changes either the term or the weight in a profile vector.