예제 #1
0
 public NEATInnovation(long fromNeuronID_0, long toNeuronID_1, NEATInnovationType innovationType_2, long innovationID, NEATNeuronType neuronType_3, double x, double y)
 {
     goto Label_0057;
     Label_0023:
     this.innovationType = innovationType_2;
     base.InnovationID = innovationID;
     this.neuronType = neuronType_3;
     this.splitX = x;
     this.splitY = y;
     this.neuronID = 0L;
     if (0 == 0)
     {
         return;
     }
     if (-2147483648 != 0)
     {
         goto Label_0057;
     }
     Label_004C:
     this.fromNeuronID = fromNeuronID_0;
     this.toNeuronID = toNeuronID_1;
     goto Label_0023;
     Label_0057:
     if ((((uint) y) + ((uint) toNeuronID_1)) < 0)
     {
         goto Label_0023;
     }
     goto Label_004C;
 }
예제 #2
0
 public NEATInnovation(long fromNeuronID_0, long toNeuronID_1, NEATInnovationType innovationType_2, long innovationID)
 {
     if ((((uint) innovationID) + ((uint) fromNeuronID_0)) <= uint.MaxValue)
     {
         this.fromNeuronID = fromNeuronID_0;
         this.toNeuronID = toNeuronID_1;
         if (((uint) toNeuronID_1) > uint.MaxValue)
         {
             return;
         }
         goto Label_003B;
     }
     if (0 == 0)
     {
         goto Label_003B;
     }
     Label_0021:
     if ((((uint) fromNeuronID_0) + ((uint) fromNeuronID_0)) < 0)
     {
         goto Label_0052;
     }
     return;
     Label_003B:
     this.innovationType = innovationType_2;
     base.InnovationID = innovationID;
     this.neuronID = -1L;
     Label_0052:
     this.splitX = 0.0;
     this.splitY = 0.0;
     this.neuronType = NEATNeuronType.None;
     goto Label_0021;
 }
예제 #3
0
 /// <summary>
 /// Convert the innovation type to a string.
 /// </summary>
 /// <param name="t">The innovation type.</param>
 /// <returns>The string.</returns>
 public static String InnovationTypeToString(NEATInnovationType t)
 {
     switch (t)
     {
         case NEATInnovationType.NewLink:
             return "l";
         case NEATInnovationType.NewNeuron:
             return "n";
         default:
             return null;
     }
 }
        /// <summary>
        /// Create a new innovation.
        /// </summary>
        ///
        /// <param name="ins0">The input neuron.</param>
        /// <param name="xout">The output neuron.</param>
        /// <param name="type">The type.</param>
        public void CreateNewInnovation(long ins0, long xout,
                                        NEATInnovationType type)
        {
            var newInnovation = new NEATInnovation(ins0, xout, type,
                                                   population.AssignInnovationID());

            if (type == NEATInnovationType.NewNeuron)
            {
                newInnovation.NeuronID = AssignNeuronID();
            }

            Add(newInnovation);
        }
예제 #5
0
        /// <summary>
        /// Construct an innovation.
        /// </summary>
        ///
        /// <param name="neuronGene">The neuron gene.</param>
        /// <param name="innovationID">The innovation id.</param>
        /// <param name="neuronID_0">The neuron id.</param>
        public NEATInnovation(NEATNeuronGene neuronGene,
                              long innovationID, long neuronID_0)
        {
            neuronID     = neuronID_0;
            InnovationID = innovationID;
            splitX       = neuronGene.SplitX;
            splitY       = neuronGene.SplitY;

            neuronType     = neuronGene.NeuronType;
            innovationType = NEATInnovationType.NewNeuron;
            fromNeuronID   = -1;
            toNeuronID     = -1;
        }
