Sunday, March 25, 2012

jaringan MaxNet

jaringan MaxNet adalah jaringan saraf tiruan, yang menjadikan bobot dalam proses pencarian tetap.

Prinsip :” winner takes all” (neuron dipaksa untuk berkompetisi sehinggahanya 1 yang menjadi aktif (sinyal keluaran> 0)

fungsi aktivasi:
                   x        jika  x > 0

    y =

                   0        jika  x 0

struktur jaringan:


Algoritma pemrosesan jaringan :
Inisialisasi є dengan bilangan 0 < є < 1/ m
Inisialisasi bobot    wij    =   wji   =1,   jika i = j
  = -є   jika i j
Selama terdapat lebih dari 1 unit yang fungsi aktivasi > 0, lakukan :
  Modifikasi aktivasi titik aj(j=1, 2, … m) dg
  aj (baru) = f (aj(lama) – є Σ ak(lama) )

contoh program: menggunakan matlab

 

clear;
clc;
%jaringan maxnet
disp('------------------------------ ')
disp('Program JST; jaringan MaxNet')
disp(' karya: Mustaghfiri Ramadlan')
disp ('     Nim. 07518244016')
disp('   Prodi PT. Mekatronika')
disp('   Pemenuhan tugas PSOI')
disp('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   ')

inp = input('berapa jumlah masukan data : ');
bob = input('masukan nilai bobot : ');
disp (' ')
disp ('pilih jenis masukan :');
disp ('1 manual');
disp ('2 random');


pilih = input ('pilih pilihan anda-(tekan 1 atau 2) ');
if pilih==1
    for i=1:inp
        a(i)= input('masukan nilai ');
    end
    else
        a = rand (inp,1,[1,100])
  
end
disp(' ')
bobot=bob;

x=[0];
n=[0];
er=1;
ite=0;
while er~=0;
    er =0;
    ite=ite+1; % conter untuk jumlah iterasi
    dis('nilai a sebelum di aktivasi: ')
    for i=inp:inp
        bk=0;
        for k=1:inp
            bk=+a(k); %jumlahkan seluruh matriks
            x(i) = bk-a(i); %kurangi total jumlah matriks dgn matriks yang tertentu
        end
        n(i)=bobot*x; %setela jumlah bobot dikurangi matriks tertentu, lalu dikalidengan bobot
        c(i)=a(i)-n; %menghitung nilai a baru (rumus MAXNET)
      
        disp (['a : ', num2str(c(i))])
    end
    disp ('=============================')
    disp (['  nilai maxnet iterasi ke ', num2str(ite)])
    d=0;  
    for i=1:inp    %hitung fungsi aktivasi a baru
        if c(i)<=0
            a(i)=0; % aktivasi =0, jika nilai a baru(c(i))<=0
            s(i)=0; %///inisiasi untuk fungsi ulang..(1)
        else
            a(i)=c(i); % aktivasi =1, jika nilai a baru(c(i))>0
            s(i)=1;%///inisiasi untuk fungsi ulang...(2)
        end
        disp (['a =', num2str(a(i))])%tampilkan hasil fungsi aktivasi per
        d=d+s(i); %///inisiasi untuk fungsi ulang...(3)
    end
  % proses penghitungan fungsi pengulangan while...(4)
    if (d==1);
        er=0;
    else (d>1);
        er=1;
    end
 
end
% menampilkan nilai data terbesar
disp('   ')
disp ('))))+++++++++++++++++++((((((')
disp (' ')
for i=1:inp
if  a(i)~=0;
    disp ('bobot terbesar yang diperoleh adalah:')
    disp (['a = ', num2str(a(i))])
    disp (['yaitu pada masukan data ke i = ', num2str(i)])

end
k=0;
for i=1:inp;
    k=k+a(i);
end

end
    if k==0;
     disp ('coba lagi bro.. dengan masukan yang lain')
     disp ('sampai diperoleh satu nilai bobot saja')
    end
 

4 comments:

Pembaca yang baik meninggalkan jejak..