Class: Stochastic::RandomSearch
- Inherits:
-
Object
- Object
- Stochastic::RandomSearch
- Defined in:
- lib/Algorithmically/Stochastic/random_search.rb
Instance Method Summary collapse
-
#initialize(size, max_iter) ⇒ RandomSearch
constructor
A new instance of RandomSearch.
- #objective_function(vector) ⇒ Object
- #random_vector(minmax) ⇒ Object
- #search(search_space, maximum_iterations) ⇒ Object
Constructor Details
#initialize(size, max_iter) ⇒ RandomSearch
Returns a new instance of RandomSearch.
5 6 7 8 9 10 11 |
# File 'lib/Algorithmically/Stochastic/random_search.rb', line 5 def initialize(size, max_iter) problem_size = size search_space = Array.new(problem_size) { |i| [-5, +5] } maximum_iterations = max_iter best_solution = self.search(search_space, maximum_iterations) puts "Done. Best Solution: c = #{best_solution[:cost]}, v = #{best_solution[:vector].inspect}" end |
Instance Method Details
#objective_function(vector) ⇒ Object
13 14 15 |
# File 'lib/Algorithmically/Stochastic/random_search.rb', line 13 def objective_function(vector) vector.inject(0) { |sum, x| sum + (x ** 2.0) } end |
#random_vector(minmax) ⇒ Object
17 18 19 20 21 |
# File 'lib/Algorithmically/Stochastic/random_search.rb', line 17 def random_vector(minmax) Array.new(minmax.size) do |i| minmax[i][0] + ((minmax[i][1]) - minmax[i][0] * rand()) end end |
#search(search_space, maximum_iterations) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/Algorithmically/Stochastic/random_search.rb', line 23 def search(search_space, maximum_iterations) best_solution = nil maximum_iterations.times do |iterate| search_candidate = {} search_candidate[:vector] = random_vector(search_space) search_candidate[:cost] = objective_function(search_candidate[:vector]) best_solution = search_candidate if best_solution.nil? or search_candidate[:cost] < best_solution[:cost] puts " > iteration = #{(iterate + 1)}, best = #{best_solution[:cost]}" end best_solution end |