예제 #6
0
        /// <summary>
        /// Construct an innovation.
        /// </summary>
        ///
        /// <param name="fromNeuronID_0">The from neuron.</param>
        /// <param name="toNeuronID_1">The two neuron.</param>
        /// <param name="innovationType_2">The innovation type.</param>
        /// <param name="innovationID">The innovation id.</param>
        public NEATInnovation(long fromNeuronID_0, long toNeuronID_1,
                              NEATInnovationType innovationType_2, long innovationID)
        {
            fromNeuronID   = fromNeuronID_0;
            toNeuronID     = toNeuronID_1;
            innovationType = innovationType_2;
            InnovationID   = innovationID;

            neuronID   = -1;
            splitX     = 0;
            splitY     = 0;
            neuronType = NEATNeuronType.None;
        }
        /// <summary>
        /// Create a new innovation.
        /// </summary>
        /// <param name="input">The input neuron.</param>
        /// <param name="output">The output neuron.</param>
        /// <param name="type">The type.</param>
        public void CreateNewInnovation(long input, long output,
                                        NEATInnovationType type)
        {
            NEATInnovation newInnovation = new NEATInnovation(input, output, type,
                                                              this.population.AssignInnovationID());

            if (type == NEATInnovationType.NewNeuron)
            {
                newInnovation.NeuronID = AssignNeuronID();
            }

            Innovations.Add(newInnovation);
        }
예제 #8
0
        /// <summary>
        /// Construct an innovation.
        /// </summary>
        /// <param name="fromNeuronID">The from neuron.</param>
        /// <param name="toNeuronID">The two neuron.</param>
        /// <param name="innovationType">The innovation type.</param>
        /// <param name="innovationID">The innovation id.</param>
        public NEATInnovation(long fromNeuronID, long toNeuronID,
                              NEATInnovationType innovationType, long innovationID)
        {
            this.fromNeuronID   = fromNeuronID;
            this.toNeuronID     = toNeuronID;
            this.innovationType = innovationType;
            InnovationID        = innovationID;

            neuronID   = -1;
            splitX     = 0;
            splitY     = 0;
            neuronType = NEATNeuronType.None;
        }
예제 #9
0
        /// <summary>
        /// Convert the innovation type to a string.
        /// </summary>
        /// <param name="t">The innovation type.</param>
        /// <returns>The string.</returns>
        public static String InnovationTypeToString(NEATInnovationType t)
        {
            switch (t)
            {
            case NEATInnovationType.NewLink:
                return("l");

            case NEATInnovationType.NewNeuron:
                return("n");

            default:
                return(null);
            }
        }
예제 #10
0
        /// <summary>
        /// Construct an innovation.
        /// </summary>
        ///
        /// <param name="fromNeuronID_0">The from neuron.</param>
        /// <param name="toNeuronID_1">The to neuron.</param>
        /// <param name="innovationType_2">The innovation type.</param>
        /// <param name="innovationID">The innovation id.</param>
        /// <param name="neuronType_3">The neuron type.</param>
        /// <param name="x">The x coordinate.</param>
        /// <param name="y">THe y coordinate.</param>
        public NEATInnovation(long fromNeuronID_0, long toNeuronID_1,
                              NEATInnovationType innovationType_2, long innovationID,
                              NEATNeuronType neuronType_3, double x, double y)
        {
            fromNeuronID   = fromNeuronID_0;
            toNeuronID     = toNeuronID_1;
            innovationType = innovationType_2;
            InnovationID   = innovationID;
            neuronType     = neuronType_3;
            splitX         = x;
            splitY         = y;

            neuronID = 0;
        }
예제 #11
0
        /// <summary>
        /// Construct an innovation.
        /// </summary>
        /// <param name="fromNeuronID">The from neuron.</param>
        /// <param name="toNeuronID">The to neuron.</param>
        /// <param name="innovationType">The innovation type.</param>
        /// <param name="innovationID">The innovation id.</param>
        /// <param name="neuronType">The neuron type.</param>
        /// <param name="x">The x coordinate.</param>
        /// <param name="y">The y coordinate.</param>
        public NEATInnovation(long fromNeuronID, long toNeuronID,
                              NEATInnovationType innovationType, long innovationID,
                              NEATNeuronType neuronType, double x, double y)
        {
            this.fromNeuronID   = fromNeuronID;
            this.toNeuronID     = toNeuronID;
            this.innovationType = innovationType;
            InnovationID        = innovationID;
            this.neuronType     = neuronType;
            splitX = x;
            splitY = y;

            neuronID = 0;
        }
