Contoh Program Delta Rule C# Visual Studio

Contoh Program Delta Rula C# Visual Studio

Bismillah...
Setelah kemaren saya ngepost tentang FLC (Fuzzy Logic Control), pada kesempatan kali ini sya akan share salah satu contoh dari ANN (Artificiall Neural Network) atau JST (Jaringan Syaraf Tiruan)...
singkat kata, JST adalah sebuah program yang meniru jaringan syaraf manusia untuk mengenali suatu pola. Lebih jelasnya tentang JST, silakan searching sendiri yaa... karena disini sya cuman mau ngeshare contoh programnya aja...
untuk membuat program JST, ada beberapa metode yang bisa digunakan, contohnya ; Metode McCulloch, Metode Hebbian (Hebb), Metode Perceptron, Metode Delta Rule, Metode Backpropagation, dll...

nah,,, pada kesempatan kali ini sya akan share contoh program Delta Rule yang saya buat dengan menggunakan Visual Studio 2012 dengan bahasa C# (C Sharp)...

ini dia screenshootnya..


teruss... ini dia source code lengkapnya :


namespace Delta_rule_ardi_v2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            float[] x1 = new float[4] { 0, 0, 1, 1 };
            float[] x2 = new float[4] { 0, 1, 0, 1 };
            int[] b = new int[4] { 1, 1, 1, 1 };
            int[] T = new int[4];
            int[] Y = new int[4];
            float[] jml = new float[4];
            float[] delta=new float[4];
            float[] dw1 = new float[4];
            float[] dw2 = new float[4];
            float[] w1 = new float[4];
            float[] w2 = new float[4];
            float[] db = new float[4];
            float alpha, treshold, w1_awal, w2_awal;
            int i, epoh=1;
            w1_awal = float.Parse(in_w1.Text.ToString());
            w2_awal = float.Parse(in_w2.Text.ToString());
            alpha = float.Parse(in_alpha.Text.ToString());
            treshold = float.Parse(in_treshold.Text.ToString());

            if ((and.Checked) || (or.Checked))
            {
            ulangi:
                if (and.Checked)
                {
                    T[0] = 0; T[1] = 0; T[2] = 0; T[3] = 1; // Target AND
                }
                if (or.Checked)
                {
                    T[0] = 0; T[1] = 1; T[2] = 1; T[3] = 1; // Target OR
                }
                for (i = 0; i < 4; i++)
                {
                    jml[i] = x1[i] * w1_awal + x2[i] * w2_awal;
                    Y[i] = rumus.aktivasi(jml[i], treshold);
                    delta[i] = rumus.hitung_delta(T[i], Y[i]);
                    dw1[i] = rumus.hitung_dw(alpha, x1[i], delta[i]);
                    dw2[i] = rumus.hitung_dw(alpha, x2[i], delta[i]);
                    w1[i] = rumus.hitung_w(w1_awal, dw1[i]);
                    w2[i] = rumus.hitung_w(w2_awal, dw2[i]);
                    w1_awal = w1[i];
                    w2_awal = w2[i];
                }
                for (i = 0; i < 4; i++)
                {
                    if (Y[i] != T[i])
                    {
                        epoh++;
                        goto ulangi;
                    }
                }
                tampil_w1.Text = w1[3].ToString();
                tampil_w2.Text = w2[3].ToString();
                tampil_epoh.Text = epoh.ToString();
            }
            if (xor.Checked)
            {              
                // Mencari Z1
                {
                cari_z1:
                    x2[0] = 1; x2[1] = 0; x2[2] = 1; x2[3] = 0;
                    T[0] = 0; T[1] = 0; T[2] = 1; T[3] = 0;
                    for (i = 0; i < 4; i++)
                    {
                        jml[i] = rumus.jml(x1[i], x2[i], w1_awal, w2_awal);
                        Y[i] = rumus.aktivasi(jml[i], treshold);
                        delta[i] = rumus.hitung_delta(T[i], Y[i]);
                        dw1[i] = rumus.hitung_dw(alpha, x1[i], delta[i]);
                        dw2[i] = rumus.hitung_dw(alpha, x2[i], delta[i]);
                        w1[i] = rumus.hitung_w(w1_awal, dw1[i]);
                        w2[i] = rumus.hitung_w(w2_awal, dw2[i]);
                        w1_awal = w1[i];
                        w2_awal = w2[i];
                    }
                    for (i = 0; i < 4; i++)
                    {
                        if (Y[i] != T[i])
                        {
                            goto cari_z1;
                        }
                    }
                    tampil_w1.Text = w1[3].ToString();
                    tampil_w2.Text = w2[3].ToString();
                }
                //Mencari Z2
                {
                cari_z2:
                    x1[0] = 1; x1[1] = 1; x1[2] = 0; x1[3] = 0;
                    T[0] = 0; T[1] = 1; T[2] = 0; T[3] = 0;
                    for (i = 0; i < 4; i++)
                    {
                        jml[i] = rumus.jml(x1[i], x2[i], w1_awal, w2_awal);
                        Y[i] = rumus.aktivasi(jml[i], treshold);
                        delta[i] = rumus.hitung_delta(T[i], Y[i]);
                        dw1[i] = rumus.hitung_dw(alpha, x1[i], delta[i]);
                        dw2[i] = rumus.hitung_dw(alpha, x2[i], delta[i]);
                        w1[i] = rumus.hitung_w(w1_awal, dw1[i]);
                        w2[i] = rumus.hitung_w(w2_awal, dw2[i]);
                        w1_awal = w1[i];
                        w2_awal = w2[i];
                    }
                    for (i = 0; i < 4; i++)
                    {
                        if (Y[i] != T[i])
                        {
                            goto cari_z2;
                        }
                    }
                    tampil_ww1.Text = w1[3].ToString();
                    tampil_ww2.Text = w2[3].ToString();
                }
                //Y
                {
                cari_Y:
                    x1[0] = 0; x1[1] = 0; x1[2] = 1; x1[3] = 0; //x1=Tagret Z1
                    x2[0] = 0; x2[1] = 1; x2[2] = 0; x2[3] = 0; //x2=Target Z2
                    T[0] = 0; T[1] = 1; T[2] = 1; T[3] = 0; //Target XOR
                    for (i = 0; i < 4; i++)
                    {
                        jml[i] = rumus.jml(x1[i], x2[i], w1_awal, w2_awal);
                        Y[i] = rumus.aktivasi(jml[i], treshold);
                        delta[i] = rumus.hitung_delta(T[i], Y[i]);
                        dw1[i] = rumus.hitung_dw(alpha, x1[i], delta[i]);
                        dw2[i] = rumus.hitung_dw(alpha, x2[i], delta[i]);
                        w1[i] = rumus.hitung_w(w1_awal, dw1[i]);
                        w2[i] = rumus.hitung_w(w2_awal, dw2[i]);
                        w1_awal = w1[i];
                        w2_awal = w2[i];
                    }
                    for (i = 0; i < 4; i++)
                    {
                        if (Y[i] != T[i])
                        {
                            epoh++;
                            goto cari_Y;
                        }
                    }
                    tampil_v1.Text = w1[3].ToString();
                    tampil_v2.Text = w2[3].ToString();
                    tampil_epoh.Text = epoh.ToString();
                }
            }
        }
        private void button_uji_Click(object sender, EventArgs e)
        {
            float w1, w2, x1, x2, v1, v2, jml, uji_Y, treshold;
            x1 = float.Parse(in_x1.SelectedItem.ToString());
            x2 = float.Parse(in_x2.SelectedItem.ToString());
            treshold = float.Parse(in_treshold.Text.ToString());
            if ((and.Checked) || (or.Checked))  // Menguji bobot aktivasi (w1 & w2) pada AND dan OR
            {
                w1 = float.Parse(tampil_w1.Text.ToString());
                w2 = float.Parse(tampil_w2.Text.ToString());              
                jml = rumus.jml(x1, x2, w1, w2);
                uji_Y = rumus.aktivasi(jml, treshold);
                uji_w1.Text = w1.ToString();
                uji_w2.Text = w2.ToString();
                hasil_uji_jml.Text = jml.ToString();
                hasil_uji_y.Text = uji_Y.ToString();
            }
            if (xor.Checked) // Menguji bobot aktivasi (v1 & v2) pada XOR
            {
                label14.Text = "V1 :";
                label15.Text = "v2 :";
                v1 = float.Parse(tampil_v1.Text.ToString());
                v2 = float.Parse(tampil_v2.Text.ToString());
                if ((x1 == 1) && (x2 == 1))
                { x1 = 0; x2 = 0; }
                jml = rumus.jml(x1, x2, v1, v2);
                uji_Y = rumus.aktivasi(jml, treshold);
                uji_w1.Text = v1.ToString();
                uji_w2.Text = v2.ToString();
                hasil_uji_jml.Text = jml.ToString();
                hasil_uji_y.Text = uji_Y.ToString();
            }
        }
        private void and_CheckedChanged(object sender, EventArgs e) //Tampilan jika AND dipilih
        {
            label9.Text = "0    1    0";
            label10.Text = "1    0    0";
            label11.Text = "1    1    1";
            labelw11.Text = "W1 :";
            labelw12.Text = "W2 :";
            labelw21.Visible = false; tampil_v2.Visible = false;
            labelw22.Visible = false; tampil_ww1.Visible = false;
            tampil_v1.Visible = false; tampil_ww2.Visible = false;
            labelv1.Visible = false; labelv2.Visible = false;
            label14.Text = "W1 :"; label15.Text = "W2 :";
        }
        private void or_CheckedChanged(object sender, EventArgs e) //Tampilan jika OR dipilih
        {
            label9.Text = "0    1    1";
            label10.Text = "1    0    1";
            label11.Text = "1    1    1";
            labelw11.Text = "W1 :";
            labelw12.Text = "W2 :";
            labelw21.Visible = false; tampil_v2.Visible = false;
            labelw22.Visible = false; tampil_ww1.Visible = false;
            tampil_v1.Visible = false; tampil_ww2.Visible = false;
            labelv1.Visible = false; labelv2.Visible = false;
            label14.Text = "W1 :"; label15.Text = "W2 :";
        }
        private void xor_CheckedChanged(object sender, EventArgs e) //Tampilan jika XOR dipilih
        {
            label9.Text = "0    1    1";
            label10.Text = "1    0    1";
            label11.Text = "1    1    0";
            labelw21.Visible = true; tampil_v2.Visible = true;
            labelw22.Visible = true; tampil_ww1.Visible = true;
            tampil_v1.Visible = true; tampil_ww2.Visible = true;
            labelv1.Visible = true; labelv2.Visible = true;
            labelw11.Text = "W11 :"; labelw12.Text = "W12 :";
            labelw21.Text = "W21 :"; labelw22.Text = "W22 :";
            label14.Text = "V1 :"; label15.Text = "V2 :";
        }
    }
}
public static class rumus
{
    public static float jml(float x1, float x2, float w1, float w2) //Rumus Jumlah
    {
        float jml;
        jml = x1 * w1 + x2 * w2;
        return jml;
    }
    public static int aktivasi(float jml, float treshold) //Rumus Fungsi Aktivasi
    {
        if (jml >= treshold)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
    public static float hitung_delta(float T, float Y) //Rumus Mencari delta
    {
        float delta;
        delta = T - Y;
        return delta;
    }
    public static float hitung_dw(float alpha, float x1, float delta) //Rumus Mencari dw
    {
        float hitung_dw;
        hitung_dw = alpha * x1 * delta;
        return hitung_dw;
    }
    public static float hitung_w(float w_awal, float dw) //Rumus Mencari w
    {
        float w;
        w = w_awal + dw;
        return w;
    }
}
Selesai
Semoga Bermanfaat

source code lengkap sudah saya tuliskan diatas, jadi ga perlu minta dikirim email ya :D


Recent Post :

19 komentar:

