Class: MetaheuristicAlgorithms::FireflyAlgorithm
- Inherits:
-
Object
- Object
- MetaheuristicAlgorithms::FireflyAlgorithm
- Includes:
- BaseAlgorithmModule, Helper
- Defined in:
- lib/metaheuristic_algorithms/firefly_algorithm.rb
Defined Under Namespace
Classes: Firefly
Instance Method Summary collapse
-
#initialize(function_wrapper, number_of_variables: 1, objective: :maximization) ⇒ FireflyAlgorithm
constructor
A new instance of FireflyAlgorithm.
-
#search(number_of_fireflies: 10, maximun_generation: 10, randomization_parameter_alpha: 0.2, absorption_coefficient_gamma: 1.0) ⇒ Object
def search(number_of_fireflies: 10, maximun_generation: 10, randomization_parameter_alpha: BigDecimal(‘0.2’), absorption_coefficient_gamma: BigDecimal(‘1.0’)).
Methods included from Helper
Methods included from BaseAlgorithmModule
#gaussian, #get_decision_variable_value_by_randomization
Constructor Details
#initialize(function_wrapper, number_of_variables: 1, objective: :maximization) ⇒ FireflyAlgorithm
Returns a new instance of FireflyAlgorithm.
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/metaheuristic_algorithms/firefly_algorithm.rb', line 34 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_by when :minimization :min_by end end |
Instance Method Details
#search(number_of_fireflies: 10, maximun_generation: 10, randomization_parameter_alpha: 0.2, absorption_coefficient_gamma: 1.0) ⇒ Object
def search(number_of_fireflies: 10, maximun_generation: 10, randomization_parameter_alpha: BigDecimal(‘0.2’), absorption_coefficient_gamma: BigDecimal(‘1.0’))
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/metaheuristic_algorithms/firefly_algorithm.rb', line 46 def search(number_of_fireflies: 10, maximun_generation: 10, randomization_parameter_alpha: 0.2, absorption_coefficient_gamma: 1.0) number_of_fireflies = number_of_fireflies.to_i unless number_of_fireflies.kind_of?(Integer) maximun_generation = maximun_generation.to_i unless maximun_generation.kind_of?(Integer) # randomization_parameter_alpha = BigDecimal(randomization_parameter_alpha.to_s) unless randomization_parameter_alpha.kind_of?(BigDecimal) # absorption_coefficient_gamma = BigDecimal(absorption_coefficient_gamma.to_s) unless absorption_coefficient_gamma.kind_of?(BigDecimal) randomization_parameter_alpha = randomization_parameter_alpha.to_f unless randomization_parameter_alpha.kind_of?(Float) absorption_coefficient_gamma = absorption_coefficient_gamma.to_f unless absorption_coefficient_gamma.kind_of?(Float) initialize_fireflies(number_of_fireflies) maximun_generation.times do |generation| @fireflies.each { |firefly| firefly.update_light_intensity } move_fireflies(randomization_parameter_alpha, absorption_coefficient_gamma) end solution_firefly = @fireflies.send(@objective_method_name) { |firefly| firefly.light_intensity } { best_decision_variable_values: solution_firefly.location_coordinates, best_objective_function_value: solution_firefly.light_intensity } end |