class LennardJonesSolution

Public Class Methods

new(atoms_positions = nil) click to toggle source
Calls superclass method Solution::new
# File lib/gimuby/problem/lennard_jones/lennard_jones_solution.rb, line 11
def initialize(atoms_positions = nil)
  super(atoms_positions)

  @check_strategy = SolutionSpaceCheckStrategy.new
  @check_strategy.set_min(@@position_dimension_min)
  @check_strategy.set_max(@@position_dimension_max)

  @new_generation_strategy = CombinedNewGenerationStrategy.new
  @new_generation_strategy.add_strategy(ParentRangeNewGenerationStrategy.new)
  @new_generation_strategy.add_strategy(CrossOverNewGenerationStrategy.new)

  @mutation_strategy = SolutionSpaceMutationStrategy.new
  @mutation_strategy.set_min(@@position_dimension_min)
  @mutation_strategy.set_max(@@position_dimension_max)
end

Public Instance Methods

evaluate() click to toggle source
# File lib/gimuby/problem/lennard_jones/lennard_jones_solution.rb, line 27
def evaluate
  get_lennard_jones.evaluate(get_solution_representation)
end
get_solution_representation() click to toggle source
# File lib/gimuby/problem/lennard_jones/lennard_jones_solution.rb, line 31
def get_solution_representation
  @atoms_positions.clone
end
set_solution_representation(atoms_positions) click to toggle source
# File lib/gimuby/problem/lennard_jones/lennard_jones_solution.rb, line 35
def set_solution_representation(atoms_positions)
  @atoms_positions = atoms_positions.clone
  #@atoms_positions = @atoms_positions.sort_by do |atom_position|
  #  atom_position[0]
  #end
end

Protected Instance Methods

get_lennard_jones() click to toggle source
# File lib/gimuby/problem/lennard_jones/lennard_jones_solution.rb, line 58
def get_lennard_jones
  LennardJones.new
end
init_representation() click to toggle source
# File lib/gimuby/problem/lennard_jones/lennard_jones_solution.rb, line 44
def init_representation
  @atoms_positions = []
  atoms_number = $config.lennard_jones_atoms
  atoms_number.times do
    atom_position = []
    @@positions_dimensions.times do
      position_dimension_range = (@@position_dimension_max - @@position_dimension_min)
      position_dimension = (rand * position_dimension_range) + @@position_dimension_min
      atom_position.push(position_dimension)
    end
    @atoms_positions.push(atom_position)
  end
end