Showing posts with label matlab. Show all posts
Showing posts with label matlab. Show all posts

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