def __init__(self, chromosomes, translator=None, abs_fit_weight=<NUM_LIT>, rel_fit_weight=<NUM_LIT>):
assert all(isinstance(c, Chromosome) for c in chromosomes)<EOL>assert <NUM_LIT:0> <= abs_fit_weight <= <NUM_LIT:1><EOL>assert <NUM_LIT:0> <= rel_fit_weight <= <NUM_LIT:1><EOL>assert abs_fit_weight + rel_fit_weight == <NUM_LIT:1><EOL>self.chromosomes = chromosomes<EOL>self.translator = translator<EOL>self.abs_fit_weight = abs_fit_weight<EOL>self.rel_fit_weight = rel_fit_weight<EOL>self.orig_pop_size = len(self.chromosomes)<EOL>self.min_fit_ever = None<EOL>self.max_fit_ever = None<EOL>self.fitness_cache = {}<EOL>self.generation_fittest = {}<EOL>self.generation_fittest_fit = {}<EOL>self.overall_fittest_fit = {}<EOL>self.new_fittest_generations = []<EOL>self.run_time_s = None<EOL>
Construct a new ``BaseGeneticAlgorithm`` instance.

chromosomes:  collection of initial chromosomes

translator (default=None):  ``translators.BaseTranslator`` instance that may be needed 
                            by ``eval_fitness`` method

abs_fit_weight (default=0.25, must be in [0, 1]):  
  The fraction of survival probabilities apportioned to a run's all-time fitness range.

  Increasing this weight places greater emphasis on a solution's fitness versus the
  overall observed fitness range within a run.

  Think of this as "environmental" pressure where bad solutions cannot survive even if
  they are much better than all other solutions (e.g. a powerful shark on dry land).

rel_fit_weight (default=0.75, must be in [0, 1]):
  The fraction of survival probabilities apportioned to relative fitness each generation.

  Increasing this weight places greater emphasis on a solution's fitness versus the
  fitness range within the current generation.

  Think of this as "competitive" pressure where even bad solutions which are relatively
  better get an relative advantage.

Asserts that (abs_fit_weight + rel_fit_weight) equals 1.