예제 #12
0
        /// <summary>
        /// Create a new innovation.
        /// </summary>
        /// <param name="from">The from neuron.</param>
        /// <param name="to">The to neuron.</param>
        /// <param name="innovationType">The innovation type.</param>
        /// <param name="neuronType">The neuron type.</param>
        /// <param name="x">The x-coordinate.</param>
        /// <param name="y">The y-coordinate.</param>
        /// <returns>The new innovation.</returns>
        public long CreateNewInnovation(long from, long to,
                                        NEATInnovationType innovationType,
                                        NEATNeuronType neuronType, double x, double y)
        {
            NEATInnovation newInnovation = new NEATInnovation(from, to,
                                                              innovationType, population.AssignInnovationID(), neuronType, x, y);

            if (innovationType == NEATInnovationType.NewNeuron)
            {
                newInnovation.NeuronID = AssignNeuronID();
            }

            Innovations.Add(newInnovation);

            return(this.nextNeuronID - 1);  // ??????? should it be innov?
        }
예제 #13
0
        /// <summary>
        /// Check to see if we already have an innovation.
        /// </summary>
        /// <param name="input">The input neuron.</param>
        /// <param name="output">The output neuron.</param>
        /// <param name="type">The type.</param>
        /// <returns>The innovation, either new or existing if found.</returns>
        public NEATInnovation CheckInnovation(long input, long output,
                                              NEATInnovationType type)
        {
            foreach (IInnovation i in Innovations)
            {
                NEATInnovation innovation = (NEATInnovation)i;
                if ((innovation.FromNeuronID == input) &&
                    (innovation.ToNeuronID == output) &&
                    (innovation.InnovationType == type))
                {
                    return(innovation);
                }
            }

            return(null);
        }
예제 #14
0
 public NEATInnovation(NEATNeuronGene neuronGene, long innovationID, long neuronID_0)
 {
     if (8 != 0)
     {
         this.neuronID = neuronID_0;
         base.InnovationID = innovationID;
         this.splitX = neuronGene.SplitX;
         if (0xff == 0)
         {
             return;
         }
         this.splitY = neuronGene.SplitY;
         this.neuronType = neuronGene.NeuronType;
         this.innovationType = NEATInnovationType.NewNeuron;
     }
     this.fromNeuronID = -1L;
     this.toNeuronID = -1L;
 }
예제 #15
0
 public NEATInnovation CheckInnovation(long ins0, long xout, NEATInnovationType type)
 {
     using (IEnumerator<IInnovation> enumerator = base.Innovations.GetEnumerator())
     {
         IInnovation innovation;
         NEATInnovation innovation2;
         goto Label_0020;
     Label_000E:
         if ((innovation2.FromNeuronID == ins0) && (innovation2.ToNeuronID == xout))
         {
             goto Label_002E;
         }
     Label_0020:
         if (enumerator.MoveNext())
         {
             goto Label_0053;
         }
         goto Label_0084;
     Label_002E:
         if (innovation2.InnovationType != type)
         {
             goto Label_0020;
         }
         return innovation2;
     Label_0053:
         innovation = enumerator.Current;
         innovation2 = (NEATInnovation) innovation;
         if (((uint) xout) > uint.MaxValue)
         {
             goto Label_0020;
         }
         goto Label_000E;
     }
     Label_0084:
     return null;
 }
