There have been surprisingly few attempts at analysing rules holistically, independent of any specific linear-growth or undefined-growth patterns. The perceived explosiveness, or growth characteristics, of a given rule has so far been qualitative. Most rules have only been analysed individually, either via apgsearch or many other search possibilities, leading to very specific results that cannot be extrapolated clearly to compare rules.
One of the major works about rulespaces as analysable entities so far has been Feng Geng's smoothiness classifications.
First test and preliminary results
A script was written to register an arbitrarily defined 2000 generation population for 50% 7x7 soups in a given rule, writing each subsequent maximum, or hit, to a text file together with the soup number. The script sometimes causes Golly to crash and this problem hasn't been solved.
CGoL (B3/S23) and tLife (B3/S2-i34q) were compared over 108 and 122 cases respectively, with the populations recorded (attached Excel file).
As expected, with more attempts, it is more likely to find higher populations. The distribution of hits follows a logarithmic curve, for which regression analysis can be performed. The coefficient and intersect for the regression of ln(AttemptNumber) and HitPopulation can be determined and are directly related to the explosiveness of the rule. This can be analysed as HitPopulation = g*ln(AttemptNumber)+n
The value at AttemptNumber = 1 (g+n) should probably represent the average soup population result, while the gradient g gives information about the distribution of potential populations and achievable explosiveness, which should, for instance, distinguish DryLife from CGoL.
This might imply a necessity to model the data based on f(x) = a*ln(x+1)+b instead.
The results for CGoL and tLife were the following:
- CGol [updated 22/12: 2934 data points]:
- g = 128(.7)±1.2 cells
- n = -54±6 cells
- g+n = 74±6 cells - tLife:
- g = 6±1.8 cells
- n = 8.5±0.3 cells
- g+n = 13±1.8 cells
New Aims
Automating the script and solving problems so that Golly does not crash. The results were taken by hand by stopping the script after a few seconds, copying the results and restarting. While this was useful for the preliminary test, it is entirely impractical for further use.
Determining a Bayesian probabilistic way to determine the presence of yl, zz or xq in rules based on the constants obtained by a more optimised script (and building a library by analysing all apgsearched rules).
Add further functionality to find promising rules in an automated way.
Script used:
Code: Select all
import golly as g
class maxpop:
def __init__(self):
self.pop=0
self.patt=[]
def compare(self,other):
g.select(g.getrect())
g.clear(0)
g.putcells(other)
g.run(3000)
comp=int(g.getpop())
g.select(g.getrect())
g.clear(0)
g.putcells(self.patt)
g.run(3000)
newpop=int(g.getpop())
if comp>newpop:
return 1
else: return 0
File=open("maxpop.txt","w+")
best=maxpop()
candidate=maxpop()
k=0
while 1:
k+=1
g.select([0,0,7,7])
g.randfill(50)
candidate.patt[:]=g.getcells(g.getrect())
g.run(2000)
if int(g.getpop())>best.pop:
candidate.pop=int(g.getpop())
if best.compare(candidate.patt)==1:
best.pop=candidate.pop
best.patt[:]=candidate.patt[:]
File.write(str(k)+"\t"+str(best.pop)+"\n")
g.show("New highest population is %d. Press any key to show current best." %best.pop)
g.select(g.getrect())
try:
g.clear(0)
except: pass
event = g.getevent()
if event.startswith("key"):
g.new('Result')
g.putcells(best.patt)
File.close()
g.exit()
Code: Select all
AttemptNumber HitPopulation ln(AttemptNumber)
1 50 0
41 230 3,713572067
94 253 4,543294782
114 453 4,736198448
118 743 4,770684624
1125 788 7,025538315
2321 889 7,749753406
7446 1109 8,915432254
1 4 0
2 10 0,693147181
3 36 1,098612289
6 72 1,791759469
10 106 2,302585093
20 303 2,995732274
45 480 3,80666249
71 809 4,262679877
219 961 5,38907173
1 34 0
5 197 1,609437912
28 218 3,33220451
43 221 3,761200116
78 283 4,356708827
99 470 4,59511985
443 640 6,09356977
898 849 6,800170068
2566 869 7,850103545
6681 1112 8,807022956
14201 1462 9,561067664
1 7 0
2 10 0,693147181
3 20 1,098612289
7 39 1,945910149
13 505 2,564949357
21 578 3,044522438
270 697 5,598421959
333 905 5,80814249
1350 1050 7,207859871
1 18 0
5 107 1,609437912
14 116 2,63905733
33 451 3,496507561
220 552 5,393627546
388 668 5,96100534
1766 873 7,476472381
6180 1190 8,72907355
1 12 0
2 18 0,693147181
11 29 2,397895273
12 38 2,48490665
13 51 2,564949357
16 93 2,772588722
23 157 3,135494216
95 226 4,553876892
119 274 4,779123493
135 584 4,905274778
343 597 5,837730447
957 915 6,863803391
4598 1097 8,433376705
1 8 0
2 16 0,693147181
4 26 1,386294361
6 134 1,791759469
30 515 3,401197382
154 614 5,036952602
985 763 6,892641641
1540 1154 7,339537695
1 6 0
2 7 0,693147181
3 21 1,098612289
5 49 1,609437912
14 189 2,63905733
18 223 2,890371758
30 355 3,401197382
228 587 5,429345629
423 779 6,047372179
1 3 0
2 15 0,693147181
4 24 1,386294361
6 36 1,791759469
10 116 2,302585093
38 397 3,63758616
195 615 5,272999559
1 17 0
2 116 0,693147181
3 180 1,098612289
14 184 2,63905733
28 219 3,33220451
52 295 3,951243719
129 345 4,859812404
168 452 5,123963979
198 549 5,288267031
226 784 5,420534999
560 1140 6,327936784
1 10 0
14 199 2,63905733
32 235 3,465735903
50 249 3,912023005
106 429 4,663439094
187 580 5,231108617
241 624 5,484796933
462 923 6,135564891
1 49 0
5 220 1,609437912
7 455 1,945910149
45 461 3,80666249
129 748 4,859812404
3514 762 8,164510269
4020 1027 8,299037182
Code: Select all
AttemptNumber HitPopulation ln(AttemptNumber)
1 29 0
28 32 3,33220451
61 33 4,110873864
83 34 4,418840608
107 54 4,672828834
700 57 6,551080335
703 66 6,555356892
2323 70 7,750614733
2539 78 7,839525582
1 4 0
2 15 0,693147181
15 25 2,708050201
19 26 2,944438979
44 27 3,784189634
151 28 5,017279837
162 30 5,087596335
197 31 5,283203729
205 34 5,323009979
233 56 5,451038454
588 58 6,376726948
723 59 6,583409222
3291 89 8,098946749
1 17 0
2 19 0,693147181
6 26 1,791759469
8 37 2,079441542
41 39 3,713572067
128 45 4,852030264
142 47 4,955827058
291 65 5,673323267
952 75 6,858565035
1 9 0
2 35 0,693147181
255 55 5,541263545
329 60 5,796057751
3582 61 8,183676583
4087 64 8,315566484
5791 72 8,664060267
6875 73 8,835646923
8118 92 9,001839097
2 6 0,693147181
3 8 1,098612289
7 15 1,945910149
9 34 2,197224577
79 37 4,369447852
164 45 5,099866428
170 47 5,135798437
475 60 6,163314804
708 66 6,562444094
2858 71 7,957877358
5025 85 8,522180733
1 10 0
5 15 1,609437912
8 17 2,079441542
13 21 2,564949357
19 22 2,944438979
81 24 4,394449155
84 43 4,430816799
110 45 4,700480366
241 47 5,484796933
422 48 6,045005314
580 68 6,363028104
5085 88 8,534050308
1 6 0
2 10 0,693147181
3 28 1,098612289
83 33 4,418840608
110 52 4,700480366
413 55 6,023447593
436 57 6,077642243
606 62 6,406879986
983 79 6,89060912
1 12 0
2 14 0,693147181
4 17 1,386294361
12 18 2,48490665
83 22 4,418840608
94 26 4,543294782
102 33 4,624972813
124 45 4,820281566
222 49 5,402677382
508 67 6,230481448
681 69 6,523562306
1354 76 7,210818453
6344 88 8,755264763
1 8 0
2 18 0,693147181
21 21 3,044522438
39 43 3,663561646
189 47 5,241747015
331 48 5,802118375
560 62 6,327936784
880 64 6,779921907
923 93 6,827629235
1 22 0
7 25 1,945910149
13 30 2,564949357
36 44 3,583518938
140 48 4,941642423
542 79 6,295266001
1 27 0
33 34 3,496507561
118 53 4,770684624
544 63 6,298949247
1307 80 7,175489714
11328 88 9,335032816
1 6 0
2 8 0,693147181
5 10 1,609437912
6 13 1,791759469
17 14 2,833213344
33 16 3,496507561
35 17 3,555348061
37 22 3,610917913
73 50 4,290459441
183 58 5,209486153
373 65 5,92157842
2089 68 7,644440762
2452 71 7,804659297
2661 73 7,886457271
7012 76 8,855378246
8698 99 9,070848393