ruby-mhl
A Ruby metaheuristics library
Installation
Stable version
You can get the stable version of ruby-mhl by installing the mhl gem from RubyGems:
gem install mhl
Development version
If you want to try the development version of ruby-mhl, instead, just place this line:
gem 'mhl', git: 'https://github.com/mtortonesi/ruby-mhl.git'
in your Gemfile and run:
bundle install
Examples
Here is an example demonstrating how to find the argument that minimizes the 2-dimension parabola x_1 ^ 2 + x_2 ^ 2 equation with a genetic algorithm:
require 'mhl'
solver = MHL::GeneticAlgorithmSolver.new(
:population_size => 40,
:genotype_space_type => :integer,
:mutation_probability => 0.5,
:recombination_probability => 0.5,
:genotype_space_conf => {
:dimensions => 2,
:recombination_type => :intermediate,
:random_func => lambda { Array.new(2) { rand(20) } }
},
:exit_condition => lambda {|generation,best| best[:fitness] == 0}
)
solver.solve(Proc.new{|x| -(x[0] ** 2 + x[1] ** 2) })
and with particle swarm optimization:
require 'mhl'
solver = MHL::ParticleSwarmOptimizationSolver.new(
:swarm_size => 40,
:random_position_func => lambda { Array.new(2) { rand(20) } },
:random_velocity_func => lambda { Array.new(2) { rand(10) } },
:exit_condition => lambda {|generation,best| best[:height].abs < 0.001 },
)
solver.solve(Proc.new{|x| -(x[0] ** 2 + x[1] ** 2) })
Other examples and a full documentation will be publised as ruby-mhl matures.
License
MIT