using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program { static private double[,] v, dv = new double[3, 5]; static private double[,] w = new double[5, 2], dw = new double[4, 1]; static private double[] x = new double[2]; static private double[,] tx = new double[3, 4]; static private double[] z_in = new double[5], z = new double[5], dz_in = new double[5], dz = new double[5]; static private double[] t = new double[4]; static private double[] y_in = new double[2], y = new double[2], dy = new double[2]; static private double alfa, tse, err; static private int i, j, k, m, n, p, repx, epoch; static private int maxepoch = 3000; static private int juminput = 4; static void Main(string[] args) { v = new double[3, 5]; v[0, 1] = -0.3378; v[1, 1] = 0.1970; v[2, 1] = 0.3099; v[0, 2] = 0.2771; v[1, 2] = 0.3191; v[2, 2] = 0.1904; v[0, 3] = 0.2859; v[1, 3] = -0.1448; v[2, 3] = -0.0347; v[0, 4] = -0.3329; v[1, 4] = 0.3594; v[2, 4] = -0.4861; w[0, 1] = -0.1401; w[1, 1] = 0.4919; w[2, 1] = -0.2913; w[3, 1] = -0.3979; w[4, 1] = 0.3581; alfa = 0.2; tx[1, 0] = 1; tx[2, 0] = 1; t[0] = 0; tx[1, 1] = 1; tx[2, 1] = 0; t[1] = 1; tx[1, 2] = 0; tx[2, 2] = 1; t[2] = 1; tx[1, 3] = 0; tx[2, 3] = 0; t[3] = 0; n = 2; p = 4; m = 1; epoch = 0; tse = 1; while ((epoch < maxepoch) && (tse > 0.05)) { err = 0; for (repx = 0; repx < juminput - 1; repx++) { // { Feed Forward } for (i = 1; i < n; i++) { x[i] = tx[i, repx]; } for (j = 1; j < p; j++) { z_in[j] = v[0, j]; for (i = 1; i < n; i++) { z_in[j] = z_in[j] + x[i] * v[i, j]; } z[j] = 1 / (1 + Math.Exp(-z_in[j])); } for (k = 1; k < m; k++) { y_in[k] = w[0, k]; for (j = 1; j < p; j++) { y_in[k] = y_in[k] + z[j] * w[j, k]; } y[k] = 1 / (1 + Math.Exp(-y_in[k])); } // { Backpropagation of error } for (k = 1; k < m; k++) { dy[k] = (t[repx] - y[k]) * (y[k] * (1 - (y[k]))); for (j = 1; j < p; j++) { dw[j, k] = alfa * dy[k] * z[j]; } dw[0, k] = alfa * dy[k]; } for (j = 1; j < p; j++) { for (k = 1; k < m; k++) { dz_in[j] = dy[k] * w[j, k]; } dz[j] = dz_in[j] * (z[j] * (1 - z[j])); for (i = 1; i < n; i++) { dv[i, j] = alfa * dz[j] * x[i]; } dv[0, j] = alfa * dz[j]; } // { Update nilai weight dan bias } for (k = 1; k < m; k++) { for (j = 1; j < p; j++) { w[j, k] = w[j, k] + dw[j, k]; } } for (j = 1; j < p; j++) { for (i = 1; i < n; i++) { v[i, j] = v[i, j] + dv[i, j]; } } err = err + Math.Sqrt(t[repx] - y[1]); } tse = err; epoch++; } Console.WriteLine("Nilai TSE : " + tse); Console.WriteLine("Jumlah Epoch : " + epoch); //readkey; Console.ReadLine(); } } }