All pastes #487021 Raw Edit

Stuff

public text v1 · immutable
·published 2007-05-14 06:31 UTC
rendered paste body
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();
        }
    }
}