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 :
mas boleh minta file projectnya gak mas? kirim ke email saya cheen.baeq@gmail.com
BalasHapuscoba ke email ini mas, cheen_baeq@ymail.com.. ku tunggu ya mas.. makasih ya mas..
Hapusgan saya juga minta projectnya boleh gk?
BalasHapuskirim ke emai : amie_laruku@yahoo.co.id
gan ane boleh minta projec nya ga gan ? buat pembelajaran , kalau boleh tolong kirim ke email : muhalisurad@gmail.com
BalasHapusgan sya boleh mnta jg krim ke email deniariyanto43@yahoo.co.id,,,
BalasHapusterimakasih gan
boleh minta program nya ?
BalasHapusklo boleh kirim ke : agnesindahputri@yahoo.com
boleh minta source nya mas ?
BalasHapussaya mau pelajari lagi tentang jst nya >.<
surya_crazyboy@rocketmail.com
gan minta file projek,na donk,..
BalasHapushack711@ymil.com
minta file projek'y dong gan
BalasHapusfdgd_asd@yahoo.com
makasih
gan, bisa minta file project nya gak? buat bahan presentasi di kampus
BalasHapussetiadi.dharmawan@yahoo.com
Terima Kasih
Maaf ya agan2 sekalian, saya jarang buka blog akhir2 ini, Insya Allah dlm waktu dekat saya akan mengedit postingan agar lebih mudah dipahami...
BalasHapusTerimakasih
boleh minta file project nya gak? efendi_3@yahoo.com
HapusMakasih
Aku juga minta Projectnya Boss
BalasHapusplease
bilter.panjaitan@gmail.com
gan kirim projectnya donk! please gan.
BalasHapussentana_deni@yahoo.com
keren gan, yang backpropagasi ada gak ya.?
BalasHapusKren boleh mitak projek nya ngak bang untuk belajar2 kalau boleh tolong kirim ke emil saya robertobelani97@gmail.com
BalasHapusmas bisa mintak projek nya untuk belajar
BalasHapuskalau boleh kirim ke email sabriuna123@gmail.com
mas bisa mintak projek nya untuk belajar
BalasHapuskalau boleh kirim ke email pandini470@gmail.com
Mas boleh minta projectnya engga .kalau boleh tolongya ke rezawatrisna@gmail.com
BalasHapus