rendered paste bodyusing 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();
}
}
}