  1. mas boleh minta file projectnya gak mas? kirim ke email saya cheen.baeq@gmail.com

    BalasHapus
    Balasan
    1. coba ke email ini mas, cheen_baeq@ymail.com.. ku tunggu ya mas.. makasih ya mas..

      Hapus
  2. gan saya juga minta projectnya boleh gk?
    kirim ke emai : amie_laruku@yahoo.co.id

    BalasHapus
  3. gan ane boleh minta projec nya ga gan ? buat pembelajaran , kalau boleh tolong kirim ke email : muhalisurad@gmail.com

    BalasHapus
  4. gan sya boleh mnta jg krim ke email deniariyanto43@yahoo.co.id,,,

    terimakasih gan

    BalasHapus
  5. boleh minta program nya ?
    klo boleh kirim ke : agnesindahputri@yahoo.com

    BalasHapus
  6. boleh minta source nya mas ?
    saya mau pelajari lagi tentang jst nya >.<

    surya_crazyboy@rocketmail.com

    BalasHapus
  7. gan minta file projek,na donk,..

    hack711@ymil.com

    BalasHapus
  8. minta file projek'y dong gan
    fdgd_asd@yahoo.com

    makasih

    BalasHapus
  9. gan, bisa minta file project nya gak? buat bahan presentasi di kampus
    setiadi.dharmawan@yahoo.com

    Terima Kasih

    BalasHapus
  10. Maaf ya agan2 sekalian, saya jarang buka blog akhir2 ini, Insya Allah dlm waktu dekat saya akan mengedit postingan agar lebih mudah dipahami...
    Terimakasih

    BalasHapus
    Balasan
    1. boleh minta file project nya gak? efendi_3@yahoo.com
      Makasih

      Hapus
  11. Aku juga minta Projectnya Boss
    please
    bilter.panjaitan@gmail.com

    BalasHapus
  12. gan kirim projectnya donk! please gan.
    sentana_deni@yahoo.com

    BalasHapus
  13. keren gan, yang backpropagasi ada gak ya.?

    BalasHapus
  14. Kren boleh mitak projek nya ngak bang untuk belajar2 kalau boleh tolong kirim ke emil saya robertobelani97@gmail.com

    BalasHapus
  15. mas bisa mintak projek nya untuk belajar
    kalau boleh kirim ke email sabriuna123@gmail.com

    BalasHapus
  16. mas bisa mintak projek nya untuk belajar
    kalau boleh kirim ke email pandini470@gmail.com

    BalasHapus
  17. Mas boleh minta projectnya engga .kalau boleh tolongya ke rezawatrisna@gmail.com

    BalasHapus