gga4r 0.9.1 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  require "yaml"
2
2
  require "logger"
3
+ require "rubygems"
3
4
  require "active_support"
4
5
 
5
6
  class GeneticAlgorithm
@@ -134,6 +135,7 @@ class GeneticAlgorithm
134
135
  @logger.debug "Shuffled!" if @logger
135
136
  new_childs = []
136
137
  new_generation.in_groups_of(2) do |chromosome1, chromosome2|
138
+ next if chromosome2.nil?
137
139
  if rand > (1 - @p_combination)
138
140
  @logger.debug "Recombining" if @logger
139
141
  new_childs += chromosome1.recombine(chromosome2)
@@ -2,7 +2,7 @@ module Gga4r #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 9
5
- TINY = 1
5
+ TINY = 2
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -1,5 +1,18 @@
1
1
  require File.dirname(__FILE__) + '/test_helper.rb'
2
2
 
3
+ class IndividualStub < Array
4
+ def recombine(a)
5
+ self * 2
6
+ end
7
+ def self.create_random_population(num_population = 30)
8
+ population = []
9
+ num_population.times do
10
+ population << IndividualStub.new
11
+ end
12
+ return population
13
+ end
14
+ end
15
+
3
16
  class Gga4rTest < Test::Unit::TestCase
4
17
 
5
18
  def setup
@@ -8,4 +21,17 @@ class Gga4rTest < Test::Unit::TestCase
8
21
  def test_truth
9
22
  assert true
10
23
  end
24
+
25
+ def test_recombine
26
+ first_pop_even = IndividualStub.create_random_population(30)
27
+ ga = GeneticAlgorithm.new(first_pop_even)
28
+ new_pop = ga.recombination!
29
+ assert true, first_pop_even.size < new_pop.size
30
+
31
+ first_pop_odd = IndividualStub.create_random_population(31)
32
+ ga = GeneticAlgorithm.new(first_pop_odd)
33
+ new_pop = ga.recombination!
34
+ assert true, first_pop_odd.size < new_pop.size
35
+
36
+ end
11
37
  end
metadata CHANGED
@@ -3,12 +3,11 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: gga4r
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.9.1
7
- date: 2007-11-22 00:00:00 +01:00
6
+ version: 0.9.2
7
+ date: 2007-11-30 00:00:00 +01:00
8
8
  summary: "A Ruby Genetic Algorithm. So simple to use: 1, take a class to evolve it and define fitness, recombine and mutate methods. 2, create a GeneticAlgorithm object with the population. 3, call evolve method as many times as you want.description of gem"
9
9
  require_paths:
10
10
  - lib
11
- - test
12
11
  email: sergio.espeja@gmail.com
13
12
  homepage: http://gga4r.rubyforge.org
14
13
  rubyforge_project: gga4r
@@ -42,12 +41,15 @@ files:
42
41
  - test/test_helper.rb
43
42
  - test/gga4r_test.rb
44
43
  - examples/ga_fitness_all_1s.rb
45
- test_files: []
46
-
47
- rdoc_options: []
48
-
49
- extra_rdoc_files: []
50
-
44
+ test_files:
45
+ - test/gga4r_test.rb
46
+ rdoc_options:
47
+ - --main
48
+ - README.txt
49
+ extra_rdoc_files:
50
+ - README.txt
51
+ - CHANGELOG.txt
52
+ - Manifest.txt
51
53
  executables: []
52
54
 
53
55
  extensions: []