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: BigDecimal('0.2'), absorption_coefficient_gamma: BigDecimal('1.0')) ⇒ Object
Methods included from Helper
Methods included from BaseAlgorithmModule
#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: BigDecimal('0.2'), absorption_coefficient_gamma: BigDecimal('1.0')) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/metaheuristic_algorithms/firefly_algorithm.rb', line 45 def search(number_of_fireflies: 10, maximun_generation: 10, randomization_parameter_alpha: BigDecimal('0.2'), absorption_coefficient_gamma: BigDecimal('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) initialize_fireflies(number_of_fireflies) # 0 to maximun_generation-1 (0...maximun_generation).each 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 |