public class genom2 { static class NN { double temperature; int depth; int[] layer; double[] weight; NN(double t, int d, int[] l, double[] w) { temperature = t; depth = d; layer = l; weight = w; } double sigmoid(double x) { return (1.0 / (1.0 + Math.pow(2.7182818, -x / temperature))); } boolean wantToSave(int pts, int old, int opp) { return evaluate(new double[] {pts, old, opp}) < 0.5; } double evaluate(double[] input) { int Weight = 0, Out = 0; double[] cell = new double[20]; for (int i = 0; i < input.length; i++) cell[i] = input[i]; for (int level = 1; level < depth; level++) { int In = Out; Out += layer[level - 1]; for (int j = 0; j < layer[level]; j++) { double s = weight[Weight++]; // bias for (int i = 0; i < layer[level - 1]; i++) s += weight[Weight++] * cell[In + i]; cell[Out + j] = sigmoid(s); } } return cell[Out]; }; } /* Das Neuronale Netz wurde offline und einem Genetischen Algorithmus, gegen Roll17 trainiert, der die Weights evolviert */ static NN net5328=new NN(0.13, 3, /*layer*/ new int[] {3, 8, 1, }, new double[] { /* in1.1 */ -373.1, /*w3_0*/ 108.8, /*w3_1*/-255.6, /*w3_2*/ -0.2, /* in1.2 */ 53.7, /*w4_0*/ 3.6, /*w4_1*/ 0.2, /*w4_2*/ -0.6, /* [...] */ /* in1.8 */ 2.3, /*w10_0*/ 5.6, /*w10_1*/ -0.1, /*w10_2*/ 49.9, /* on2.1 */ 0.1, /*w11_0*/ -0.1, /*w11_1*/ 0.1, /*w11_2*/ -7.2, /*w11_3*/424.1, /*w11_4*/ 108.8, /*w11_5*/-246.8, /*w11_6*/ -0.1, /*w11_7*/ -0.0, });