class MetaheuristicAlgorithms::HarmonySearch

Public Class Methods

new(function_wrapper, number_of_variables: 1, objective: :maximization) click to toggle source

objective: :maximization or :minimization

# File lib/metaheuristic_algorithms/harmony_search.rb, line 8
def initialize(function_wrapper, number_of_variables: 1, objective: :maximization)
  @function_wrapper = function_wrapper
  @number_of_variables = number_of_variables
  @objective_method_name = case objective
                             when :maximization
                               :max
                             when :minimization
                               :min
                           end
  @objective_comparison_operator = case objective
                           when :maximization
                             :>
                           when :minimization
                             :<
                         end 
end

Public Instance Methods

Private Instance Methods

initialize_harmony_memory(harmony_search_size) click to toggle source
# File lib/metaheuristic_algorithms/harmony_search.rb, line 87
def initialize_harmony_memory(harmony_search_size)

  @harmony_memory = []
  @best_function_value_harmony_memory = []

  for i in (0...harmony_search_size)

    decision_variable_values = (0...@number_of_variables).map do |variable_index|
      get_decision_variable_value_by_randomization(variable_index)
    end

    @harmony_memory << decision_variable_values
    @best_function_value_harmony_memory << @function_wrapper.objective_function_value(decision_variable_values).to_f

  end

end