remove attr enable for conn

This commit is contained in:
wls2002
2024-05-31 22:06:25 +08:00
parent d6e9ff5d9a
commit 4ad9f0a85a
9 changed files with 43 additions and 108 deletions

View File

@@ -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):

View File

@@ -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]