evolvable 1.2.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 +24 -0
  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 +124 -25
  59. data/lib/evolvable/gene_cluster.rb +106 -0
  60. data/lib/evolvable/gene_combination.rb +57 -16
  61. data/lib/evolvable/gene_space.rb +111 -0
  62. data/lib/evolvable/genome.rb +32 -4
  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 +268 -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: '068f9c6690af16e24cb522c25a9a33963bff2f1757dca841858a4baff1f2b777'
4
- data.tar.gz: 5d4fbe538753cb309042cf7cec6ded7c3e10d7bace1b8a1d495698be5225114d
3
+ metadata.gz: e531567e2b38d0fa358f879d8b7e12c7c8ebf1d24d24349eb69cc59da3f3205a
4
+ data.tar.gz: 61f581ea11632e5619473e1f222c960db947a8a8efa14cbe455f768274cab2a8
5
5
  SHA512:
6
- metadata.gz: e49437b455e04a05324091220b215cc99e69576adcd4c8181495cb7ba83d89ed43d0a5743ba3f9264940ea547e2e48790306d3eb03e967a0b3b7f8433eb16479
7
- data.tar.gz: a2e2ff86d7c325e718e53ae6edf24665e23ea908d3cd3568cedcd643b473c0d4fa8027d54d7d0c3ae25ee1a1218bedb648440a292c2ca28959bfeed07dfdf316
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,3 +1,27 @@
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
+
1
25
  ## 1.2.0 - 2022-1-22
2
26
 
3
27
  * Make it easier to dump and load genomes and use custom serializers. [69afd7c](https://github.com/mattruzicka/evolvable/commit/69afd7c957cbf89cc03b4f3f0ba967bf571c34c5)
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