Anda di halaman 1dari 6

PRAKTIKUM 1

McCULLOCH & PITTS


I.

II.

Tujuan
Mampu membuat aplikasi logika AND, OR dan XOR dengan 3 input
Dasar Teori
Jaringan syaraf tiruan sederhana pertama kali diperkenalkan oleh McCulloch dan
Pitts di tahun 1943. McCulloch dan Pitts menyimpulkan bahwa kombinasi beberapa
neuron sederhana menjadi sebuah sistem neural akan meningkatkan kemampuan
komputasinya. Bobot dalam jaringan yang diusulkan oleh McCulloch dan Pitts diatur
untuk melakukan fungsi logika sederhana. Fungsi aktivasi yang dipakai adalah fungsi
threshold.
Jaringan syaraf tiruan dikembangkan berdasarkan model matematis McCulloch-Pitts
adalah sebagai berikut:
1. Informasi diproses oleh elemen-elemen sederhana yang disebut neuron
2. Sinyal-sinyal yang dilewatkan antara neuron saling berhubungan
3. Setiap sambungan antara dua neuron ada bobotnya masing-masing yang akan
mengalikan sinyal yang ditransmisikan
4. Tiap neuron memiliki fungsi aktivasi yang akan menentukan besaran keluaran
Neuron McCulloch dan Pitts sangat sederhana, hanya menggunakan dua state saja
seperti halnya on dan off sehingga output dari neuron tersebut adalah bilangan biner.
Output dari satu neuron tidak dapat dihubungkan dengan output dari neuron lain
namun dapat dicabangkan ke input neuron itu atau berakhir pada neuron itu sendiri.
Terdapat dua macam input yang dikenal dalam sistim neuron ini yaitu excitatory dan
inhibitory. Input tersebut dapat berjumlah banyak pada satu neuron. Neuron akan on
(firing) atau off (quite) tergantung dari threshold yang dimiliki neuron itu. Berikut
adalah asumsi yang dibuat oleh McCulloch dan Pitts adalah :
1. Aktivasi neuron adalah biner. Pada setiap step waktu diskrit, ketika neuron
fires aktivasi adalah 1, sedangkan saat quite aktivasi adalah 0.
2. Sejumlah synaptic neuron dengan bobot tetap harus tereksitasi dalam tiap step
waktu diskrit dan jumlah ini tergantung dari apapun aktifitas sebelumnya.
3. Hanya ada satu delay di dalam sistim syaraf yaitu delay synaptic.
4. Aktivitas sinapsis inhibitory nonzero apapun akan terhindarkan dari eksitasi
neuron dalam step waktu diskrit.
5. Struktur jaringan tidak berubah terhadap waktu

n excitatory inputs dan m inhibitory inputs


Gambar. Struktur Jaringan McCulloch dan Pitts
Koneksi dari x1 ke xn adalah input excitatory karena bobot w synaptic-nya
bernilai positif. Sedangkan koneksi Xn+1 hingga Xn+m merupakan input inhibitory
sebab bobot -c bertanda negatif. Pada saat satu step waktu diskrit, sinyal akan melalui
input neuron dan status neuron output y pada saat k ditentukan oleh status neuron
input pada saat k-1. Sinyal input total yang diterima adalah u dan jika u maka
output neuron y = 1.
n

u ( k +1 )= wi xi ( k )
i =1

dimana y=1 untuk u dan y=0 untuk u<


III.

Percobaan
Source Code:
int w1=1, w2=1, w3=1, th=1, i=0, j, k=0, u, tempx1=0, tempx2=0, tempx3=0, tempy=0;
int w11,w12,w13,w21,w22,w23,w31,w32,w33,w41,w42,w43;
int th1,th2,th3,th4,th5;int u1 ,u2 ,u3 ,u4 , u5;int y_1 ,y2 ,y3,y4,y5[8];
int x1[8]={0,0,0,0,1,1,1,1};
int x2[8]={0,0,1,1,0,0,1,1};
int x3[8]={0,1,0,1,0,1,0,1};
int y [8];
char temp[100];
//OR
void CPraktikum1Dlg::OnRadio1() {
gate=1;w1=1,w2=1,w3=1,th=1;
}
//AND
void CPraktikum1Dlg::OnRadio2() {
gate=2;w1=1,w2=1,w3=1,th=3;
}
//XOR
void CPraktikum1Dlg::OnRadio3() {
gate=3;
w11=2;w12=-1;w13=-1;w21=-1;w22=2;w23=-2;w31=-1;w32=1;w33=2;w41=1;w42=1;w43=1;
th1=2;th2=2;th3=2;th4=3;th5=2;
}

