Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.44 KB | None | 0 0
  1. namespace PowerBallPredictor
  2. {
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Net;
  6. using System.IO;
  7. using Encog.Neural.Networks;
  8. using Encog.ML.Data.Basic;
  9. using Encog.Neural.Networks.Layers;
  10. using Encog.Engine.Network.Activation;
  11. using Encog.Neural.Networks.Training.Propagation.Resilient;
  12. class Result
  13. {
  14. public int V1 { get; private set; }
  15. public int V2 { get; private set; }
  16. public int V3 { get; private set; }
  17. public int V4 { get; private set; }
  18. public int V5 { get; private set; }
  19. public int V6 { get; private set; }
  20. public Result(int v1, int v2, int v3, int v4, int v5, int v6)
  21. {
  22. V1 = v1;
  23. V2 = v2;
  24. V3 = v3;
  25. V4 = v4;
  26. V5 = v5;
  27. V6 = v6;
  28. }
  29. public Result(double[] values)
  30. {
  31. V1 = (int)Math.Round(values[0]);
  32. V2 = (int)Math.Round(values[1]);
  33. V3 = (int)Math.Round(values[2]);
  34. V4 = (int)Math.Round(values[3]);
  35. V5 = (int)Math.Round(values[4]);
  36. V6 = (int)Math.Round(values[5]);
  37. }
  38. public bool IsValid()
  39. {
  40. return
  41. V1 >= 1 && V1 <= 69 &&
  42. V2 >= 1 && V2 <= 69 &&
  43. V3 >= 1 && V3 <= 69 &&
  44. V4 >= 1 && V4 <= 69 &&
  45. V5 >= 1 && V5 <= 69 &&
  46. V6 >= 1 && V6 <= 69 &&
  47. V1 != V2 &&
  48. V1 != V3 &&
  49. V1 != V4 &&
  50. V1 != V5 &&
  51. V1 != V6 &&
  52. V2 != V3 &&
  53. V2 != V4 &&
  54. V2 != V5 &&
  55. V2 != V6 &&
  56. V3 != V4 &&
  57. V3 != V5 &&
  58. V3 != V6 &&
  59. V4 != V5 &&
  60. V4 != V6 &&
  61. V5 != V6;
  62. }
  63. public bool IsOut()
  64. {
  65. return
  66. !(
  67. V1 >= 1 && V1 <= 69 &&
  68. V2 >= 1 && V2 <= 69 &&
  69. V3 >= 1 && V3 <= 69 &&
  70. V4 >= 1 && V4 <= 69 &&
  71. V5 >= 1 && V5 <= 69 &&
  72. V6 >= 1 && V6 <= 69);
  73. }
  74. public override string ToString()
  75. {
  76. return string.Format(
  77. "{0},{1},{2},{3},{4},{5}",
  78. V1, V2, V3, V4, V5, V6);
  79. }
  80. }
  81. class ListResults : List<Result> { }
  82. class Program
  83. {
  84. static void Main(string[] args)
  85. {
  86. var fileDB = @"C:ProjectsPredictordbwinnums-text.txt";
  87. try
  88. {
  89. ListResults dbl = null;
  90. if (CreateDatabases(fileDB, out dbl))
  91. {
  92. var deep = 27;
  93. var network = new BasicNetwork();
  94. network.AddLayer(
  95. new BasicLayer(null, true, 6 * deep));
  96. network.AddLayer(
  97. new BasicLayer(
  98. new ActivationSigmoid(), true, 5 * 6 * deep));
  99. network.AddLayer(
  100. new BasicLayer(
  101. new ActivationSigmoid(), true, 5 * 6 * deep));
  102. network.AddLayer(
  103. new BasicLayer(
  104. new ActivationLinear(), true, 6));
  105. network.Structure.FinalizeStructure();
  106. var learningInput = new double[deep][];
  107. for (int i = 0; i < deep; ++i)
  108. {
  109. learningInput[i] = new double[deep * 6];
  110. for (int j = 0, k = 0; j < deep; ++j)
  111. {
  112. var idx = 2 * deep - i - j;
  113. var data = dbl[idx];
  114. learningInput[i][k++] = (double)data.V1;
  115. learningInput[i][k++] = (double)data.V2;
  116. learningInput[i][k++] = (double)data.V3;
  117. learningInput[i][k++] = (double)data.V4;
  118. learningInput[i][k++] = (double)data.V5;
  119. learningInput[i][k++] = (double)data.V6;
  120. }
  121. }
  122. var learningOutput = new double[deep][];
  123. for (int i = 0; i < deep; ++i)
  124. {
  125. var idx = deep - 1 - i;
  126. var data = dbl[idx];
  127. learningOutput[i] = new double[6]
  128. {
  129. (double)data.V1,
  130. (double)data.V2,
  131. (double)data.V3,
  132. (double)data.V4,
  133. (double)data.V5,
  134. (double)data.V6
  135. };
  136. }
  137. var trainingSet = new BasicMLDataSet(
  138. learningInput,
  139. learningOutput
  140. );
  141. var train = new ResilientPropagation(
  142. network, trainingSet);
  143. train.NumThreads = Environment.ProcessorCount;
  144. START:
  145. network.Reset();
  146. RETRY:
  147. var step = 0;
  148. do
  149. {
  150. train.Iteration();
  151. Console.WriteLine("Train Error: {0}", train.Error);
  152. ++step;
  153. }
  154. while (train.Error > 0.001 && step < 20);
  155. var passedCount = 0;
  156. for (var i = 0; i < deep; ++i)
  157. {
  158. var should =
  159. new Result(learningOutput[i]);
  160. var inputn = new BasicMLData(6 * deep);
  161. Array.Copy(
  162. learningInput[i],
  163. inputn.Data,
  164. inputn.Data.Length);
  165. var comput =
  166. new Result(
  167. ((BasicMLData)network.
  168. Compute(inputn)).Data);
  169. var passed = should.ToString() == comput.ToString();
  170. if (passed)
  171. {
  172. Console.ForegroundColor = ConsoleColor.Green;
  173. ++passedCount;
  174. }
  175. else
  176. {
  177. Console.ForegroundColor = ConsoleColor.Red;
  178. }
  179. Console.WriteLine("{0} {1} {2} {3}",
  180. should.ToString().PadLeft(17, ' '),
  181. passed ? "==" : "!=",
  182. comput.ToString().PadRight(17, ' '),
  183. passed ? "PASS" : "FAIL");
  184. Console.ResetColor();
  185. }
  186. var input = new BasicMLData(6 * deep);
  187. for (int i = 0, k = 0; i < deep; ++i)
  188. {
  189. var idx = deep - 1 - i;
  190. var data = dbl[idx];
  191. input.Data[k++] = (double)data.V1;
  192. input.Data[k++] = (double)data.V2;
  193. input.Data[k++] = (double)data.V3;
  194. input.Data[k++] = (double)data.V4;
  195. input.Data[k++] = (double)data.V5;
  196. input.Data[k++] = (double)data.V6;
  197. }
  198. var perfect = dbl[0];
  199. var predict = new Result(
  200. ((BasicMLData)network.Compute(input)).Data);
  201. Console.ForegroundColor = ConsoleColor.Yellow;
  202. Console.WriteLine("Predict: {0}", predict);
  203. Console.ResetColor();
  204. if (predict.IsOut())
  205. goto START;
  206. if ((double)passedCount < (deep * (double)3 / (double)10) ||
  207. !predict.IsValid())
  208. goto RETRY;
  209. Console.WriteLine("Press any key for close...");
  210. Console.ReadKey(true);
  211. }
  212. }
  213. catch (Exception exception)
  214. {
  215. Console.WriteLine(exception.ToString());
  216. }
  217. }
  218. static bool CreateDatabases(
  219. string fileDB,
  220. out ListResults dbl)
  221. {
  222. dbl = new ListResults();
  223. using (var reader = File.OpenText(fileDB))
  224. {
  225. var line = string.Empty;
  226. var separator = new string[] { " " };
  227. while ((line = reader.ReadLine()) != null)
  228. {
  229. if (line == "Draw Date WB1 WB2 WB3 WB4 WB5 PB PP") continue;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement