Пример #1
0
        public void TestEightDigitString()
        {
            var cout       = EightDigitString.ToInts(GeneticProblem.MyTestValues[0]);
            var resultCOut = new EightDigitString(cout[0], cout[1], cout[2], cout[3], cout[4], cout[5], cout[6], cout[7]);

            System.Diagnostics.Debug.WriteLine(resultCOut.ToString());
        }
Пример #2
0
        public bool IsGe(EightDigitString thisGuy)
        {
            if (string.Equals(ToString(), thisGuy.ToString()))
                return false;

            var me = EightDigitString.ToInts(this);
            var him = EightDigitString.ToInts(thisGuy);

            for (var i = 0; i < 8; i++)
            {
                if (me[i] >= him[i])
                    return true;
            }
            return false;
        }
Пример #3
0
        public IState Mutate(IState f)
        {
            var flipSomething = new Random().Next(1, 100) <= 18;

            if (!flipSomething)
            {
                return(f);
            }
            var idx = new Random().Next(1, 8);
            var val = new Random().Next(1, 10);

            var fi = EightDigitString.ToInts(f);

            fi[idx] = val;

            return(new EightDigitString(fi[0], fi[1], fi[2], fi[3], fi[4], fi[5], fi[6], fi[7]));
        }
Пример #4
0
        public IState HeelsToJesus(IState s1, IState s2)
        {
            var idx = new Random().Next(1, 8);

            var si1 = EightDigitString.ToInts(s1);
            var si2 = EightDigitString.ToInts(s2);

            var cout = new List <int>();

            for (var i = 0; i < 8; i++)
            {
                var p = i >= idx ? si2 : si1;
                cout.Add(p[i]);
            }

            return(new EightDigitString(cout[0], cout[1], cout[2], cout[3], cout[4], cout[5], cout[6], cout[7]));
        }
Пример #5
0
        /// <summary>
        /// This is just made up, the text doesn't really go into the example much beyond the diagram
        /// </summary>
        /// <param name="costUpToState1"></param>
        /// <param name="state1"></param>
        /// <param name="action"></param>
        /// <param name="state2"></param>
        /// <returns></returns>
        public double GetPathCost(double costUpToState1, IState state1, IAction action, IState state2)
        {
            var eight = state1 as EightDigitString;

            if (eight == null || eight.ToString().Length < 8)
            {
                return(int.MaxValue);
            }
            var g = EightDigitString.ToInts((IState)this.Goal);
            var s = EightDigitString.ToInts(state1);
            var d = 0.0D;

            for (var i = 0; i < g.Length; i++)
            {
                d += (g[i] - s[i]);
            }
            return(d);
        }
Пример #6
0
        public bool IsGe(EightDigitString thisGuy)
        {
            if (string.Equals(ToString(), thisGuy.ToString()))
            {
                return(false);
            }

            var me  = EightDigitString.ToInts(this);
            var him = EightDigitString.ToInts(thisGuy);

            for (var i = 0; i < 8; i++)
            {
                if (me[i] >= him[i])
                {
                    return(true);
                }
            }
            return(false);
        }
Пример #7
0
 public void TestEightDigitString()
 {
     var cout = EightDigitString.ToInts(GeneticProblem.MyTestValues[0]);
     var resultCOut = new EightDigitString(cout[0], cout[1], cout[2], cout[3], cout[4], cout[5], cout[6], cout[7]);
     System.Diagnostics.Debug.WriteLine(resultCOut.ToString());
 }