class BitSetBinaryRepresentation implements GenotypeRepresentation {

    public void setDoubleValue(double[] phenotypeValue) {
        if (this.genome == null || this.genomeLength == 0){
            this.genome = new BitSet( MathUtils.sumSizes(this.descriptor.getVariablesLengths()) );
        }
        double[] intValues = new double[this.descriptor.getNumVariables()];
        for (int i = 0; i < this.descriptor.getNumVariables(); i++){
            // prevent falling out from defined interval
            if (phenotypeValue[i] < this.descriptor.getVariablesLowerBounds()[i]){
                phenotypeValue[i] = this.descriptor.getVariablesLowerBounds()[i];
            }
            intValues[i] = Math.ceil((phenotypeValue[i] - this.descriptor.getVariablesLowerBounds()[i]) / this.descriptor.getVariablesPrecisions()[i]);
        }
        integerToBinary(intValues);
    }

    public  BitSetBinaryRepresentation(SimpleBinaryGenomeDescriptor descriptor);
    public  BitSetBinaryRepresentation(BitSetBinaryRepresentation second);

}