ruby-jgap 0.0.2-java → 0.0.3-java

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: da1f5d18e0a46faaca1b2436d0c25b5017d15f2b
4
- data.tar.gz: 7689a9b162d30599dcae4f29fda432135b3d1261
3
+ metadata.gz: e9aa49148ce53319cbbaf0da2f9a73ec6810e546
4
+ data.tar.gz: b55811369919a6374621068f2a02f141440b755c
5
5
  SHA512:
6
- metadata.gz: 6d715b18d2df55f9415f7dc2bfbc93e52dc9012e579c403b2ed7db67b1341b3072236eece58ad960ebc8be509ff47987797bbdcb61dbac4e268241d93e29e259
7
- data.tar.gz: e2059b74fd96d9584d239b8d9ac410e43e74f69ca915bcaf794d5b23565152277a38b58a519ea70271ba78af6d6a7f15e1aa99678c3a4a9da7c8fe376505fa92
6
+ metadata.gz: 875ebd2d014740e7e0693c5f91fc92df874a654c6254efdac00d6aa3f32960370a07062bf87e60a29e8d936bec3c94e4b6da4322c931b247d2aa70835ae2bf79
7
+ data.tar.gz: 0408d1f318923d8a82f5d3984aa1f461ad1753fef9c74693e42e245e4a936fec60db1654ca66c08c1f117e38cf4dff34eedcf39fe957ea109c64b16d049b47f2
@@ -30,13 +30,6 @@ module JGAP
30
30
  subject.gene(@names[name]).allele
31
31
  end
32
32
 
33
- def salesman(name, cities)
34
- new_gene = IntegerGene.new(@config, 0, cities - 1)
35
- new_gene.set_allele java.lang.Integer.new(@genes.length)
36
- @names[name] = @genes.length
37
- @genes << new_gene
38
- end
39
-
40
33
  def integer(name, opts={})
41
34
  @names[name] = @genes.length
42
35
  unless opts.empty?
@@ -92,7 +85,7 @@ module JGAP
92
85
  chromosome
93
86
  population_size
94
87
  end
95
-
88
+
96
89
 
97
90
  def setup
98
91
  # Override me!
@@ -120,6 +113,18 @@ module JGAP
120
113
  end
121
114
  end
122
115
 
116
+ def minimize(value)
117
+ 1.0/(1 + value.abs)
118
+ end
119
+
120
+ def maximize(value)
121
+ if value <= 0
122
+ 1/value.abs
123
+ else
124
+ value
125
+ end
126
+ end
127
+
123
128
  ## MACROS
124
129
 
125
130
  def self.population_size(size)
@@ -12,6 +12,23 @@ java_import %w(
12
12
 
13
13
  module JGAP
14
14
 
15
+ class ChromosomeBuilder
16
+
17
+ def salesman(names)
18
+ names.each do |name|
19
+ new_gene = IntegerGene.new(@config, 0, names.length)
20
+ new_gene.set_allele java.lang.Integer.new(@genes.length)
21
+ @names[name] = @genes.length
22
+ @genes << new_gene
23
+ end
24
+ end
25
+
26
+ def get_name(num)
27
+ @names.invert[num]
28
+ end
29
+
30
+ end
31
+
15
32
  class Salesman < org.jgap.impl.salesman.Salesman
16
33
  attr_reader :best_solution
17
34
 
@@ -25,7 +42,14 @@ module JGAP
25
42
  chromosome
26
43
  population_size
27
44
  end
28
-
45
+
46
+ def distance(from, to)
47
+ distance_function(from.allele, to.allele)
48
+ end
49
+
50
+ def get_name(num)
51
+ @builder.get_name(num)
52
+ end
29
53
 
30
54
  def setup
31
55
  # Override me!
@@ -54,15 +78,12 @@ module JGAP
54
78
  end
55
79
  end
56
80
 
57
- def distance(from, to)
58
- # Override me!
59
- end
60
-
61
81
  ## MACROS
62
82
 
63
83
  def self.population_size(size)
64
84
  define_method(:population_size) do
65
85
  @population_size = size
86
+ set_population_size(@population_size)
66
87
  @config.set_population_size(@population_size)
67
88
  end
68
89
  end
@@ -77,10 +98,8 @@ module JGAP
77
98
  @chromosome
78
99
  end
79
100
  end
101
+
80
102
 
81
- def self.fitness_function(&block)
82
- define_method(:evaluate, &block)
83
- end
84
103
  end
85
104
 
86
105
  end
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "ruby-jgap"
7
- spec.version = "0.0.2"
7
+ spec.version = "0.0.3"
8
8
  spec.platform = "java"
9
9
  spec.authors = ["William Chen"]
10
10
  spec.email = ["wchen298@gmail.com"]
@@ -1,36 +1,29 @@
1
1
  require 'ruby-jgap'
2
2
 
3
- $table = [
4
- [0, 0],
5
- [-1, 1],
6
- [-7, -1],
7
- [-8, -2],
8
- [2, -1],
9
- [10, 2],
10
- [7, -1]
11
- ]
3
+ $table = {
4
+ A: [0, 0],
5
+ B: [1, 1],
6
+ C: [2, 2],
7
+ D: [3, 3],
8
+ E: [4, 4],
9
+ F: [5, 5],
10
+ G: [6, 6],
11
+ H: [7, 7],
12
+ I: [8, 8]
13
+ }
12
14
 
13
15
  class TSP < JGAP::Salesman
14
16
 
15
- population_size 100000
17
+ population_size 1000
16
18
 
17
19
  # define our solution chromosome
18
20
  chromosome do
19
- salesman :paris, 7
20
- salesman :london, 7
21
- salesman :new_york, 7
22
- salesman :boston, 7
23
- salesman :berlin, 7
24
- salesman :tokyo, 7
25
- salesman :shanghai, 7
21
+ salesman [:A, :B, :C, :D, :E, :F, :G, :H, :I]
26
22
  end
27
23
 
28
- def distance(from, to)
29
- f = from.allele
30
- t = to.allele
31
- x1, y1 = $table[f]
32
- x2, y2 = $table[t]
33
-
24
+ def distance_function(from, to)
25
+ x1, y1 = $table[get_name from]
26
+ x2, y2 = $table[get_name to]
34
27
  Math.sqrt((x1 - x2)**2 + (y1-y2)**2)
35
28
  end
36
29
 
data/test.rb CHANGED
@@ -26,9 +26,7 @@ class MakeChangeProblem < JGAP::Problem
26
26
  value = 25*q + 10*d + 5*n + p
27
27
  delta = (target - value).abs # how far are we from our goal?
28
28
 
29
- fitness = (99 - delta)
30
- fitness += 100 - (10*coins) if value == target # reward if matches with goal
31
- return fitness
29
+ minimize(coins + 2*delta)
32
30
  end
33
31
 
34
32
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-jgap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: java
6
6
  authors:
7
7
  - William Chen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-09 00:00:00.000000000 Z
11
+ date: 2015-02-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: