remove attr enable for conn
This commit is contained in:
@@ -4,27 +4,16 @@ from .. import BaseGene
|
||||
|
||||
class BaseConnGene(BaseGene):
|
||||
"Base class for connection genes."
|
||||
fixed_attrs = ["input_index", "output_index", "enabled"]
|
||||
fixed_attrs = ["input_index", "output_index"]
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
def crossover(self, state, randkey, gene1, gene2):
|
||||
def crossover_attr():
|
||||
return jnp.where(
|
||||
jax.random.normal(randkey, gene1.shape) > 0,
|
||||
gene1,
|
||||
gene2,
|
||||
)
|
||||
|
||||
return jax.lax.cond(
|
||||
gene1[2] == gene2[2], # if both genes are enabled or disabled
|
||||
crossover_attr, # then randomly pick attributes from gene1 or gene2
|
||||
lambda: jnp.where( # one gene is enabled and the other is disabled
|
||||
gene1[2], # if gene1 is enabled
|
||||
gene1, # then return gene1
|
||||
gene2, # else return gene2
|
||||
),
|
||||
return jnp.where(
|
||||
jax.random.normal(randkey, gene1.shape) > 0,
|
||||
gene1,
|
||||
gene2,
|
||||
)
|
||||
|
||||
def forward(self, state, attrs, inputs):
|
||||
|
||||
@@ -38,10 +38,9 @@ class DefaultConnGene(BaseConnGene):
|
||||
def mutate(self, state, randkey, conn):
|
||||
input_index = conn[0]
|
||||
output_index = conn[1]
|
||||
enabled = conn[2]
|
||||
weight = mutate_float(
|
||||
randkey,
|
||||
conn[3],
|
||||
conn[2],
|
||||
self.weight_init_mean,
|
||||
self.weight_init_std,
|
||||
self.weight_mutate_power,
|
||||
@@ -49,12 +48,10 @@ class DefaultConnGene(BaseConnGene):
|
||||
self.weight_replace_rate,
|
||||
)
|
||||
|
||||
return jnp.array([input_index, output_index, enabled, weight])
|
||||
return jnp.array([input_index, output_index, weight])
|
||||
|
||||
def distance(self, state, attrs1, attrs2):
|
||||
return (attrs1[2] != attrs2[2]) + jnp.abs(
|
||||
attrs1[3] - attrs2[3]
|
||||
) # enable + weight
|
||||
return jnp.abs(attrs1[0] - attrs2[0])
|
||||
|
||||
def forward(self, state, attrs, inputs):
|
||||
weight = attrs[0]
|
||||
|
||||
Reference in New Issue
Block a user