Class: NeuroGammon::FannPlayer

Inherits:
BaseNeuralPlayer show all
Includes:
BoardTools
Defined in:
lib/neuro_gammon/fann_player.rb

Instance Attribute Summary

Attributes inherited from BaseNeuralPlayer

#hidden_layers, #learning_rate, #n_inputs, #n_outputs

Attributes inherited from BasePlayer

#id, #name

Class Method Summary collapse

Instance Method Summary collapse

Methods included from BoardTools

#reverse_state, #test_for_gammon

Methods inherited from BaseNeuralPlayer

#suggest_move

Constructor Details

#initializeFannPlayer

Returns a new instance of FannPlayer.



15
16
17
# File 'lib/neuro_gammon/fann_player.rb', line 15

def initialize
  super
end

Class Method Details

.from_yaml(yaml) ⇒ Object



37
38
39
40
41
42
43
44
45
46
# File 'lib/neuro_gammon/fann_player.rb', line 37

def self.from_yaml yaml
  obj=YAML::load(yaml)
  class << obj
    def pub_read_net_data
      read_net_data
    end
  end     
  obj.pub_read_net_data
  obj
end

Instance Method Details

#cascade_learn!(games) ⇒ Object



19
20
21
22
23
24
# File 'lib/neuro_gammon/fann_player.rb', line 19

def cascade_learn! games
  corpus=generate_corpus games
  training_data=RubyFann::TrainData.new(:inputs=>corpus[0], :desired_outputs=>corpus[1])
  @net.cascadetrain_on_data(training_data,5,5,0.0004)
  store_net_data
end

#learn!(games) ⇒ Object



26
27
28
29
30
31
# File 'lib/neuro_gammon/fann_player.rb', line 26

def learn! games
  corpus=generate_corpus games
  training_data=RubyFann::TrainData.new(:inputs=>corpus[0], :desired_outputs=>corpus[1])
  @net.train_on_data(training_data,1500,30,0.0004)
  store_net_data
end

#read_net_dataObject

see store_net_data



49
50
51
52
53
54
55
# File 'lib/neuro_gammon/fann_player.rb', line 49

def read_net_data
  f=Tempfile.new("fann-net-in")
  f.write(@net_data)
  f.flush      
  @net=RubyFann::Standard.new(:filename=>f.path)
  f.close
end

#to_yaml_propertiesObject



33
34
35
# File 'lib/neuro_gammon/fann_player.rb', line 33

def to_yaml_properties
  ["@n_inputs","@n_outputs","@hidden_layers","@learning_rate","@net_data"]
end