Class: GA::Operators::Mutation::Positional
- Defined in:
- lib/operators.rb
Instance Method Summary collapse
- #apply(population) ⇒ Object
-
#initialize(options = {}) ⇒ Positional
constructor
A new instance of Positional.
Constructor Details
#initialize(options = {}) ⇒ Positional
Returns a new instance of Positional.
241 242 243 244 245 246 247 248 |
# File 'lib/operators.rb', line 241 def initialize( = {}) @probability = [:probability] || 0.01 @radius = [:radius] || 1 @epsilon = [:epsilon] || 1 GA.contract("Probability must be in the range [0, 1]") { @probability.between?(0, 1) } GA.contract("Epsilon must be greater than 0") { @epsilon > 0 } end |
Instance Method Details
#apply(population) ⇒ Object
250 251 252 253 254 255 256 257 258 259 260 261 262 263 |
# File 'lib/operators.rb', line 250 def apply(population) mutation(population) do |chromosome| if GA::Random.with_probability(@probability) chromosome = chromosome.dup i1 = GA::Random.rand(chromosome.size) i2 = (i1 + [GA::Random.rand(@epsilon+1), @epsilon].max) % chromosome.size chromosome.data[i1], chromosome.data[i2] = chromosome.data[i2], chromosome.data[i1] end chromosome end end |