此功能具有3种模式,即“ hh”,“ ih”和“ ho”。
def mutate_add_connection(self, mode = 'hh'):
if mode == 'hh': # hidden --> hidden
node_a = random.choice(self.hidden_nodes_dict.values())
node_b = random.choice(self.hidden_nodes_dict.values())
self.connect_node_pair(node_a,node_b, 'sort')
elif mode == 'ih': # input --> hidden
node_a = random.choice(self.input_nodes_dict.values())
node_b = random.choice(self.hidden_nodes_dict.values())
node_b.set_links((node_a,random.choice([-1, 1])))
elif mode == 'ho': # hidden --> output
node_b.set_links((node_a,random.choice([-1, 1])))
node_a = random.choice(self.hidden_nodes_dict.values())
node_b = random.choice(self.output_nodes_dict.values())
在添加连接变异的实践中,我需要使用这三种模式。每种模式不要说33.33%。
因此,我打算在此功能中添加模式“自动”。为了将“ 3”模式称为“随机”。
def mutate_add_connection(self, mode = 'hh'):
if mode == 'auto':
chosen_mode = random.choice(['hh','ih','ho'])
self.mutate_add_connection(mode=chosen_mode)
# the code above .......
但是我不确定这是一个好主意。您能否提出实现我的建议的更好方法?谢谢〜
答案 0 :(得分:6)
虽然递归函数经常有很好的用法,但实际上并不需要。只需重新分配mode
参数即可。
def mutate_add_connection(self, mode = 'hh'):
if mode == 'auto':
mode = random.choice(['hh','ih','ho'])
# the code above .......