public void setValue(float a_value) { if (m_wholeNumbers) { m_value_float = Math.round(a_value); } else { m_value_float = a_value; } }
public void setValue(double a_value) { if (m_wholeNumbers) { m_value_double = Math.round(a_value); } else { m_value_double = a_value; } }
protected void setRandomValue(double a_value) { RandomGenerator randomGen = getGPConfiguration().getRandomGenerator(); m_value_double = randomGen.nextDouble() * (m_upperBounds - m_lowerBounds) + m_lowerBounds; if (m_wholeNumbers) { m_value_double = Math.round(m_value_double); } }
protected void setRandomValue(float a_value) { RandomGenerator randomGen = getGPConfiguration().getRandomGenerator(); m_value_float = (float) (randomGen.nextFloat() * (m_upperBounds - m_lowerBounds) + m_lowerBounds); if (m_wholeNumbers) { m_value_float = Math.round(m_value_float); } }
public CommandGene applyMutation(int index, double a_percentage) throws InvalidConfigurationException { // If percentage is very high: do mutation not relying on // current value but on a random value. // ------------------------------------------------------ if (a_percentage > 0.85d) { setRandomValue(); } else { Class retType = getReturnType(); if (retType == CommandGene.FloatClass) { float newValuef; float rangef = ((float) m_upperBounds - (float) m_lowerBounds) * (float) a_percentage; if (m_value_float >= (m_upperBounds - m_lowerBounds) / 2) { newValuef = m_value_float - getGPConfiguration().getRandomGenerator().nextFloat() * rangef; } else { newValuef = m_value_float + getGPConfiguration().getRandomGenerator().nextFloat() * rangef; } // Ensure value is within bounds. // ------------------------------ if (m_lowerBounds - newValuef > DELTA || newValuef - m_upperBounds > DELTA) { setRandomValue(m_value_float); } else { setValue(newValuef); } } else if (retType == CommandGene.DoubleClass) { double newValueD; double rangeD = (m_upperBounds - m_lowerBounds) * a_percentage; if (m_value_double >= (m_upperBounds - m_lowerBounds) / 2) { newValueD = m_value_double - getGPConfiguration().getRandomGenerator().nextFloat() * rangeD; } else { newValueD = m_value_double + getGPConfiguration().getRandomGenerator().nextFloat() * rangeD; } // Ensure value is within bounds. // ------------------------------ if (m_lowerBounds - newValueD > DELTA || newValueD - m_upperBounds > DELTA) { setRandomValue(m_value_float); } else { setValue(newValueD); } } else if (retType == CommandGene.IntegerClass) { int newValueI; double range = (m_upperBounds - m_lowerBounds) * a_percentage; if (m_value_int >= (m_upperBounds - m_lowerBounds) / 2) { newValueI = m_value_int - (int) Math.round(getGPConfiguration().getRandomGenerator().nextInt() * range); } else { newValueI = m_value_int + (int) Math.round(getGPConfiguration().getRandomGenerator().nextFloat() * range); } // Ensure value is within bounds. // ------------------------------ if (newValueI < m_lowerBounds || newValueI > m_upperBounds) { setRandomValue(m_value_int); } else { setValue(newValueI); } } else if (retType == CommandGene.LongClass) { long newValueL; double range = (m_upperBounds - m_lowerBounds) * a_percentage; if (m_value_long >= (m_upperBounds - m_lowerBounds) / 2) { newValueL = m_value_long - Math.round(getGPConfiguration().getRandomGenerator().nextInt() * range); } else { newValueL = m_value_long + Math.round(getGPConfiguration().getRandomGenerator().nextFloat() * range); } // Ensure value is within bounds. // ------------------------------ if (newValueL < m_lowerBounds || newValueL > m_upperBounds) { setRandomValue(m_value_long); } else { setValue(newValueL); } } } return this; }
protected void setRandomValue(long a_value) { RandomGenerator randomGen = getGPConfiguration().getRandomGenerator(); m_value_long = Math.round(randomGen.nextDouble() * (m_upperBounds - m_lowerBounds) + m_lowerBounds); }