evolvable 1.1.0 → 2.0.0

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.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -0
  3. data/CHANGELOG.md +31 -1
  4. data/Gemfile +2 -2
  5. data/Gemfile.lock +44 -25
  6. data/README.md +498 -190
  7. data/README_YARD.md +85 -166
  8. data/bin/console +10 -19
  9. data/docs/Evolvable/ClassMethods.html +1233 -0
  10. data/docs/Evolvable/Community/ClassMethods.html +708 -0
  11. data/docs/Evolvable/Community.html +1342 -0
  12. data/docs/Evolvable/CountGene.html +886 -0
  13. data/docs/Evolvable/EqualizeGoal.html +347 -0
  14. data/docs/Evolvable/Error.html +134 -0
  15. data/docs/Evolvable/Evaluation.html +773 -0
  16. data/docs/Evolvable/Evolution.html +616 -0
  17. data/docs/Evolvable/Gene/ClassMethods.html +413 -0
  18. data/docs/Evolvable/Gene.html +522 -0
  19. data/docs/Evolvable/GeneCluster/ClassMethods.html +431 -0
  20. data/docs/Evolvable/GeneCluster.html +280 -0
  21. data/docs/Evolvable/GeneCombination.html +515 -0
  22. data/docs/Evolvable/GeneSpace.html +619 -0
  23. data/docs/Evolvable/Genome.html +1070 -0
  24. data/docs/Evolvable/Goal.html +500 -0
  25. data/docs/Evolvable/MaximizeGoal.html +348 -0
  26. data/docs/Evolvable/MinimizeGoal.html +348 -0
  27. data/docs/Evolvable/Mutation.html +729 -0
  28. data/docs/Evolvable/PointCrossover.html +444 -0
  29. data/docs/Evolvable/Population.html +2826 -0
  30. data/docs/Evolvable/RigidCountGene.html +501 -0
  31. data/docs/Evolvable/Selection.html +594 -0
  32. data/docs/Evolvable/Serializer.html +293 -0
  33. data/docs/Evolvable/UniformCrossover.html +286 -0
  34. data/docs/Evolvable.html +1619 -0
  35. data/docs/_index.html +341 -0
  36. data/docs/class_list.html +54 -0
  37. data/docs/css/common.css +1 -0
  38. data/docs/css/full_list.css +58 -0
  39. data/docs/css/style.css +503 -0
  40. data/docs/file.README.html +750 -0
  41. data/docs/file_list.html +59 -0
  42. data/docs/frames.html +22 -0
  43. data/docs/index.html +750 -0
  44. data/docs/js/app.js +344 -0
  45. data/docs/js/full_list.js +242 -0
  46. data/docs/js/jquery.js +4 -0
  47. data/docs/method_list.html +1302 -0
  48. data/docs/top-level-namespace.html +110 -0
  49. data/evolvable.gemspec +6 -6
  50. data/examples/ascii_art.rb +5 -9
  51. data/examples/stickman.rb +25 -33
  52. data/{examples/hello_world.rb → exe/hello_evolvable_world} +46 -30
  53. data/lib/evolvable/community.rb +190 -0
  54. data/lib/evolvable/count_gene.rb +65 -0
  55. data/lib/evolvable/equalize_goal.rb +2 -9
  56. data/lib/evolvable/evaluation.rb +113 -14
  57. data/lib/evolvable/evolution.rb +38 -15
  58. data/lib/evolvable/gene.rb +125 -28
  59. data/lib/evolvable/gene_cluster.rb +106 -0
  60. data/lib/evolvable/gene_combination.rb +62 -17
  61. data/lib/evolvable/gene_space.rb +111 -0
  62. data/lib/evolvable/genome.rb +36 -8
  63. data/lib/evolvable/goal.rb +19 -24
  64. data/lib/evolvable/maximize_goal.rb +2 -9
  65. data/lib/evolvable/minimize_goal.rb +3 -9
  66. data/lib/evolvable/mutation.rb +87 -41
  67. data/lib/evolvable/point_crossover.rb +24 -4
  68. data/lib/evolvable/population.rb +258 -84
  69. data/lib/evolvable/rigid_count_gene.rb +36 -0
  70. data/lib/evolvable/selection.rb +68 -14
  71. data/lib/evolvable/serializer.rb +46 -0
  72. data/lib/evolvable/uniform_crossover.rb +30 -6
  73. data/lib/evolvable/version.rb +2 -1
  74. data/lib/evolvable.rb +276 -107
  75. metadata +57 -36
  76. data/examples/images/diagram.png +0 -0
  77. data/exe/hello +0 -16
  78. data/lib/evolvable/error/undefined_method.rb +0 -7
  79. data/lib/evolvable/search_space.rb +0 -181
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 145d256bfb7b28668a14cab664de8dabc2e0bfe8bbfa4c2301e9c1aaae843cf2
4
- data.tar.gz: ce722823a53c91a053657d2bc990372de614b7236390ddc27ac88571932f5a5f
3
+ metadata.gz: e531567e2b38d0fa358f879d8b7e12c7c8ebf1d24d24349eb69cc59da3f3205a
4
+ data.tar.gz: 61f581ea11632e5619473e1f222c960db947a8a8efa14cbe455f768274cab2a8
5
5
  SHA512:
