question: public static void evolve ( RealVariable v , double distributionIndex ) { double u = PRNG . nextDouble ( ) ; double x = v . getValue ( ) ; double lb = v . getLowerBound ( ) ; double ub = v . getUpperBound ( ) ; double dx = ub - lb ; double delta ; if ( u < 0.5 ) { double bl = ( x - lb ) / dx ; double b = 2 * u + ( 1 - 2 * u ) * ( Math . pow ( 1 - bl , ( distributionIndex + 1 ) ) ) ; delta = Math . pow ( b , ( 1.0 / ( distributionIndex + 1 ) ) ) - 1.0 ; } else { double bu = ( ub - x ) / dx ; double b = 2 * ( 1 - u ) + 2 * ( u - 0.5 ) * ( Math . pow ( 1 - bu , ( distributionIndex + 1 ) ) ) ; delta = 1.0 - Math . pow ( b , ( 1.0 / ( distributionIndex + 1 ) ) ) ; } x = x + delta * dx ; if ( x < lb ) { x = lb ; } else if ( x > ub ) { x = ub ; } v . setValue ( x ) ; }
target:  Mutates the specified variable using polynomial mutation.