Genome constructor

Genome(
  1. int inputCount,
  2. int outputCount
)

Implementation

Genome(this.inputCount, this.outputCount) {
  int innovationIdentifier = 0;
  List<Node> allInputs = <Node>[];
  allInputs.add(Bias.index(innovationIdentifier++));

  for (int i = 0; i < inputCount; i++) {
    var input = Input.index(innovationIdentifier++);
    input.y = 0;
    allInputs.add(input);
  }

  List<Node> allOutputs = <Node>[];
  for (int i = 0; i < outputCount; i++) {
    var output = Output.index(innovationIdentifier++);
    output.y = 1;
    allOutputs.add(output);
  }

  if (allInputs.length == 1) {
    allInputs.first.x = 0.5;
  } else {
    for (int i = 0; i < allInputs.length; i++) {
      var current = allInputs[i];
      current.x = i / (allInputs.length - 1);
    }
  }

  if (allOutputs.length == 1) {
    allOutputs.first.x = 0.5;
  } else {
    for (int i = 0; i < allOutputs.length; i++) {
      var current = allOutputs[i];
      current.y = 1;
      current.x = i / (allOutputs.length - 1);
    }
  }
  genes.addAll(allInputs);
  genes.addAll(allOutputs);
}