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