本文整理汇总了Golang中github.com/rqme/neat.Context.Innovation方法的典型用法代码示例。如果您正苦于以下问题:Golang Context.Innovation方法的具体用法?Golang Context.Innovation怎么用?Golang Context.Innovation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/rqme/neat.Context
的用法示例。
在下文中一共展示了Context.Innovation方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: createSeed
// Returns a genome build from the parameters
func createSeed(ctx neat.Context, cfg ClassicSettings) (adam neat.Genome) {
// Create the genome
inputs := cfg.NumInputs()
outputs := cfg.NumOutputs()
adam = neat.Genome{
Nodes: make(map[int]neat.Node, 1+inputs+outputs),
}
nodes := make([]neat.Node, len(adam.Nodes))
node := neat.Node{NeuronType: neat.Bias, ActivationType: neat.Direct, X: 0, Y: 0}
node.Innovation = ctx.Innovation(neat.NodeInnovation, node.Key())
adam.Nodes[node.Innovation] = node
nodes = append(nodes, node)
for i := 0; i < inputs; i++ {
node = neat.Node{NeuronType: neat.Input, ActivationType: neat.Direct, X: float64(i+1) / float64(inputs), Y: 0}
node.Innovation = ctx.Innovation(neat.NodeInnovation, node.Key())
adam.Nodes[node.Innovation] = node
nodes = append(nodes, node)
}
x := 0.5
for i := 0; i < outputs; i++ {
if outputs > 1 {
x = float64(i) / float64(outputs-1)
}
node = neat.Node{NeuronType: neat.Output, ActivationType: cfg.OutputActivation(), X: x, Y: 1}
node.Innovation = ctx.Innovation(neat.NodeInnovation, node.Key())
adam.Nodes[node.Innovation] = node
nodes = append(nodes, node)
}
rng := rand.New(rand.NewSource(rand.Int63()))
// adam.Conns = make(map[int]neat.Connection, (1+inputs)*outputs)
// for i := 0; i < 1+inputs; i++ {
// for j := 0; j < outputs; j++ {
// w := (rng.Float64()*2.0 - 1.0) * cfg.WeightRange()
// conn := neat.Connection{Source: nodes[i].Innovation, Target: nodes[j+1+inputs].Innovation, Enabled: true, Weight: w}
// conn.Innovation = ctx.Innovation(neat.ConnInnovation, conn.Key())
// adam.Conns[conn.Innovation] = conn
// }
// }
ts := cfg.Traits()
adam.Traits = make([]float64, len(ts))
for i, trait := range ts {
adam.Traits[i] = rng.Float64()*(trait.Max-trait.Min) + trait.Min // TODO: Get setting values from configuration
}
return adam
}