Answers.Body: <p>that behavior can be expected depending upon how you set your thresholds as those are what determines whether a node is explored and assigned a connection. Assuming empty networks don't perform well in your environment genomes that don't find any connections will likely go extinct early on.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-07-22T21:21:29.937Z
Answers.LastActivityDate: 2021-07-22T21:21:29.937Z
Answers.UserDisplayName: nickw
Answers.Body: <p>You can modify your fitness-funciton in a kind of &quot;dirty&quot; way:</p>
  <p>Check while generating the fitness if all outputs are the same and than set the fitness to -10000 (or another very bad value depending on your normal fitness).</p>
  <p>This way ES-HyperNEAT could/should learn to not generate this kind of networks.</p>
  <p>PS: I do not have enough reputation to make this a comment.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-06-22T09:01:41.400Z
Answers.LastActivityDate: 2021-06-22T09:01:41.400Z
Answers.UserDisplayName: 9191
Body: <p>I'm trying to implement the ES-HyperNEAT algorithm using the original paper, as well as the pseudocode provided in the <a href="http://eplex.cs.ucf.edu/ESHyperNEAT/" rel="nofollow noreferrer">official user page</a>. Occasionally, the algorithm would be unable to generate a network in the substrate. This happens when it finds no valid nodes that could connect a path between the input and output neurons.</p>
  <p>I've noticed that this is highly dependent on how the hyperparameters (e.g., variance threshold and band threshold) were tuned.</p>
  <p>Is my implementation correct, i.e., is this normal behavior? If so, is there a good way to ensure that a network is always generated (aside from directly connecting the input and output neurons)?</p>
  
Tags: <neat><hyper-parameters><neuroevolution>
Title: How to ensure that the ES-HyperNEAT algorithm generates an ANN in the substrate?
UserDisplayName: SirBob
ThreadText: # How to ensure that the ES-HyperNEAT algorithm generates an ANN in the substrate?
  
  (Asked by: username_0 on 2021-06-14)
  
  I'm trying to implement the ES-HyperNEAT algorithm using the original paper, as well as the pseudocode provided in the [official user page](http://eplex.cs.ucf.edu/ESHyperNEAT/). Occasionally, the algorithm would be unable to generate a network in the substrate. This happens when it finds no valid nodes that could connect a path between the input and output neurons.
  
  I've noticed that this is highly dependent on how the hyperparameters (e.g., variance threshold and band threshold) were tuned.
  
  Is my implementation correct, i.e., is this normal behavior? If so, is there a good way to ensure that a network is always generated (aside from directly connecting the input and output neurons)?
  
  **Tags:** neat, hyper-parameters, neuroevolution
  
  ---
  
  ## 2 answers
  
  ### Answer by username_1 on 2021-07-22. Score: 1
  
  that behavior can be expected depending upon how you set your thresholds as those are what determines whether a node is explored and assigned a connection. Assuming empty networks don't perform well in your environment genomes that don't find any connections will likely go extinct early on.
  
  
  ---
  
  ### Answer by username_2 on 2021-06-22. Score: 1
  
  You can modify your fitness-funciton in a kind of "dirty" way:
  
  Check while generating the fitness if all outputs are the same and than set the fitness to -10000 (or another very bad value depending on your normal fitness).
  
  This way ES-HyperNEAT could/should learn to not generate this kind of networks.
  
  PS: I do not have enough reputation to make this a comment.
  
  
  ---
  
  