private IChromosome setupChromosome(final int[] set) throws InvalidConfigurationException {
        subsetGenes = new Gene[k];
        int minElementValue = Integer.MAX_VALUE;
        int maxElementValue = Integer.MIN_VALUE;
        for (final int element : set) {
            minElementValue = Math.min(element, minElementValue);
            maxElementValue = Math.max(element, maxElementValue);
        }

        for (int g = 0; g < k; g++) {

            subsetGenes[g] = new IntegerGene(configuration, 0, numElementsInSet - 1);
        }
        final Gene[] genes = new Gene[1 + getNumberOfParameters()];
        final AbstractSupergene constrainedGenes = new SubsetSuperGene(configuration, subsetGenes, this.allElements);
        genes[0] = constrainedGenes;
        for (int paramIndex = 0; paramIndex < getNumberOfParameters(); paramIndex++) {
            genes[1 + paramIndex] = new IntegerGene(configuration, 0, this.allPossibleParameterValues[paramIndex].length - 1);
        }
        subsetChromosome = new Chromosome(configuration, genes);
        return subsetChromosome;
    }