load library and data

evals <- read.csv('Downloads/gen399_evals.csv')
evals <- evals[, !names(evals) %in% c('total_steps', 'total_reward', 'num_actions')]
evals$action_0_count[is.na(evals$action_0_count)] <- 0
evals$action_1_count[is.na(evals$action_1_count)] <- 0
evals$action_2_count[is.na(evals$action_2_count)] <- 0

evals$num_actions <- evals$action_1_count + evals$action_2_count

distribution of resulting fitness

hist(evals$fitness)

summary(evals$fitness)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  -415.0  -415.0   182.0   183.6   808.0  1407.0

distributions of other features

hist(evals$final_x_pos)

hist(evals$total_time)

hist(evals$num_actions)

barplot(table(evals$unique_actions), main = 'Distribution of evals$unique_actions')

barplot(table(evals$coins), main = 'Distribution of evals$coins')

summary of button presses -
action 0: no action
action 1: right button
action 2: right + jump

summary(evals$action_0_count)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     3.0    39.0    70.0   957.3  2005.0  2005.0
hist(evals$action_0_count, breaks = 50)

summary(evals$action_1_count)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00    0.00   10.50   12.05   21.25   44.00
hist(evals$action_1_count)

summary(evals$action_2_count)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     0.0     0.0     0.0   182.1   124.0  1976.0
hist(evals$action_2_count, breaks = 50)

normalize variables over time

evals$num_actions_ot <- evals$num_actions / evals$total_time
evals$coins_ot <- evals$coins / evals$total_time
evals$final_x_pos_ot <- evals$final_x_pos / evals$total_time
evals$action_0_count_ot <- evals$action_0_count / evals$total_time
evals$action_1_count_ot <- evals$action_1_count / evals$total_time
evals$action_2_count_ot <- evals$action_2_count / evals$total_time

explore correlations between features and fitness

nalm <- lm(fitness ~ num_actions_ot, data=evals)
plot(evals$num_actions_ot, evals$fitness, main='number of actions / time and fitness')
abline(nalm, col='red')

cor(evals$fitness, evals$num_actions_ot)
## [1] 0.7964116
clm <- lm(fitness ~ coins_ot, data=evals)
plot(evals$coins_ot, evals$fitness, main='coins / time and fitness')
abline(clm, col='red')

cor(evals$fitness, evals$coins_ot)
## [1] 0.5560604
fxplm <- lm(fitness ~ final_x_pos_ot, data=evals)
plot(evals$final_x_pos_ot, evals$fitness, main='final x position / time and fitness')
abline(fxplm, col='red')

cor(evals$fitness, evals$final_x_pos_ot)
## [1] 0.7999652
a0lm <- lm(fitness ~ action_0_count_ot, data=evals)
plot(evals$action_0_count_ot, evals$fitness, main='action0 / time and fitness')
abline(a0lm, col='red')

cor(evals$fitness, evals$action_0_count_ot)
## [1] -0.7964116
a1lm <- lm(fitness ~ action_1_count_ot, data=evals)
plot(evals$action_1_count_ot, evals$fitness, main='action1 / time and fitness')
abline(a1lm, col='red')

cor(evals$fitness, evals$action_1_count_ot)
## [1] 0.2036111
a2lm <- lm(fitness ~ action_2_count_ot, data=evals)
plot(evals$action_2_count_ot, evals$fitness, main='action2 / time and fitness')
abline(a2lm, col='red')

cor(evals$fitness, evals$action_2_count_ot)
## [1] 0.748326

mutation analysis

mutation_data <- read.csv('Downloads/mutation_stats.csv')

nrow(mutation_data)
## [1] 50827
summary(mutation_data$mutation_rate)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.010   0.020   0.060   0.128   0.210   0.500
barplot(table(mutation_data$mutation_rate))

as.data.frame(table(mutation_data$mutation_rate))
##    Var1  Freq
## 1  0.01 11776
## 2  0.02  4792
## 3  0.03  3216
## 4  0.04  2275
## 5  0.05  1902
## 6  0.06  1561
## 7  0.07  1478
## 8  0.08  1243
## 9  0.09  1075
## 10  0.1  1024
## 11 0.11   950
## 12 0.12   879
## 13 0.13   834
## 14 0.14   825
## 15 0.15   799
## 16 0.16   731
## 17 0.17   742
## 18 0.18   715
## 19 0.19   602
## 20  0.2   624
## 21 0.21   577
## 22 0.22   549
## 23 0.23   546
## 24 0.24   481
## 25 0.25   547
## 26 0.26   549
## 27 0.27   492
## 28 0.28   480
## 29 0.29   429
## 30  0.3   453
## 31 0.31   452
## 32 0.32   447
## 33 0.33   417
## 34 0.34   408
## 35 0.35   404
## 36 0.36   414
## 37 0.37   403
## 38 0.38   393
## 39 0.39   406
## 40  0.4   421
## 41 0.41   460
## 42 0.42   440
## 43 0.43   367
## 44 0.44   321
## 45 0.45   378
## 46 0.46   338
## 47 0.47   371
## 48 0.48   336
## 49 0.49   351
## 50  0.5   154