public void RateFitnessOfRandomIndividuals()
        {
            const int tests = 3;

            for (int n = 0; n < tests; n++)
            {
                var backPack = new BackPack(volume: random.Next(10000));
                var items = RandomItems(random.Next(512), backPack.Volume, 100);

                var environment = new BackPackEnvironment(backPack, items);

                for (int i = 0; i <= items.Count; i++)
                {
                    // compute chromosome
                    var chromosome = new int[environment.ComputeGenomeSize()];
                        // set every bit that encodes an Item at an index j < i
                    for (int j = 0; j < i; j++)
                    {
                        ChromosomeIndex index = environment.ComputeChromosomeIndex(j);
                        IntBitHelper.Set(ref chromosome[index.IntIndex], index.BitIndex);
                    }

                    var individual = new BackPackIndividual(environment) 
                        { Genome = new BackPackIndividualGenome(chromosome) };

                    // compute fitness with Item-List
                    double fitness = 0.0;
                    for (int j = 0; j < i; j++)
                    {
                        fitness += items[j].Value;
                    }

                    Assert.AreEqual(fitness, environment.RateFitness(individual));
                }
            }
        }