Module: FeldtRuby::Optimize::DE_CrossoverStrategy_Binomial

Included in:
DEOptimizer_Best_1_Bin, DEOptimizer_Rand_1_Bin
Defined in:
lib/feldtruby/optimize/differential_evolution.rb

Overview

This is the classic binomial DE///bin crossover.

Instance Method Summary collapse

Instance Method Details

#crossover_donor_and_target(targetVector, donorVector, targetVectorIndex) ⇒ Object



133
134
135
136
137
138
139
140
141
142
# File 'lib/feldtruby/optimize/differential_evolution.rb', line 133

def crossover_donor_and_target(targetVector, donorVector, targetVectorIndex)
  num_variables = donorVector.size
  jrand = rand_int(num_variables)
  trial_vector = targetVector.clone.to_a   # We use the targetVector values as a starting point
  trial_vector[jrand] = donorVector[jrand] # Always copy one random var to ensure some difference.
  num_variables.times do |j|
    trial_vector[j] = donorVector[j] if rand() <= crossover_rate(j) # Copy with crossover_rate probability
  end
  candidate_from_array(trial_vector)
end