예제 #16
0
        public override string ToString()
        {
            NEATInnovationType innovationType;
            StringBuilder builder = new StringBuilder();
            builder.Append("[NeatInnovation:type=");
            if (1 != 0)
            {
                innovationType = this.innovationType;
            }
            switch (innovationType)
            {
                case NEATInnovationType.NewLink:
                    builder.Append("link");
                    break;

                case NEATInnovationType.NewNeuron:
                    builder.Append("neuron");
                    break;
            }
            builder.Append(",from=");
            builder.Append(this.fromNeuronID);
            builder.Append(",to=");
            builder.Append(this.toNeuronID);
            builder.Append(",splitX=");
            builder.Append(this.splitX);
            if (0 == 0)
            {
                builder.Append(",splitY=");
                builder.Append(this.splitY);
                builder.Append("]");
            }
            return builder.ToString();
        }
        /// <summary>
        /// Create a new innovation. 
        /// </summary>
        /// <param name="from">The from neuron.</param>
        /// <param name="to">The to neuron.</param>
        /// <param name="innovationType">The innovation type.</param>
        /// <param name="neuronType">The neuron type.</param>
        /// <param name="x">The x-coordinate.</param>
        /// <param name="y">The y-coordinate.</param>
        /// <returns>The new innovation.</returns>
        public long CreateNewInnovation(long from, long to,
                NEATInnovationType innovationType,
                NEATNeuronType neuronType, double x, double y)
        {
            NEATInnovation newInnovation = new NEATInnovation(from, to,
                    innovationType, population.AssignInnovationID(), neuronType, x, y);

            if (innovationType == NEATInnovationType.NewNeuron)
            {
                newInnovation.NeuronID = AssignNeuronID();
            }

            Innovations.Add(newInnovation);

            return (this.nextNeuronID - 1); // ??????? should it be innov?
        }
        /// <summary>
        /// Create a new innovation. 
        /// </summary>
        /// <param name="input">The input neuron.</param>
        /// <param name="output">The output neuron.</param>
        /// <param name="type">The type.</param>
        public void CreateNewInnovation(long input, long output,
                 NEATInnovationType type)
        {
            NEATInnovation newInnovation = new NEATInnovation(input, output, type,
                    this.population.AssignInnovationID());

            if (type == NEATInnovationType.NewNeuron)
            {
                newInnovation.NeuronID = AssignNeuronID();
            }

            Innovations.Add(newInnovation);
        }
예제 #19
0
 public void CreateNewInnovation(long ins0, long xout, NEATInnovationType type)
 {
     NEATInnovation innovation = new NEATInnovation(ins0, xout, type, this.population.AssignInnovationID());
     while (type == NEATInnovationType.NewNeuron)
     {
         innovation.NeuronID = this.AssignNeuronID();
         break;
     }
     base.Add(innovation);
 }
예제 #20
0
        /// <summary>
        /// Construct an innovation. 
        /// </summary>
        /// <param name="fromNeuronID">The from neuron.</param>
        /// <param name="toNeuronID">The two neuron.</param>
        /// <param name="innovationType">The innovation type.</param>
        /// <param name="innovationID">The innovation id.</param>
        public NEATInnovation(long fromNeuronID, long toNeuronID,
                NEATInnovationType innovationType, long innovationID)
        {

            this.fromNeuronID = fromNeuronID;
            this.toNeuronID = toNeuronID;
            this.innovationType = innovationType;
            InnovationID = innovationID;

            neuronID = -1;
            splitX = 0;
            splitY = 0;
            neuronType = NEATNeuronType.None;
        }
예제 #21
0
        /// <summary>
        /// Construct an innovation.
        /// </summary>
        ///
        /// <param name="fromNeuronID_0">The from neuron.</param>
        /// <param name="toNeuronID_1">The to neuron.</param>
        /// <param name="innovationType_2">The innovation type.</param>
        /// <param name="innovationID">The innovation id.</param>
        /// <param name="neuronType_3">The neuron type.</param>
        /// <param name="x">The x coordinate.</param>
        /// <param name="y">THe y coordinate.</param>
        public NEATInnovation(long fromNeuronID_0, long toNeuronID_1,
            NEATInnovationType innovationType_2, long innovationID,
            NEATNeuronType neuronType_3, double x, double y)
        {
            fromNeuronID = fromNeuronID_0;
            toNeuronID = toNeuronID_1;
            innovationType = innovationType_2;
            InnovationID = innovationID;
            neuronType = neuronType_3;
            splitX = x;
            splitY = y;

            neuronID = 0;
        }
