gp-experiment/Experiment.jl

55 lines
1.3 KiB
Julia

import ExcelReaders
import DataFrames
POPSIZE = 5
mu = 1
lambda = 4
data = ExcelReaders.readxlsheet("./data/nutrional_information_5917.xlsx", "Sheet2", skipstartrows=1)
header = ExcelReaders.readxlsheet("./data/nutrional_information_5917.xlsx", "Sheet2", nrows=1)
# Convert to symbols to build header row.
for i = 1:length(header)
tmp = header[i]
tmp = Symbol(tmp)
header[i] = tmp
end
header = dropdims(reshape(header, :, 1), dims=2)
df = DataFrames.DataFrame()
# Finally, construct our dataframe
for i = 1:length(header)
df[header[i]] = data[2:end, i]
end
function breeder(parent)
end
function fitness(candidate::DataFrames.DataFrame)
sum(+, candidate[:Calories])
end
function breed(candidates::Array{DataFrames.DataFrame})
# Truncation selection, top 3 as parents.
# First, check everyone's fitness.
# Then, generate new solutions by selecting parents and breeding
sort!(candidates, by = x -> fitness(x))
parents = candidates[1:3]
end
function randRow()
# Generate a random row index
abs(rand(Int) % size(df, 1))
end
function randomCandidate(n::Integer)
# Select n random rows from the dataset.
rows = [randRow() for i = 1:n]
df[rows, :]
end
function generateInitialPopulation()
[randomCandidate(5) for i = 1:POPSIZE]
end
# search(generateInitialPopulation())