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()); }
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; }
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])); }
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])); }
/// <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); }
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); }