Implenentasi Program Kecerdasan buatan Back Propagasi X Y
1. Tampilan Layout
2. Program Visual Basic
using System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Linq;
using
System.Text;
using
System.Windows.Forms;
{
public partial class Form1 : Form
{
double
W1, W2, W3, W4, B, X1V1;
double
X1V2, X1V3, X1V4, X2V1, X2V2, X2V3, X2V4;
double
bV1, bV2, bV3, bV4, a, Yin, q;
double
Zin1, Zin2, Zin3, Zin4, Z1, Z2, Z3, Z4;
double
YN, Delta, DW1, DW2, DW3, DW4, DB, Din1, Din2, Din3, Din4;
double
D1, D2, D3, D4, Error1, error;
double dX1V1, dX1V2, dX1V3, dX1V4;
double
dX2V1, dX2V2, dX2V3, dX2V4, dB1, dB2,
dB3, dB4;
double[] X1 = {
0, 0, 0, 0 };
double[] X2 = {
0, 0, 0, 0 };
double[] T = { 0,
0, 0, 0 };
double[] Y = { 0,
0, 0, 0 };
double[] Yout = {
0, 0, 0, 0 };
public Form1()
{
InitializeComponent();
}
private void Random_Click(object
sender, EventArgs e)
{
Random n = new Random();
for (int i=0;i<1000;i++)
{
W1 = n.Next(-10000, 10000);
W1 = W1 / 10000;
w1awal.Text =
Convert.ToString(W1);
W2 = n.Next(-10000, 10000);
W2 = W2 / 10000;
w2awal.Text =
Convert.ToString(W2);
W3 = n.Next(-10000, 10000);
W3 = W3 / 10000;
w3awal.Text =
Convert.ToString(W3);
W4 = n.Next(-10000, 10000);
W4 = W4 / 10000;
w4awal.Text =
Convert.ToString(W4);
B = n.Next(-10000, 10000);
B = B / 10000;
BB.Text = Convert.ToString(B);
X1V1 = n.Next(-10000, 10000);
X1V1 = X1V1 / 10000;
x1v1awal.Text =
Convert.ToString(X1V1);
X1V2 = n.Next(-10000, 10000);
X1V2 = X1V2 / 10000;
x1v2awal.Text =
Convert.ToString(X1V2);
X1V3 = n.Next(-10000, 10000);
X1V3 = X1V3 / 10000;
x1v3awal.Text =
Convert.ToString(X1V3);
X1V4 = n.Next(-10000, 10000);
X1V2 = X1V2 / 10000;
x1v4awal.Text =
Convert.ToString(X1V4);
X2V1 = n.Next(-10000, 10000);
X2V1 = X2V1 / 10000;
x2v1awal.Text =
Convert.ToString(X2V1);
X2V2 = n.Next(-10000, 10000);
X2V2 = X2V2 / 10000;
x2v2awal.Text =
Convert.ToString(X2V2);
X2V3 = n.Next(-10000, 10000);
X2V3 = X2V3 / 10000;
x2v3awal.Text =
Convert.ToString(X2V3);
X2V4 = n.Next(-10000, 10000);
X2V4 = X2V4 / 10000;
x2v4awal.Text = Convert.ToString(X2V4);
bV1 = n.Next(-10000, 10000);
bV1 = bV1 / 10000;
bv1awal.Text =
Convert.ToString(bV1);
bV2 = n.Next(-10000, 10000);
bV2 = bV2 / 10000;
bv2awal.Text =
Convert.ToString(bV2);
bV3 = n.Next(-10000, 10000);
bV3 = bV3 / 10000;
bv3awal.Text =
Convert.ToString(bV3);
bV4 = n.Next(-10000, 10000);
bV4 = bV4 / 10000;
bv4awal.Text = Convert.ToString(bV4);
}
}
private void Calculate_Click(object
sender, EventArgs e)
{
q = 0;
X1[0] = double.Parse(in_x11.Text);
X1[1] = double.Parse(in_x12.Text);
X1[2] = double.Parse(in_x13.Text);
X1[3] = double.Parse(in_x14.Text);
X2[0] = double.Parse(in_x21.Text);
X2[1] = double.Parse(in_x22.Text);
X2[2] = double.Parse(in_x23.Text);
X2[3] = double.Parse(in_x24.Text);
T[0] = double.Parse(in_t1.Text);
T[1] = double.Parse(in_t2.Text);
T[2] = double.Parse(in_t3.Text);
T[3] = double.Parse(in_t4.Text);
do
{
q++;
for (int i = 0; i < 4; i++)
{
Zin1 = bV1 + X1[i] * X1V1 +
X2[i] * X2V1;
Zin2 = bV2 + X1[i] * X1V2 +
X2[i] * X2V2;
Zin3 = bV3 + X1[i] * X1V3 +
X2[i] * X2V3;
Zin4 = bV4 + X1[i] * X1V4 +
X2[i] * X2V4;
Z1 = 1 / (1 +
(Math.Pow(2.7, -Zin1)));
Z2 = 1 / (1 +
(Math.Pow(2.7, -Zin2)));
Z3 = 1 / (1 +
(Math.Pow(2.7, -Zin3)));
Z4 = 1 / (1 +
(Math.Pow(2.7, -Zin4)));
YN = B + Z1 * W1 + Z2 * W2
+ Z3 * W3 + Z4 * W4;
Y[i] = 1 / (1 +
(Math.Pow(2.7, -YN)));
Error1 = T[i] - Y[i];
error = Math.Pow(Er, 2);
Delta = Er * (1 / (1 +
(Math.Pow(2.7, -YN)))) * (1 - (1 / (1 + (Math.Pow(2.7, -YN)))));
DW1 = a / 10 * Delta * Z1;
DW2 = a / 10 * Delta * Z2;
DW3 = a / 10 * Delta * Z3;
DW4 = a / 10 * Delta * Z4;
DB = a / 10 * Delta;
Din1 = Delta * W1;
Din2 = Delta * W2;
Din3 = Delta * W3;
Din4 = Delta * W4;
D1 = Din1 * Z1 * (1 - Z1);
D2 = Din2 * Z2 * (1 - Z2);
D3 = Din3 * Z3 * (1 - Z3);
D4 = Din4 * Z4 * (1 - Z4);
dX1V1 = a / 10 * D1 * X1[i];
dX1V2 = a / 10 * D2 *
X1[i];
dX1V3 = a / 10 * D3 *
X1[i];
dX1V4 = a / 10 * D4 *
X1[i];
dX2V1 = a / 10 * D1 *
X1[i];
dX2V2 = a / 10 * D2 *
X1[i];
dX2V3 = a / 10 * D3 *
X1[i];
dX2V4 = a / 10 * D4 *
X1[i];
dB1 = a / 10 * D1;
dB2 = a / 10 * D2;
dB3 = a / 10 * D3;
dB4 = a / 10 * D4;
X1V1 = X1V1 + dX1V1;
X1V2 = X1V2 + dX1V2;
X1V3 = X1V3 + dX1V3;
X1V4 = X1V4 + dX1V4;
X2V1 = X2V1 + dX2V1;
X2V2 = X2V2 + dX2V2;
X2V3 = X2V3 + dX2V3;
X2V4 = X2V4 + dX2V4;
bV1 = bV1 + dB1;
bV2 = bV2 + dB2;
bV3 = bV3 + dB3;
bV4 = bV4 + dB4;
W1 = W1 + DW1;
W2 = W2 + DW2;
W3 = W3 + DW3;
W4 = W4 + DW4;
B = B + DB;
Yin = B + Z1 * W1 + Z2 * W2
+ Z3 * W3 + Z4 * W4;
Y[i] = 1 / (1 +
(Math.Pow(2.7, -Yin)));
}
x1v1akhir.Text = Convert.ToString(X1V1);
x1v2akhir.Text =
Convert.ToString(X1V2);
x1v3akhir.Text =
Convert.ToString(X1V3);
x1v4akhir.Text =
Convert.ToString(X1V4);
x2v1akhir.Text =
Convert.ToString(X2V1);
x2v2akhir.Text =
Convert.ToString(X2V2);
x2v3akhir.Text =
Convert.ToString(X2V3);
x2v4akhir.Text =
Convert.ToString(X2V4);
b1akhir.Text =
Convert.ToString(bV1);
b2akhir.Text =
Convert.ToString(bV2);
b3akhir.Text =
Convert.ToString(bV3);
b4akhir.Text = Convert.ToString(bV4);
w1akhir.Text =
Convert.ToString(W1);
w2akhir.Text =
Convert.ToString(W2);
w3akhir.Text =
Convert.ToString(W3);
w4akhir.Text = Convert.ToString(W4);
BA.Text = Convert.ToString(B);
//Err.Text =
Convert.ToString(Er);
Error.Text =
Convert.ToString(sqEr);
} while ( sqEr > 0.01);
Epoch.Text = Convert.ToString(q);
}
private void Check_Click(object sender,
EventArgs e)
{
for (int i = 0; i < 4; i++)
{
if (Y[i] >= 0.5)
{
Yout[i] = 1;
}
else Yout[i] = 0;
}
hasil_y1.Text =
Convert.ToString(Y[0]);
hasil_y2.Text =
Convert.ToString(Y[1]);
hasil_y3.Text =
Convert.ToString(Y[2]);
hasil_y4.Text =
Convert.ToString(Y[3]);
hasil_yo1.Text =
Convert.ToString(Yout[0]);
hasil_yo2.Text =
Convert.ToString(Yout[1]);
hasil_yo3.Text =
Convert.ToString(Yout[2]);
hasil_yo4.Text =
Convert.ToString(Yout[3]);
}
private void Reset_Click(object sender,
EventArgs e)
{
foreach (Control tx in
this.Controls)
{
if (tx is TextBox) {
((TextBox)tx).Clear(); }
}
foreach (Control tx in
groupBox1.Controls)
{
if (tx is TextBox) {
((TextBox)tx).Clear(); }
}
foreach (Control tx in
groupBox2.Controls)
{
if (tx is TextBox) {
((TextBox)tx).Clear(); }
}
foreach (Control tx in groupBox3.Controls)
{
if (tx is TextBox) {
((TextBox)tx).Clear(); }
}
foreach (Control tx in
groupBox4.Controls)
{
if (tx is TextBox) {
((TextBox)tx).Clear(); }
}
foreach (Control tb in this.Controls)
{
if (tb is TrackBar)
{
((TrackBar)tb).Value = 1;
}
} }
private void trackBar1_Scroll(object
sender, EventArgs e)
{
a = Alpha1.Value;
Alp.Text = Convert.ToString(a /
10);
}
private void tombol5_exit_Click(object
sender, EventArgs e)
{
this.Close();
}
}}
NB : Jika ingin program mentah silahkan kirim pesan
Teori Kecerdasan Buatan