Beispiel #1
0
        /// <summary>
        /// Assumption: networks has the same predefined structure
        /// </summary>
        public static NetGroup CrossOver(NetGroup a, NetGroup b)
        {
            NetGroup output            = new NetGroup(a.inputLenght);
            bool     connectionsParent = Convert.ToBoolean(Math.Round(new Random(DateTime.Now.Millisecond).NextDouble()));

            for (int networkIndex = 0; networkIndex < a.networks.Count; networkIndex++)
            {
                List <ConnectedNet.Connection> connections = connectionsParent? b.networks[networkIndex].Connections : a.networks[networkIndex].Connections;
                output.networks.Add(new ConnectedNet(TemporalNetwork.CrossOver(a.networks[networkIndex].Network, b.networks[networkIndex].Network, -1, true, connectionsParent)
                                                     , connections, a.networks[networkIndex].OutputToGatherBounds));
            }
            return(output);
        }
Beispiel #2
0
        public static NetGroup FromString(string str)
        {
            string[] parameters = str.Replace("={", "").Split(new string[] { "}" }, StringSplitOptions.RemoveEmptyEntries);

            int        inCount     = Convert.ToInt32(parameters[0].Replace("inCount", ""));
            List <int> exeOrder    = StringParser.StringToIntList(parameters[1].Replace(" exeOrder", ""));
            List <int> outputIndex = StringParser.StringToIntList(parameters[2].Replace(" outputIndexes", ""));

            List <ConnectedNet> nets = new List <ConnectedNet>();

            string[] connectedNets = parameters[3].Split(new string[] { "\n\nconNet:\n" }, StringSplitOptions.RemoveEmptyEntries);
            foreach (var connectedNet in connectedNets)
            {
                nets.Add(ConnectedNet.FromString(connectedNet));
            }

            NetGroup net = new NetGroup(inCount);

            net.executionIndexOrder     = exeOrder;
            net.outputConnectedNetworks = outputIndex;
            net.networks = nets;

            return(net);
        }