6
- metadata.gz: d68b7d03481e1ff1a3dce744dd98075bfd2567f24acddb5a770c1ae7acd737fd99c32f3f3434381d47bc2a54e5dd4047e822be12cf5f1bcd3e79f6f7b71cc698
7
- data.tar.gz: 2c9fd505b36a76dc6f25dfa3a70d58e6387ab3689716b29bfbfd5291649b9de2f160609f1192e9843fe9c4dd54759350924e8e442ae4d49728cff87510b5c518
6
+ metadata.gz: eb1d7a642018cab4cf194687eaf6d56d67696a0930670bd399698161fdfabf4c5ee9c3d68c0428795b47219e7a637b7bbed2a6dedbaf3cf92de3aaf108c2e4b7
7
+ data.tar.gz: db8f87f2f402ec6b1d24a9ea4bddd6fa7401a3f479e53a826700617110916d0c4f59db2d19a5fd70c8626f6e2747d0f0c6765c333103270d3c00cc9492a76141
data/.yardopts CHANGED
@@ -1,4 +1,6 @@
1
1
  --plugin readme
2
2
  --markup markdown
3
+ --markup-provider redcarpet
4
+ --output-dir docs
3
5
 
4
6
  lib/**/*.rb
data/CHANGELOG.md CHANGED
@@ -1,4 +1,34 @@
1
- ## Unreleased
1
+ ## 2.0.0 - 2025-5-10
2
+
3
+ Breaking Changes:
4
+ * Replaced legacy .search_space and .search_spaces definitions with the new .gene macro-style for defining genetic attributes.
5
+ * Renamed `#value` to `#fitness` throughout the codebase for clarity.
6
+ * Removed deprecated `Gene.crossover` in favor of `Gene.combine`.
7
+ * Removed deprecated `Evolution#crossover` in favor of `Evolution#combination`.
8
+ * Renamed `Evolvable#after_initialize` to `Evolvable#after_initialize_evolvable`.
9
+ * Changed population initialization and evolvable creation workflow for more consistency.
10
+ * Simplified error handling by unifying all exceptions under a single Evolvable::Error type
11
+ * Changed `Population#new_evolvables` to only accept a `count` parameter, removing the `evolvables` parameter.
12
+ * Changed default `size` parameter in `Population#initialize` from 40 to 0.
13
+ * Changed `Population#evolve` default `count` parameter from `Float::INFINITY` to `1`.
14
+
15
+ New Features:
16
+ * Added gene clusters for organizing related genes through the `cluster` parameter in gene definitions.
17
+ * Introduced the `Evolvable::GeneCluster` module for complex gene grouping.
18
+ * Added `Evolvable::Community` for managing multiple populations and their interactions.
19
+ * Added genome merging capabilities with `merge_genome!` and `load_and_merge_genome!`.
20
+ * Added `evolve_selected` method to Population for evolving a specific subset of evolvables.
21
+ * Added automatic method generation for accessing genes and gene clusters by name.
22
+ * Added new evolution control methods: evolve_to_goal and evolve_forever for more intuitive lifecycle control.
23
+ * Comprehensive YARD documentation and README overhaul.
24
+
25
+ ## 1.2.0 - 2022-1-22
26
+
27
+ * Make it easier to dump and load genomes and use custom serializers. [69afd7c](https://github.com/mattruzicka/evolvable/commit/69afd7c957cbf89cc03b4f3f0ba967bf571c34c5)
28
+ * Avoid needing Gene#combine implementations to deal with nil args. Technically this could be a breaking change if you have custom combination logic for when two evolvables have different numbers of the same kind of gene and you do something other than just return the gene that isn't nil, but that this is the case seems unlikely, especially considering I'm not even aware of anyone else using this gem in the wild. If you do, please reach out! I'd love to hear from you, even if you're angry about this! [7ae1087](https://github.com/mattruzicka/evolvable/commit/7ae108762505230d81afc79b2f6c3e679fadc1a4)
29
+
30
+
31
+ ## 1.1.0 - 2021-12-30
2
32
 
3
33
  Features
4
34
  * Updated documentation.
data/Gemfile CHANGED
@@ -4,5 +4,5 @@ source 'https://rubygems.org'
4
4
 
5
5
  gemspec
6
6
 
7
- gem 'byebug'
8
- gem 'readme_yard', path: '/Users/matt/Code/readme_yard'
7
+ gem 'debug'
8
+ gem 'bundler', '~> 2.5'
data/Gemfile.lock CHANGED
@@ -1,55 +1,74 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- evolvable (1.1.0)
5
-
6
- PATH
7
- remote: /Users/matt/Code/readme_yard
8
- specs:
9
- readme_yard (0.2.0)
10
- tty-markdown (~> 0.7)
11
- yard-readme (~> 0.3)
4
+ evolvable (2.0.0)
12
5
 
13
6
  GEM
14
7
  remote: https://rubygems.org/
15
8
  specs:
16
- byebug (11.1.3)
17
- kramdown (2.3.1)
18
- rexml
9
+ date (3.4.1)
10
+ debug (1.10.0)
11
+ irb (~> 1.10)
12
+ reline (>= 0.3.8)
13
+ diffy (3.4.3)
14
+ io-console (0.8.0)
15
+ irb (1.15.2)
16
+ pp (>= 0.6.0)
17
+ rdoc (>= 4.0.0)
18
+ reline (>= 0.4.2)
19
+ kramdown (2.5.1)
20
+ rexml (>= 3.3.9)
19
21
  pastel (0.8.0)
20
22
  tty-color (~> 0.5)
21
- rexml (3.2.5)
22
- rouge (3.26.0)
23
+ pp (0.6.2)
24
+ prettyprint
25
+ prettyprint (0.2.0)
26
+ psych (5.2.5)
27
+ date
28
+ stringio
29
+ rdoc (6.13.1)
30
+ psych (>= 4.0.0)
31
+ readme_yard (0.6.0)
32
+ diffy (~> 3.4)
33
+ redcarpet (~> 3.6)
34
+ tty-markdown (~> 0.7)
35
+ yard (~> 0.9)
36
+ yard-readme (~> 0.5)
37
+ redcarpet (3.6.1)
38
+ reline (0.6.1)
39
+ io-console (~> 0.5)
40
+ rexml (3.4.1)
41
+ rouge (4.5.2)
42
+ stringio (3.1.7)
23
43
  strings (0.2.1)
24
44
  strings-ansi (~> 0.2)
25
45
  unicode-display_width (>= 1.5, < 3.0)
26
46
  unicode_utils (~> 1.4)
27
47
  strings-ansi (0.2.0)
28
48
  tty-color (0.6.0)
29
- tty-markdown (0.7.0)
49
+ tty-markdown (0.7.2)
30
50
  kramdown (>= 1.16.2, < 3.0)
31
51
  pastel (~> 0.8)
32
- rouge (~> 3.14)
52
+ rouge (>= 3.14, < 5.0)
33
53
  strings (~> 0.2.0)
34
54
  tty-color (~> 0.5)
35
55
  tty-screen (~> 0.8)
36
- tty-screen (0.8.1)
37
- unicode-display_width (2.0.0)
56
+ tty-screen (0.8.2)
57
+ unicode-display_width (2.6.0)
38
58
  unicode_utils (1.4.0)
39
- yard (0.9.26)
40
- yard-readme (0.3.0)
41
- yard (~> 0.9.26)
59
+ yard (0.9.37)
60
+ yard-readme (0.6.0)
42
61
 
43
62
  PLATFORMS
44
63
  ruby
45
64
  x86_64-darwin-18
46
65
 
47
66
  DEPENDENCIES
48
- bundler (~> 2.0)
49
- byebug
67
+ bundler (~> 2.5)
68
+ debug
50
69
  evolvable!
51
- readme_yard!
52
- yard
70
+ irb (>= 1.0)
71
+ readme_yard (>= 0.5)
53
72
 
54
73
  BUNDLED WITH
55
- 2.2.15
74
+ 2.6.8