void CPraktikum1Dlg::OnTimer(UINT nIDEvent) {


UpdateData(1);
m_chart.GetSeries(4).AddXY(0,9," ",RGB(0,0,0));
m_chart.GetSeries(5).AddXY(1,0," ",RGB(0,0,0));
if(gate==1||gate==2){//AND | OR
for(i=0;i<8;i++){
u=(x1[i]*w1)+(x2[i]*w2)+(x3[i]*w3);
if(u>=th){y[i]=1;}
else{y[i]=0;}
sprintf(temp,"X1 = %d \r\n",x1[i]); m_x1=m_x1+temp;
sprintf(temp,"X2 = %d \r\n",x2[i]); m_x2=m_x2+temp;
sprintf(temp,"X3 = %d \r\n",x3[i]); m_x3=m_x3+temp;
sprintf(temp,"Y = %d \r\n",y [i]); m_y =m_y +temp;
}
}//XOR
else if(gate==3){
for(i=0;i<8;i++){
u1=(x1[i]*w11)+(x2[i]*w12)+(x3[i]*w13);
u2=(x1[i]*w21)+(x2[i]*w22)+(x3[i]*w23);
u3=(x1[i]*w31)+(x2[i]*w32)+(x3[i]*w33);
u4=(x1[i]*w41)+(x2[i]*w42)+(x3[i]*w43);
if(u1>=th1){y_1=1;}else{y_1=0;}
if(u2>=th2){y2=1;}else{y2=0;}
if(u3>=th3){y3=1;}else{y3=0;}
if(u4>=th4){y4=1;}else{y4=0;}
u5=(y_1*2)+(y2*2)+(y3*2)+(y4*2);
if(u5>=th5){y[i]=1;}else{y[i]=0;}
sprintf(temp,"X1 = %d \r\n",x1[i]); m_x1=m_x1+temp;
sprintf(temp,"X2 = %d \r\n",x2[i]); m_x2=m_x2+temp;
sprintf(temp,"X3 = %d \r\n",x3[i]); m_x3=m_x3+temp;
sprintf(temp,"Y = %d \r\n",y [i]); m_y =m_y +temp;
}
}
i=0;
while(1){
if(tempx1!=x1[i]){
tempx1=x1[i];
m_chart.GetSeries(0).AddXY(i-1,x1[i]+7," ",RGB(255,0,0));
}else{
tempx1=x1[i];
m_chart.GetSeries(0).AddXY(i,x1[i]+7," ",RGB(255,0,0));i++;
}
if(i>=8){break;}
}
i=0;
while(1){
if(tempx2!=x2[i]){
tempx2=x2[i];
m_chart.GetSeries(1).AddXY(i-1,x2[i]+5," ",RGB(0,0,255));
}else{
tempx2=x2[i];
m_chart.GetSeries(1).AddXY(i,x2[i]+5," ",RGB(0,0,255));i++;
}
if(i>=8){break;}
}
i=0;
while(1){
if(tempx3!=x3[i]){
tempx3=x3[i];
m_chart.GetSeries(2).AddXY(i-1,x3[i]+3," ",RGB(0,255,0));

}else{
tempx3=x3[i];
m_chart.GetSeries(2).AddXY(i,x3[i]+3," ",RGB(0,255,0));i++;
}
if(i>=8){break;}
}
i=0;
while(1){
if(tempy!=y[i]){
tempy=y[i];
m_chart.GetSeries(3).AddXY(i-1,y[i]+1," ",RGB(255,255,0));
}else{
tempy=y[i];
m_chart.GetSeries(3).AddXY(i,y[i]+1," ",RGB(255,255,0));i++;
}
if(i>=8){break;}
}
if(auw==0){
UpdateData(1);
m_x1="";
m_x2="";
m_x3="";
m_y ="";
m_w1=1;
m_w2=1;
m_w3=1;
m_th=1;
m_chart.GetSeries(0).Clear();
m_chart.GetSeries(1).Clear();
m_chart.GetSeries(2).Clear();
m_chart.GetSeries(3).Clear();
UpdateData(0);
auw=1;
}
KillTimer(0);
UpdateData(0);
}
void CPraktikum1Dlg::OnButton1() {
UpdateData(1);
m_x1="";
m_x2="";
m_x3="";
m_y ="";
m_chart.GetSeries(0).Clear();
m_chart.GetSeries(1).Clear();
m_chart.GetSeries(2).Clear();
m_chart.GetSeries(3).Clear();
if(gate==0){
MessageBox("OR/AND/XOR?");
goto end;
}
SetTimer(0,1,0);
end:
UpdateData(0);
}
void CPraktikum1Dlg::OnButton2() {
UpdateData(1);
m_x1="";m_x2="";m_x3="";m_y ="";
m_w1=1;m_w2=1;m_w3=1;m_th=1;
m_chart.GetSeries(0).Clear();
m_chart.GetSeries(1).Clear();
m_chart.GetSeries(2).Clear();

m_chart.GetSeries(3).Clear();
UpdateData(0);
}

IV. Hasil Percobaan


Operasi XOR McCulloch Pit

Operasi AND McCulloch Pit

Operasi OR McCulloch Pit

V.

Analisa
Praktikum kali ini mencoba menerapkan sebuah jaringan syaraf tiruan yang

diperkenalkan oleh mcCulloch Pit. Metode yang digunakan pada sistem ini ialah
mencari nilai w dan threshold untuk setiap input secara tunning sehingga
menghasilkan output yang diinginkan. Untuk percobaan ini, digunakan tabel
kebenaran untuk gerbang OR, AND, dan XOR sehingga output yang diinginkan
sudah jelas. Oleh karenanya diperlukan sebuah tunning yang matang untuk nilai w
dan threshold agar didapatkan output yang sesuai. Nilai w akan dikalikan dengan
input dan hasilnya akan di bandingkan dengan threshold, threshold inilah yang
menentukan output dari sistem bernilai 1 ataukah 0.
VI.

Kesimpulan
Pengoperasian AND dan OR dengan McCulloch hampir sama hanya saja

berbeda pada penentuan nilai threshold dan bobot (w).


Berbeda dengan AND dan OR, XOR memiliki proses yang lebih rumit dalam
menentukan output dari setiap input yang ada.

Anda mungkin juga menyukai