예제 #22
0
 public long CreateNewInnovation(long from, long to, NEATInnovationType innovationType, NEATNeuronType neuronType, double x, double y)
 {
     NEATInnovation innovation = new NEATInnovation(from, to, innovationType, this.population.AssignInnovationID(), neuronType, x, y);
     if (0 == 0)
     {
     }
     while (innovationType == NEATInnovationType.NewNeuron)
     {
         innovation.NeuronID = this.AssignNeuronID();
         break;
     }
     base.Add(innovation);
     return (this.nextNeuronID - 1L);
 }
        /// <summary>
        /// Create a new innovation.
        /// </summary>
        ///
        /// <param name="ins0">The input neuron.</param>
        /// <param name="xout">The output neuron.</param>
        /// <param name="type">The type.</param>
        public void CreateNewInnovation(long ins0, long xout,
                                        NEATInnovationType type)
        {
            var newInnovation = new NEATInnovation(ins0, xout, type,
                                                   population.AssignInnovationID());

            if (type == NEATInnovationType.NewNeuron)
            {
                newInnovation.NeuronID = AssignNeuronID();
            }

            Add(newInnovation);
        }
예제 #24
0
        /// <summary>
        /// Construct an innovation.
        /// </summary>
        ///
        /// <param name="fromNeuronID_0">The from neuron.</param>
        /// <param name="toNeuronID_1">The two neuron.</param>
        /// <param name="innovationType_2">The innovation type.</param>
        /// <param name="innovationID">The innovation id.</param>
        public NEATInnovation(long fromNeuronID_0, long toNeuronID_1,
            NEATInnovationType innovationType_2, long innovationID)
        {
            fromNeuronID = fromNeuronID_0;
            toNeuronID = toNeuronID_1;
            innovationType = innovationType_2;
            InnovationID = innovationID;

            neuronID = -1;
            splitX = 0;
            splitY = 0;
            neuronType = NEATNeuronType.None;
        }
        /// <summary>
        /// Check to see if we already have an innovation. 
        /// </summary>
        /// <param name="input">The input neuron.</param>
        /// <param name="output">The output neuron.</param>
        /// <param name="type">The type.</param>
        /// <returns>The innovation, either new or existing if found.</returns>
        public NEATInnovation CheckInnovation(long input, long output,
                NEATInnovationType type)
        {
            foreach (IInnovation i in Innovations)
            {
                NEATInnovation innovation = (NEATInnovation)i;
                if ((innovation.FromNeuronID == input)
                        && (innovation.ToNeuronID == output)
                        && (innovation.InnovationType == type))
                {
                    return innovation;
                }
            }

            return null;
        }
예제 #26
0
        /// <summary>
        /// Construct an innovation.
        /// </summary>
        ///
        /// <param name="neuronGene">The neuron gene.</param>
        /// <param name="innovationID">The innovation id.</param>
        /// <param name="neuronID_0">The neuron id.</param>
        public NEATInnovation(NEATNeuronGene neuronGene,
            long innovationID, long neuronID_0)
        {
            neuronID = neuronID_0;
            InnovationID = innovationID;
            splitX = neuronGene.SplitX;
            splitY = neuronGene.SplitY;

            neuronType = neuronGene.NeuronType;
            innovationType = NEATInnovationType.NewNeuron;
            fromNeuronID = -1;
            toNeuronID = -1;
        }
예제 #27
0
        /// <summary>
        /// Construct an innovation. 
        /// </summary>
        /// <param name="fromNeuronID">The from neuron.</param>
        /// <param name="toNeuronID">The to neuron.</param>
        /// <param name="innovationType">The innovation type.</param>
        /// <param name="innovationID">The innovation id.</param>
        /// <param name="neuronType">The neuron type.</param>
        /// <param name="x">The x coordinate.</param>
        /// <param name="y">The y coordinate.</param>
        public NEATInnovation(long fromNeuronID, long toNeuronID,
                NEATInnovationType innovationType, long innovationID,
                NEATNeuronType neuronType, double x, double y)
        {
            this.fromNeuronID = fromNeuronID;
            this.toNeuronID = toNeuronID;
            this.innovationType = innovationType;
            InnovationID = innovationID;
            this.neuronType = neuronType;
            splitX = x;
            splitY = y;

            neuronID = 0;
        }