require 'ruby-fann'
train = RubyFann::TrainData.new(
inputs: [
[0,0,1,0,1,1,0,0,1,0,0,1,0,0,1], [1,1,1,0,0,1,1,1,1,1,0,0,1,1,1],
[1,1,1,0,0,1,1,1,1,0,0,1,1,1,1], [1,0,1,1,0,1,1,1,1,0,0,1,0,0,1],
[1,1,1,1,0,0,1,1,1,0,0,1,1,1,1], [1,1,1,1,0,0,1,1,1,1,0,1,1,1,1],
[1,1,1,0,0,1,0,1,0,1,0,0,1,0,0], [1,1,1,1,0,1,1,1,1,1,0,1,1,1,1],
[1,1,1,1,0,1,1,1,1,0,0,1,1,1,1]
],
desired_outputs: [ [1,0,0,0,0,0,0,0,0], [0,1,0,0,0,0,0,0,0],
[0,0,1,0,0,0,0,0,0], [0,0,0,1,0,0,0,0,0],
[0,0,0,0,1,0,0,0,0], [0,0,0,0,0,1,0,0,0],
[0,0,0,0,0,0,1,0,0], [0,0,0,0,0,0,0,1,0],
[0,0,0,0,0,0,0,0,1] ]
)
fann = RubyFann::Standard.new(
num_inputs: 15,
hidden_neurons: [30],
num_outputs: 9
)
fann.learning_rate = 0.5
fann.momentum = 0.5
fann.train_on_data(train, 10000, 1000, 0.001)
outputs = fann.run([0,0,1,0,1,1,0,0,1,0,0,1,0,0,1])
m = outputs.max
puts "Result: #{( outputs.find_index { |x| x == m } ) + 1}"