petri_dish_lab 0.1.1 → 0.2.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/README.md +48 -81
- data/examples/lazy_dog/README.md +64 -0
- data/examples/{lazy_dog_example.rb → lazy_dog/lazy_dog_example.rb} +8 -8
- data/examples/lazy_dog/log.txt +194 -0
- data/examples/low_poly_reconstruction/README.md +28 -0
- data/examples/low_poly_reconstruction/input_convert.png +0 -0
- data/examples/low_poly_reconstruction/low_poly_reconstruction.rb +176 -0
- data/examples/low_poly_reconstruction/montage.png +0 -0
- data/examples/low_poly_reconstruction/out/gen-0000.png +0 -0
- data/examples/low_poly_reconstruction/out/gen-2473.png +0 -0
- data/examples/low_poly_reconstruction/out/log.txt +2650 -0
- data/examples/low_poly_reconstruction/result.png +0 -0
- data/examples/low_poly_reconstruction/ruby.svg +948 -0
- data/examples/traveling_salesperson/README.md +39 -0
- data/examples/traveling_salesperson/best_member.csv +12 -0
- data/examples/traveling_salesperson/log.txt +113 -0
- data/examples/traveling_salesperson/plot.txt +48 -0
- data/examples/{salesperson_example.rb → traveling_salesperson/salesperson_example.rb} +1 -2
- data/lib/petri_dish/configuration.rb +11 -17
- data/lib/petri_dish/member.rb +2 -2
- data/lib/petri_dish/version.rb +1 -1
- data/lib/petri_dish/world.rb +4 -4
- metadata +19 -5
- data/.DS_Store +0 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
### Traveling Salesperson
|
2
|
+
|
3
|
+
```
|
4
|
+
┌──────────────────────────────────────────────────┐
|
5
|
+
5 │ ':.. │
|
6
|
+
│ '. '. │
|
7
|
+
│ : ''. │
|
8
|
+
│ '. ''. .:│
|
9
|
+
│ '. '.. .':' │
|
10
|
+
│ : '. ..' .' │
|
11
|
+
│ .'' ''''''''''''''''' : │
|
12
|
+
y │ .'' .' │
|
13
|
+
│ ..' .' │
|
14
|
+
│ ..' : │
|
15
|
+
│ .' : │
|
16
|
+
│.'' : │
|
17
|
+
│'''... ....''''' │
|
18
|
+
│ '''... ....'''' │
|
19
|
+
0 │ ''.......'''' │
|
20
|
+
└──────────────────────────────────────────────────┘
|
21
|
+
2 8
|
22
|
+
x
|
23
|
+
```
|
24
|
+
|
25
|
+
The `salesperson_example.rb` is an example of using the Petri Dish library to solve a more complex problem: The Traveling Salesperson Problem. In this problem, a salesperson needs to visit a number of cities, each at a different location, and return to the starting city. The goal is to find the shortest possible route that visits each city exactly once.
|
26
|
+
|
27
|
+
In this example, each city is represented as a `Gene` object with `x` and `y` coordinates. The genetic material is the array of all possible `x` and `y` coordinates. The fitness function is defined as the inverse of the total distance of the route, which means that shorter routes will have higher fitness.
|
28
|
+
|
29
|
+
The parents for crossover are selected using a tournament selection function which picks the best 2 out of a random sample of 20% of the population. Crossover is performed using an ordered crossover method which maintains the relative order of the genes from both parents.
|
30
|
+
|
31
|
+
Mutation is implemented as a chance to swap two genes in a member. The mutation rate is set to 0.01, which means that on average, 1% of the genes in a member will mutate in each generation.
|
32
|
+
|
33
|
+
The evolutionary process runs for a fixed number of generations, and the highest fitness member in each generation is saved to a CSV file.
|
34
|
+
|
35
|
+
To run the example, simply execute the following command in your terminal:
|
36
|
+
|
37
|
+
```bash
|
38
|
+
bundle exec ruby examples/salesperson_example.rb
|
39
|
+
```
|
@@ -0,0 +1,113 @@
|
|
1
|
+
I, [2023-07-30T01:06:10.433797 #1628] INFO -- : Run started.
|
2
|
+
I, [2023-07-30T01:06:10.433859 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":0,"highest_fitness":0,"elapsed_time":0.0,"last_fitness_increase":0}
|
3
|
+
I, [2023-07-30T01:06:10.434743 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":0,"highest_fitness":0.026192472204508554,"elapsed_time":0.0,"last_fitness_increase":0}
|
4
|
+
I, [2023-07-30T01:06:10.435591 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":0,"highest_fitness":0.02778990343650704,"elapsed_time":0.0,"last_fitness_increase":0}
|
5
|
+
I, [2023-07-30T01:06:10.436133 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":0,"highest_fitness":0.035366588382994765,"elapsed_time":0.0,"last_fitness_increase":0}
|
6
|
+
I, [2023-07-30T01:06:10.436581 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":0,"highest_fitness":0.03893619953079128,"elapsed_time":0.0,"last_fitness_increase":0}
|
7
|
+
I, [2023-07-30T01:06:10.438169 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":1,"highest_fitness":0.03893619953079128,"elapsed_time":0.0,"last_fitness_increase":0}
|
8
|
+
I, [2023-07-30T01:06:10.438667 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":1,"highest_fitness":0.04111127926828182,"elapsed_time":0.0,"last_fitness_increase":1}
|
9
|
+
I, [2023-07-30T01:06:10.439451 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":1,"highest_fitness":0.04299996512447041,"elapsed_time":0.01,"last_fitness_increase":1}
|
10
|
+
I, [2023-07-30T01:06:10.440999 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":2,"highest_fitness":0.04299996512447041,"elapsed_time":0.01,"last_fitness_increase":1}
|
11
|
+
I, [2023-07-30T01:06:10.441413 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":2,"highest_fitness":0.0443516004204991,"elapsed_time":0.01,"last_fitness_increase":2}
|
12
|
+
I, [2023-07-30T01:06:10.442849 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":3,"highest_fitness":0.0443516004204991,"elapsed_time":0.01,"last_fitness_increase":2}
|
13
|
+
I, [2023-07-30T01:06:10.444416 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":4,"highest_fitness":0.0443516004204991,"elapsed_time":0.01,"last_fitness_increase":2}
|
14
|
+
I, [2023-07-30T01:06:10.445868 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":5,"highest_fitness":0.0443516004204991,"elapsed_time":0.01,"last_fitness_increase":2}
|
15
|
+
I, [2023-07-30T01:06:10.447362 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":6,"highest_fitness":0.0443516004204991,"elapsed_time":0.01,"last_fitness_increase":2}
|
16
|
+
I, [2023-07-30T01:06:10.449076 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":7,"highest_fitness":0.0443516004204991,"elapsed_time":0.02,"last_fitness_increase":2}
|
17
|
+
I, [2023-07-30T01:06:10.450435 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":8,"highest_fitness":0.0443516004204991,"elapsed_time":0.02,"last_fitness_increase":2}
|
18
|
+
I, [2023-07-30T01:06:10.451777 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":9,"highest_fitness":0.0443516004204991,"elapsed_time":0.02,"last_fitness_increase":2}
|
19
|
+
I, [2023-07-30T01:06:10.453078 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":10,"highest_fitness":0.0443516004204991,"elapsed_time":0.02,"last_fitness_increase":2}
|
20
|
+
I, [2023-07-30T01:06:10.454696 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":11,"highest_fitness":0.0443516004204991,"elapsed_time":0.02,"last_fitness_increase":2}
|
21
|
+
I, [2023-07-30T01:06:10.456061 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":12,"highest_fitness":0.0443516004204991,"elapsed_time":0.02,"last_fitness_increase":2}
|
22
|
+
I, [2023-07-30T01:06:10.457458 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":13,"highest_fitness":0.0443516004204991,"elapsed_time":0.02,"last_fitness_increase":2}
|
23
|
+
I, [2023-07-30T01:06:10.460777 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":14,"highest_fitness":0.0443516004204991,"elapsed_time":0.03,"last_fitness_increase":2}
|
24
|
+
I, [2023-07-30T01:06:10.462142 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":15,"highest_fitness":0.0443516004204991,"elapsed_time":0.03,"last_fitness_increase":2}
|
25
|
+
I, [2023-07-30T01:06:10.463566 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":16,"highest_fitness":0.0443516004204991,"elapsed_time":0.03,"last_fitness_increase":2}
|
26
|
+
I, [2023-07-30T01:06:10.464916 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":17,"highest_fitness":0.0443516004204991,"elapsed_time":0.03,"last_fitness_increase":2}
|
27
|
+
I, [2023-07-30T01:06:10.466407 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":18,"highest_fitness":0.0443516004204991,"elapsed_time":0.03,"last_fitness_increase":2}
|
28
|
+
I, [2023-07-30T01:06:10.468237 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":19,"highest_fitness":0.0443516004204991,"elapsed_time":0.03,"last_fitness_increase":2}
|
29
|
+
I, [2023-07-30T01:06:10.469592 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":20,"highest_fitness":0.0443516004204991,"elapsed_time":0.04,"last_fitness_increase":2}
|
30
|
+
I, [2023-07-30T01:06:10.470891 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":21,"highest_fitness":0.0443516004204991,"elapsed_time":0.04,"last_fitness_increase":2}
|
31
|
+
I, [2023-07-30T01:06:10.472237 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":22,"highest_fitness":0.0443516004204991,"elapsed_time":0.04,"last_fitness_increase":2}
|
32
|
+
I, [2023-07-30T01:06:10.473930 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":22,"highest_fitness":0.04542697529438156,"elapsed_time":0.04,"last_fitness_increase":22}
|
33
|
+
I, [2023-07-30T01:06:10.474195 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":23,"highest_fitness":0.04542697529438156,"elapsed_time":0.04,"last_fitness_increase":22}
|
34
|
+
I, [2023-07-30T01:06:10.475629 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":24,"highest_fitness":0.04542697529438156,"elapsed_time":0.04,"last_fitness_increase":22}
|
35
|
+
I, [2023-07-30T01:06:10.476980 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":25,"highest_fitness":0.04542697529438156,"elapsed_time":0.04,"last_fitness_increase":22}
|
36
|
+
I, [2023-07-30T01:06:10.478363 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":26,"highest_fitness":0.04542697529438156,"elapsed_time":0.04,"last_fitness_increase":22}
|
37
|
+
I, [2023-07-30T01:06:10.480170 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":27,"highest_fitness":0.04542697529438156,"elapsed_time":0.05,"last_fitness_increase":22}
|
38
|
+
I, [2023-07-30T01:06:10.481465 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":28,"highest_fitness":0.04542697529438156,"elapsed_time":0.05,"last_fitness_increase":22}
|
39
|
+
I, [2023-07-30T01:06:10.482030 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":28,"highest_fitness":0.04692405168534187,"elapsed_time":0.05,"last_fitness_increase":28}
|
40
|
+
I, [2023-07-30T01:06:10.483084 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":29,"highest_fitness":0.04692405168534187,"elapsed_time":0.05,"last_fitness_increase":28}
|
41
|
+
I, [2023-07-30T01:06:10.484438 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":30,"highest_fitness":0.04692405168534187,"elapsed_time":0.05,"last_fitness_increase":28}
|
42
|
+
I, [2023-07-30T01:06:10.487536 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":31,"highest_fitness":0.04692405168534187,"elapsed_time":0.05,"last_fitness_increase":28}
|
43
|
+
I, [2023-07-30T01:06:10.489518 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":32,"highest_fitness":0.04692405168534187,"elapsed_time":0.06,"last_fitness_increase":28}
|
44
|
+
I, [2023-07-30T01:06:10.490901 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":33,"highest_fitness":0.04692405168534187,"elapsed_time":0.06,"last_fitness_increase":28}
|
45
|
+
I, [2023-07-30T01:06:10.492167 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":34,"highest_fitness":0.04692405168534187,"elapsed_time":0.06,"last_fitness_increase":28}
|
46
|
+
I, [2023-07-30T01:06:10.493387 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":35,"highest_fitness":0.04692405168534187,"elapsed_time":0.06,"last_fitness_increase":28}
|
47
|
+
I, [2023-07-30T01:06:10.495101 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":36,"highest_fitness":0.04692405168534187,"elapsed_time":0.06,"last_fitness_increase":28}
|
48
|
+
I, [2023-07-30T01:06:10.496439 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":37,"highest_fitness":0.04692405168534187,"elapsed_time":0.06,"last_fitness_increase":28}
|
49
|
+
I, [2023-07-30T01:06:10.497752 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":38,"highest_fitness":0.04692405168534187,"elapsed_time":0.06,"last_fitness_increase":28}
|
50
|
+
I, [2023-07-30T01:06:10.499035 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":39,"highest_fitness":0.04692405168534187,"elapsed_time":0.07,"last_fitness_increase":28}
|
51
|
+
I, [2023-07-30T01:06:10.500746 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":40,"highest_fitness":0.04692405168534187,"elapsed_time":0.07,"last_fitness_increase":28}
|
52
|
+
I, [2023-07-30T01:06:10.502030 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":41,"highest_fitness":0.04692405168534187,"elapsed_time":0.07,"last_fitness_increase":28}
|
53
|
+
I, [2023-07-30T01:06:10.503308 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":42,"highest_fitness":0.04692405168534187,"elapsed_time":0.07,"last_fitness_increase":28}
|
54
|
+
I, [2023-07-30T01:06:10.504597 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":43,"highest_fitness":0.04692405168534187,"elapsed_time":0.07,"last_fitness_increase":28}
|
55
|
+
I, [2023-07-30T01:06:10.505871 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":44,"highest_fitness":0.04692405168534187,"elapsed_time":0.07,"last_fitness_increase":28}
|
56
|
+
I, [2023-07-30T01:06:10.507678 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":45,"highest_fitness":0.04692405168534187,"elapsed_time":0.07,"last_fitness_increase":28}
|
57
|
+
I, [2023-07-30T01:06:10.509000 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":46,"highest_fitness":0.04692405168534187,"elapsed_time":0.08,"last_fitness_increase":28}
|
58
|
+
I, [2023-07-30T01:06:10.510271 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":47,"highest_fitness":0.04692405168534187,"elapsed_time":0.08,"last_fitness_increase":28}
|
59
|
+
I, [2023-07-30T01:06:10.511498 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":48,"highest_fitness":0.04692405168534187,"elapsed_time":0.08,"last_fitness_increase":28}
|
60
|
+
I, [2023-07-30T01:06:10.513264 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":49,"highest_fitness":0.04692405168534187,"elapsed_time":0.08,"last_fitness_increase":28}
|
61
|
+
I, [2023-07-30T01:06:10.514548 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":50,"highest_fitness":0.04692405168534187,"elapsed_time":0.08,"last_fitness_increase":28}
|
62
|
+
I, [2023-07-30T01:06:10.515794 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":51,"highest_fitness":0.04692405168534187,"elapsed_time":0.08,"last_fitness_increase":28}
|
63
|
+
I, [2023-07-30T01:06:10.517071 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":52,"highest_fitness":0.04692405168534187,"elapsed_time":0.08,"last_fitness_increase":28}
|
64
|
+
I, [2023-07-30T01:06:10.518825 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":53,"highest_fitness":0.04692405168534187,"elapsed_time":0.08,"last_fitness_increase":28}
|
65
|
+
I, [2023-07-30T01:06:10.520160 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":54,"highest_fitness":0.04692405168534187,"elapsed_time":0.09,"last_fitness_increase":28}
|
66
|
+
I, [2023-07-30T01:06:10.521449 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":55,"highest_fitness":0.04692405168534187,"elapsed_time":0.09,"last_fitness_increase":28}
|
67
|
+
I, [2023-07-30T01:06:10.522202 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":55,"highest_fitness":0.048129485846943695,"elapsed_time":0.09,"last_fitness_increase":55}
|
68
|
+
I, [2023-07-30T01:06:10.522983 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":56,"highest_fitness":0.048129485846943695,"elapsed_time":0.09,"last_fitness_increase":55}
|
69
|
+
I, [2023-07-30T01:06:10.524772 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":57,"highest_fitness":0.048129485846943695,"elapsed_time":0.09,"last_fitness_increase":55}
|
70
|
+
I, [2023-07-30T01:06:10.526082 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":58,"highest_fitness":0.048129485846943695,"elapsed_time":0.09,"last_fitness_increase":55}
|
71
|
+
I, [2023-07-30T01:06:10.527380 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":59,"highest_fitness":0.048129485846943695,"elapsed_time":0.09,"last_fitness_increase":55}
|
72
|
+
I, [2023-07-30T01:06:10.529311 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":60,"highest_fitness":0.048129485846943695,"elapsed_time":0.1,"last_fitness_increase":55}
|
73
|
+
I, [2023-07-30T01:06:10.532591 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":61,"highest_fitness":0.048129485846943695,"elapsed_time":0.1,"last_fitness_increase":55}
|
74
|
+
I, [2023-07-30T01:06:10.533905 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":62,"highest_fitness":0.048129485846943695,"elapsed_time":0.1,"last_fitness_increase":55}
|
75
|
+
I, [2023-07-30T01:06:10.535166 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":63,"highest_fitness":0.048129485846943695,"elapsed_time":0.1,"last_fitness_increase":55}
|
76
|
+
I, [2023-07-30T01:06:10.536426 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":64,"highest_fitness":0.048129485846943695,"elapsed_time":0.1,"last_fitness_increase":55}
|
77
|
+
I, [2023-07-30T01:06:10.537711 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":65,"highest_fitness":0.048129485846943695,"elapsed_time":0.1,"last_fitness_increase":55}
|
78
|
+
I, [2023-07-30T01:06:10.539503 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":66,"highest_fitness":0.048129485846943695,"elapsed_time":0.11,"last_fitness_increase":55}
|
79
|
+
I, [2023-07-30T01:06:10.540812 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":67,"highest_fitness":0.048129485846943695,"elapsed_time":0.11,"last_fitness_increase":55}
|
80
|
+
I, [2023-07-30T01:06:10.542112 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":68,"highest_fitness":0.048129485846943695,"elapsed_time":0.11,"last_fitness_increase":55}
|
81
|
+
I, [2023-07-30T01:06:10.543375 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":69,"highest_fitness":0.048129485846943695,"elapsed_time":0.11,"last_fitness_increase":55}
|
82
|
+
I, [2023-07-30T01:06:10.545222 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":70,"highest_fitness":0.048129485846943695,"elapsed_time":0.11,"last_fitness_increase":55}
|
83
|
+
I, [2023-07-30T01:06:10.546524 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":71,"highest_fitness":0.048129485846943695,"elapsed_time":0.11,"last_fitness_increase":55}
|
84
|
+
I, [2023-07-30T01:06:10.547945 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":72,"highest_fitness":0.048129485846943695,"elapsed_time":0.11,"last_fitness_increase":55}
|
85
|
+
I, [2023-07-30T01:06:10.549231 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":73,"highest_fitness":0.048129485846943695,"elapsed_time":0.12,"last_fitness_increase":55}
|
86
|
+
I, [2023-07-30T01:06:10.551060 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":74,"highest_fitness":0.048129485846943695,"elapsed_time":0.12,"last_fitness_increase":55}
|
87
|
+
I, [2023-07-30T01:06:10.552384 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":75,"highest_fitness":0.048129485846943695,"elapsed_time":0.12,"last_fitness_increase":55}
|
88
|
+
I, [2023-07-30T01:06:10.553697 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":76,"highest_fitness":0.048129485846943695,"elapsed_time":0.12,"last_fitness_increase":55}
|
89
|
+
I, [2023-07-30T01:06:10.554939 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":77,"highest_fitness":0.048129485846943695,"elapsed_time":0.12,"last_fitness_increase":55}
|
90
|
+
I, [2023-07-30T01:06:10.556247 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":78,"highest_fitness":0.048129485846943695,"elapsed_time":0.12,"last_fitness_increase":55}
|
91
|
+
I, [2023-07-30T01:06:10.558254 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":79,"highest_fitness":0.048129485846943695,"elapsed_time":0.12,"last_fitness_increase":55}
|
92
|
+
I, [2023-07-30T01:06:10.559528 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":80,"highest_fitness":0.048129485846943695,"elapsed_time":0.13,"last_fitness_increase":55}
|
93
|
+
I, [2023-07-30T01:06:10.560751 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":81,"highest_fitness":0.048129485846943695,"elapsed_time":0.13,"last_fitness_increase":55}
|
94
|
+
I, [2023-07-30T01:06:10.562000 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":82,"highest_fitness":0.048129485846943695,"elapsed_time":0.13,"last_fitness_increase":55}
|
95
|
+
I, [2023-07-30T01:06:10.563843 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":83,"highest_fitness":0.048129485846943695,"elapsed_time":0.13,"last_fitness_increase":55}
|
96
|
+
I, [2023-07-30T01:06:10.565232 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":83,"highest_fitness":0.050146554799431704,"elapsed_time":0.13,"last_fitness_increase":83}
|
97
|
+
I, [2023-07-30T01:06:10.565453 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":84,"highest_fitness":0.050146554799431704,"elapsed_time":0.13,"last_fitness_increase":83}
|
98
|
+
I, [2023-07-30T01:06:10.566755 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":85,"highest_fitness":0.050146554799431704,"elapsed_time":0.13,"last_fitness_increase":83}
|
99
|
+
I, [2023-07-30T01:06:10.568071 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":86,"highest_fitness":0.050146554799431704,"elapsed_time":0.13,"last_fitness_increase":83}
|
100
|
+
I, [2023-07-30T01:06:10.569947 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":87,"highest_fitness":0.050146554799431704,"elapsed_time":0.14,"last_fitness_increase":83}
|
101
|
+
I, [2023-07-30T01:06:10.571269 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":88,"highest_fitness":0.050146554799431704,"elapsed_time":0.14,"last_fitness_increase":83}
|
102
|
+
I, [2023-07-30T01:06:10.572666 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":89,"highest_fitness":0.050146554799431704,"elapsed_time":0.14,"last_fitness_increase":83}
|
103
|
+
I, [2023-07-30T01:06:10.573913 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":90,"highest_fitness":0.050146554799431704,"elapsed_time":0.14,"last_fitness_increase":83}
|
104
|
+
I, [2023-07-30T01:06:10.575951 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":91,"highest_fitness":0.050146554799431704,"elapsed_time":0.14,"last_fitness_increase":83}
|
105
|
+
I, [2023-07-30T01:06:10.577369 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":92,"highest_fitness":0.050146554799431704,"elapsed_time":0.14,"last_fitness_increase":83}
|
106
|
+
I, [2023-07-30T01:06:10.578719 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":93,"highest_fitness":0.050146554799431704,"elapsed_time":0.14,"last_fitness_increase":83}
|
107
|
+
I, [2023-07-30T01:06:10.581031 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":94,"highest_fitness":0.050146554799431704,"elapsed_time":0.15,"last_fitness_increase":83}
|
108
|
+
I, [2023-07-30T01:06:10.585206 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":95,"highest_fitness":0.050146554799431704,"elapsed_time":0.15,"last_fitness_increase":83}
|
109
|
+
I, [2023-07-30T01:06:10.586498 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":96,"highest_fitness":0.050146554799431704,"elapsed_time":0.15,"last_fitness_increase":83}
|
110
|
+
I, [2023-07-30T01:06:10.588071 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":97,"highest_fitness":0.050146554799431704,"elapsed_time":0.15,"last_fitness_increase":83}
|
111
|
+
I, [2023-07-30T01:06:10.589300 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":98,"highest_fitness":0.050146554799431704,"elapsed_time":0.16,"last_fitness_increase":83}
|
112
|
+
I, [2023-07-30T01:06:10.590610 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":99,"highest_fitness":0.050146554799431704,"elapsed_time":0.16,"last_fitness_increase":83}
|
113
|
+
I, [2023-07-30T01:06:10.591913 #1628] INFO -- : {"id":"44a752f9-2372-4579-b29b-1aafd1d6cac0","generation_count":100,"highest_fitness":0.050146554799431704,"elapsed_time":0.16,"last_fitness_increase":83}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
2
|
+
5 │ :'. │
|
3
|
+
│ '.''. │
|
4
|
+
│ '. '.. │
|
5
|
+
│ : '.. │
|
6
|
+
│ '. '. │
|
7
|
+
│ '. ''. │
|
8
|
+
│ '. ''. │
|
9
|
+
│ '. '.. │
|
10
|
+
│ : '. │
|
11
|
+
│ '. ''. .:│
|
12
|
+
│ '. ''. .':' │
|
13
|
+
│ : '.. ..' .' │
|
14
|
+
│ '. '.. ..' : │
|
15
|
+
│ : '. .' .' │
|
16
|
+
│ '. ''. .'' .' │
|
17
|
+
│ '. ''. .'' .' │
|
18
|
+
│ : '.. ..' .' │
|
19
|
+
│ '. '. ..' : │
|
20
|
+
│ .'' ''''''''''''''''''''''''''''''''''''''''''''''''''' .' │
|
21
|
+
│ .'' .' │
|
22
|
+
│ ..' : │
|
23
|
+
│ ..' .' │
|
24
|
+
y │ .' : │
|
25
|
+
│ .'' .' │
|
26
|
+
│ .'' .' │
|
27
|
+
│ ..' : │
|
28
|
+
│ ..' .' │
|
29
|
+
│ .' : │
|
30
|
+
│ .'' : │
|
31
|
+
│ ..' : │
|
32
|
+
│ ..' : │
|
33
|
+
│ .' : │
|
34
|
+
│ .'' : │
|
35
|
+
│ .'' : │
|
36
|
+
│ ..' : │
|
37
|
+
│..' : │
|
38
|
+
│'''... ....''''' │
|
39
|
+
│ '''... ....'''' │
|
40
|
+
│ ''... ....'''' │
|
41
|
+
│ '''... ....''''' │
|
42
|
+
│ '''.. ....'''' │
|
43
|
+
│ '''... ....'''' │
|
44
|
+
│ '''.. ....''''' │
|
45
|
+
│ '''... ....'''' │
|
46
|
+
0 │ '''.......'''' │
|
47
|
+
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
48
|
+
2 8
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# require "petri_dish" # Uncomment this line and comment/remove the line below if you're using Petri Dish as a gem
|
2
|
-
require_relative "
|
2
|
+
require_relative "../../lib/petri_dish"
|
3
3
|
require "csv"
|
4
4
|
|
5
5
|
XLIMIT = 10
|
@@ -118,7 +118,6 @@ configuration = PetriDish::Configuration.configure do |config|
|
|
118
118
|
config.population_size = 100
|
119
119
|
config.mutation_rate = 0.01
|
120
120
|
config.genetic_material = GENETIC_MATERIAL
|
121
|
-
config.target_genes = random_uniq_city_gene_generation
|
122
121
|
config.mutation_function = swap_mutation_function(config)
|
123
122
|
config.fitness_function = fitness_function
|
124
123
|
config.parents_selection_function = twenty_percent_tournament(config)
|
@@ -5,7 +5,6 @@ module PetriDish
|
|
5
5
|
:mutation_rate,
|
6
6
|
:genetic_material,
|
7
7
|
:elitism_rate,
|
8
|
-
:target_genes,
|
9
8
|
:max_generations,
|
10
9
|
:parents_selection_function,
|
11
10
|
:crossover_function,
|
@@ -14,7 +13,7 @@ module PetriDish
|
|
14
13
|
:highest_fitness_callback,
|
15
14
|
:max_generation_reached_callback,
|
16
15
|
:end_condition_function,
|
17
|
-
:
|
16
|
+
:generation_start_callback,
|
18
17
|
:end_condition_reached_callback
|
19
18
|
|
20
19
|
def self.configure
|
@@ -30,7 +29,6 @@ module PetriDish
|
|
30
29
|
@mutation_rate = default_mutation_rate
|
31
30
|
@elitism_rate = default_elitism_rate
|
32
31
|
@genetic_material = default_genetic_material
|
33
|
-
@target_genes = default_target_genes
|
34
32
|
@fitness_function = default_fitness_function
|
35
33
|
@parents_selection_function = default_parents_selection_function
|
36
34
|
@crossover_function = default_crossover_function
|
@@ -38,7 +36,7 @@ module PetriDish
|
|
38
36
|
@highest_fitness_callback = default_highest_fitness_callback
|
39
37
|
@end_condition_function = default_end_condition_function
|
40
38
|
@max_generation_reached_callback = default_max_generation_reached_callback
|
41
|
-
@
|
39
|
+
@generation_start_callback = default_generation_start_callback
|
42
40
|
@end_condition_reached_callback = default_end_condition_reached_callback
|
43
41
|
end
|
44
42
|
|
@@ -49,16 +47,15 @@ module PetriDish
|
|
49
47
|
raise ArgumentError, "mutation_rate must be between 0 and 1" unless mutation_rate >= 0 && mutation_rate <= 1
|
50
48
|
raise ArgumentError, "elitism_rate must be between 0 and 1" unless elitism_rate >= 0 && elitism_rate <= 1
|
51
49
|
raise ArgumentError, "genetic_material must be an Array" unless genetic_material.is_a?(Array)
|
52
|
-
raise ArgumentError, "target_genes must be an Array" unless target_genes.is_a?(Array)
|
53
50
|
raise ArgumentError, "fitness_function must respond to :call" unless fitness_function.respond_to?(:call)
|
54
51
|
raise ArgumentError, "parents_selection_function must respond to :call" unless parents_selection_function.respond_to?(:call)
|
55
52
|
raise ArgumentError, "crossover_function must respond to :call" unless crossover_function.respond_to?(:call)
|
56
53
|
raise ArgumentError, "mutation_function must respond to :call" unless mutation_function.respond_to?(:call)
|
57
54
|
raise ArgumentError, "end_condition_function must respond to :call" unless end_condition_function.respond_to?(:call)
|
58
|
-
raise ArgumentError, "highest_fitness_callback must respond to :call" unless highest_fitness_callback.respond_to?(:call)
|
59
|
-
raise ArgumentError, "max_generation_reached_callback must respond to :call" unless max_generation_reached_callback.respond_to?(:call)
|
60
|
-
raise ArgumentError, "
|
61
|
-
raise ArgumentError, "end_condition_reached_callback must respond to :call" unless end_condition_reached_callback.respond_to?(:call)
|
55
|
+
raise ArgumentError, "highest_fitness_callback must respond to :call" unless highest_fitness_callback.nil? || highest_fitness_callback.respond_to?(:call)
|
56
|
+
raise ArgumentError, "max_generation_reached_callback must respond to :call" unless max_generation_reached_callback.nil? || max_generation_reached_callback.respond_to?(:call)
|
57
|
+
raise ArgumentError, "generation_start_callback must respond to :call" unless generation_start_callback.nil? || generation_start_callback.respond_to?(:call)
|
58
|
+
raise ArgumentError, "end_condition_reached_callback must respond to :call" unless end_condition_reached_callback.nil? || end_condition_reached_callback.respond_to?(:call)
|
62
59
|
end
|
63
60
|
|
64
61
|
def reset!
|
@@ -68,7 +65,6 @@ module PetriDish
|
|
68
65
|
@mutation_rate = default_mutation_rate
|
69
66
|
@elitism_rate = default_elitism_rate
|
70
67
|
@genetic_material = default_genetic_material
|
71
|
-
@target_genes = default_target_genes
|
72
68
|
@fitness_function = default_fitness_function
|
73
69
|
@parents_selection_function = default_parents_selection_function
|
74
70
|
@crossover_function = default_crossover_function
|
@@ -76,7 +72,7 @@ module PetriDish
|
|
76
72
|
@end_condition_function = default_end_condition_function
|
77
73
|
@highest_fitness_callback = default_highest_fitness_callback
|
78
74
|
@max_generation_reached_callback = default_max_generation_reached_callback
|
79
|
-
@
|
75
|
+
@generation_start_callback = default_generation_start_callback
|
80
76
|
@end_condition_reached_callback = default_end_condition_reached_callback
|
81
77
|
end
|
82
78
|
|
@@ -98,8 +94,6 @@ module PetriDish
|
|
98
94
|
|
99
95
|
def default_genetic_material = []
|
100
96
|
|
101
|
-
def default_target_genes = nil
|
102
|
-
|
103
97
|
def default_fitness_function = ->(_member) { raise ArgumentError, "fitness_function must be set" }
|
104
98
|
|
105
99
|
def default_parents_selection_function = ->(_members) { raise ArgumentError, "parents_selection_function must be set" }
|
@@ -110,16 +104,16 @@ module PetriDish
|
|
110
104
|
|
111
105
|
def default_end_condition_function = ->(_member) { false }
|
112
106
|
|
113
|
-
def default_highest_fitness_callback =
|
107
|
+
def default_highest_fitness_callback = nil
|
114
108
|
|
115
109
|
# TODO: We might want to consider whether we really want to use `exit` as a
|
116
110
|
# default callback. This will stop the entire Ruby process, which could be
|
117
111
|
# surprising behavior if the user of the library doesn't override these
|
118
112
|
# callbacks.
|
119
|
-
def default_max_generation_reached_callback =
|
113
|
+
def default_max_generation_reached_callback = nil
|
120
114
|
|
121
|
-
def
|
115
|
+
def default_generation_start_callback = nil
|
122
116
|
|
123
|
-
def default_end_condition_reached_callback =
|
117
|
+
def default_end_condition_reached_callback = nil
|
124
118
|
end
|
125
119
|
end
|
data/lib/petri_dish/member.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module PetriDish
|
2
2
|
class Member
|
3
|
-
attr_reader :genes
|
3
|
+
attr_reader :genes
|
4
4
|
|
5
5
|
def initialize(genes:, fitness_function:)
|
6
6
|
@fitness_function = fitness_function
|
@@ -8,7 +8,7 @@ module PetriDish
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def fitness
|
11
|
-
@fitness ||= fitness_function.call(self)
|
11
|
+
@fitness ||= @fitness_function.call(self)
|
12
12
|
end
|
13
13
|
|
14
14
|
def to_s
|
data/lib/petri_dish/version.rb
CHANGED
data/lib/petri_dish/world.rb
CHANGED
@@ -20,7 +20,7 @@ module PetriDish
|
|
20
20
|
configuration: Configuration.new,
|
21
21
|
metadata: Metadata.new
|
22
22
|
)
|
23
|
-
configuration.
|
23
|
+
configuration.generation_start_callback&.call(metadata.generation_count)
|
24
24
|
|
25
25
|
end_condition_reached = false
|
26
26
|
max_generation_reached = false
|
@@ -33,7 +33,7 @@ module PetriDish
|
|
33
33
|
configuration.logger.info(metadata.to_json)
|
34
34
|
|
35
35
|
if metadata.generation_count >= configuration.max_generations
|
36
|
-
configuration.max_generation_reached_callback
|
36
|
+
configuration.max_generation_reached_callback&.call
|
37
37
|
max_generation_reached = true
|
38
38
|
end
|
39
39
|
|
@@ -46,13 +46,13 @@ module PetriDish
|
|
46
46
|
configuration.mutation_function.call(child_member).tap do |mutated_child|
|
47
47
|
if metadata.highest_fitness < mutated_child.fitness
|
48
48
|
metadata.set_highest_fitness(mutated_child.fitness)
|
49
|
-
configuration.highest_fitness_callback
|
49
|
+
configuration.highest_fitness_callback&.call(mutated_child)
|
50
50
|
|
51
51
|
configuration.logger.info(metadata.to_json)
|
52
52
|
end
|
53
53
|
|
54
54
|
if configuration.end_condition_function.call(mutated_child)
|
55
|
-
configuration.end_condition_reached_callback
|
55
|
+
configuration.end_condition_reached_callback&.call(mutated_child)
|
56
56
|
end_condition_reached = true
|
57
57
|
end
|
58
58
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: petri_dish_lab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Countz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-07-
|
11
|
+
date: 2023-07-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -74,7 +74,6 @@ executables: []
|
|
74
74
|
extensions: []
|
75
75
|
extra_rdoc_files: []
|
76
76
|
files:
|
77
|
-
- ".DS_Store"
|
78
77
|
- ".rspec"
|
79
78
|
- ".standard.yml"
|
80
79
|
- CHANGELOG.md
|
@@ -82,8 +81,23 @@ files:
|
|
82
81
|
- LICENSE.txt
|
83
82
|
- README.md
|
84
83
|
- Rakefile
|
85
|
-
- examples/
|
86
|
-
- examples/
|
84
|
+
- examples/lazy_dog/README.md
|
85
|
+
- examples/lazy_dog/lazy_dog_example.rb
|
86
|
+
- examples/lazy_dog/log.txt
|
87
|
+
- examples/low_poly_reconstruction/README.md
|
88
|
+
- examples/low_poly_reconstruction/input_convert.png
|
89
|
+
- examples/low_poly_reconstruction/low_poly_reconstruction.rb
|
90
|
+
- examples/low_poly_reconstruction/montage.png
|
91
|
+
- examples/low_poly_reconstruction/out/gen-0000.png
|
92
|
+
- examples/low_poly_reconstruction/out/gen-2473.png
|
93
|
+
- examples/low_poly_reconstruction/out/log.txt
|
94
|
+
- examples/low_poly_reconstruction/result.png
|
95
|
+
- examples/low_poly_reconstruction/ruby.svg
|
96
|
+
- examples/traveling_salesperson/README.md
|
97
|
+
- examples/traveling_salesperson/best_member.csv
|
98
|
+
- examples/traveling_salesperson/log.txt
|
99
|
+
- examples/traveling_salesperson/plot.txt
|
100
|
+
- examples/traveling_salesperson/salesperson_example.rb
|
87
101
|
- lib/petri_dish.rb
|
88
102
|
- lib/petri_dish/configuration.rb
|
89
103
|
- lib/petri_dish/member.rb
|
data/.DS_Store
DELETED
Binary file
|