public FPropagateST(ChaoticSeer seer) { InputNodes = new List <CalcNode>(); HiddenNodes = new List <CalcNode>(); OutputNodes = new List <CalcNode>(); GeneHashSet <NodeGene> _nodes = seer.Nodes; GeneHashSet <ConnectionGene> _cons = seer.Connections; Dictionary <int, CalcNode> _nodeHashMap = new Dictionary <int, CalcNode>(); foreach (NodeGene item in _nodes.Data) { CalcNode node = new CalcNode(item.X); _nodeHashMap.Add(item.InnovationNumber, node); if (item.X <= 0.1f) { InputNodes.Add(node); } else if (item.X >= 0.9f) { OutputNodes.Add(node); } else { HiddenNodes.Add(node); } } HiddenNodes.Sort(); //This thing is working correct foreach (ConnectionGene item in _cons.Data) { NodeGene from = item.From; NodeGene to = item.To; CalcNode node_from = _nodeHashMap[from.InnovationNumber]; CalcNode node_to = _nodeHashMap[to.InnovationNumber]; CalcConnection con = new CalcConnection(node_from, node_to) { Weight = item.Weight, IsEnabled = item.IsEnabled }; node_to.Connections.Add(con); } }
public CalcConnection(CalcNode from, CalcNode to) { From = from; To = to; }