Riset Group Ilmu Rekayasa & Komputasi Informatika, Universitas Sebelas Maret MODUL 1 SINGLE LAYER PERCEPTRON A.

Tujuan Membangun jaringan syaraf tiruan Perceptron dengan pemorgraman berorientasi objek java untuk menyelesaikan suatu kasus B. Pendahuluan Jaringan syaraf tiruan perceptron adalaha suatu jaringan syaraf dengan arsitektur single layer. Arsitetkru jst tersebut adalah :

Output Layer Input Layer

Jika arsitektur jaringan syaraf seperti gambar tersebut maka dapat kita bagi menjadi sebuah class super class layer dan sub class input layer dan output layer.
Layer

Input_layer

Output_layer

Dengan algoritma pembelajaran perceptron :  Inisialisasi semua bobot dan bias (untuk sederhananya set saja ke nilai nol)  Set learning rate : (0 < α ≤1)  Selama kondisi berhenti bernilai false, maka lakukan langkah-langkah berikut : ◦ Untuk setipa pasangan pembelajaran s-t, kerjakan  Set input dengan nilai sama dengan vektor input: WHT 2011 Halaman : 1

protected float input[]. Praktikum Implementasi dari arsitektur single layer dengan metode pembelajaran perceptron adalah sebagai berikut : Untuk class layer codingnya sebagai berikut : public class layer { protected int jum_input. protected float output[]. WHT 2011 Halaman : 2 . int b){ super. namun jika masih terjadi perubahan maka kondisi berhenti  FALSE  C. Universitas Sebelas Maret xi=si Hitung respon untuk unit outputnya y_in = b + ∑xi*wi  ◦ Perbaiki bobot dan bias jika terjadi kesalahan:  Jika y ≠ t maka wi(baru) = wi(lama) + α*t*xi b(baru) = b(lama) + α*t  Jika tidak maka.input = new float[a]. super. } Untuk class input_layer codingnya sebagai berikut: class input_layer extends layer { public input_layer (int a. wi(baru) = wi(lama) b(baru) = b(lama) Test kondisi berhenti : jika tidak terjadi perubahan bobot maka kondisi berhenti  TRUE.jum_input = a. protected int jum_output.Riset Group Ilmu Rekayasa & Komputasi Informatika.jum_output = b. super.

} } Untuk class output_layer codingnya sebagai berikut : class output_layer extends layer { protected float bobot[][].jum_output =b. int b){ super. else if ((a >= -teta) && (a <= teta)) return 0. this.jum_output.input = masuk.i<super.0f.target = new float[b].i++) for(int j=0.j++) this. protected float error[]. } public void output(float[] keluar){ super. this. } public float transfer(float a. protected float target[].jum_input = a. public output_layer(int a.j<super.bobot[i][j]=0.output = keluar.jum_input. this.0f.bobot = new float[a][b].Riset Group Ilmu Rekayasa & Komputasi Informatika. } public void input(float[] masuk){ super. } WHT 2011 Halaman : 3 .0f. this. } public void inisialiasai_bobot(){ for(int i=0. super.output = new float[b]. Universitas Sebelas Maret super.0f.output = new float[b]. else return -1.input = new float[a]. float teta){ if (a >teta) return 1. this.error = new float[b].

i<super. for (int i=0.j<super.jum_output. } } public void update_bobot(float rate){ for(int j=0. } catch (Exception e) { e.transfer(temp.close().println(). } super.true). ps.input[i]*bobot[i][j]. temp = temp + super.i++){ bobot[i][j] = bobot[i][j] + rate*this.j<super.i<super.output[j]=super.teta).print(this. Universitas Sebelas Maret public void hitung_output(float teta){ float temp=0. for (int j=0. fos.jum_input.target[j]){ for(int i=0.print(" ").Riset Group Ilmu Rekayasa & Komputasi Informatika.j++){ for(int i=0. ps.jum_input.target[j]*this.i++){ super.output[j].jum_output. } } } } public void write_bobot(String file){ try { FileOutputStream fos = new FileOutputStream(file. PrintStream ps = new PrintStream(fos).j++){ ps.i<super.j++){ if (this.jum_input.close().output[j] != this.input[i].j<super. } } ps.output[j] = this. } } public void read_bobot(String file){ WHT 2011 Halaman : 4 .jum_output.i++){ for(int j=0.bobot[i][j]).printStackTrace().

i++){ for(int j=0. String isi. while (st.jum_input." "). int k=0.j<super.hasMoreTokens()){ temp[k] = Float.close().readLine()) !=null){ StringTokenizer st = new StringTokenizer(isi. k++. } } public float[][] baca_input(String file. DataInputStream dis = new DataInputStream(fis). int pola){ float sementara[][] = new float[pola][super. Universitas Sebelas Maret try { FileInputStream fis = new FileInputStream(file). } catch (Exception e){ e. float temp[] = new float[super. } } int h=0. try { FileInputStream fis = new FileInputStream(file).nextElement()).jum_output.valueOf((String) st. fis.close(). while ((isi = dis.j++){ this.jum_output]. for(int i=0. while (st. int k=0. while ((isi = dis." "). int h=0.printStackTrace(). String isi. DataInputStream dis = new DataInputStream(fis).Riset Group Ilmu Rekayasa & Komputasi Informatika.jum_input*super.jum_input].i<super. } } dis.readLine()) !=null){ StringTokenizer st = new StringTokenizer(isi. h++.hasMoreTokens()){ WHT 2011 Halaman : 5 .bobot[i][j] = temp[h].

DataInputStream dis = new DataInputStream(fis). k++. } h++.close().Riset Group Ilmu Rekayasa & Komputasi Informatika.hasMoreTokens()){ sementara[h][k] = Float. } public float[][] baca_target(String file. int h=0. } dis. while (st. } catch (Exception e){ e. fis.printStackTrace().close(). k++. int pola){ float sementara[][] = new float[pola][super.nextElement()).nextElement()). } h++. } } WHT 2011 Halaman : 6 .printStackTrace(). } dis. String isi. Universitas Sebelas Maret sementara[h][k] = Float. } return sementara.jum_output].readLine()) !=null){ StringTokenizer st = new StringTokenizer(isi.valueOf((String) st.valueOf((String) st." "). } return sementara. try { FileInputStream fis = new FileInputStream(file).close(). int k=0. } catch (Exception e){ e.close(). while ((isi = dis. fis.

file_input = file_input.jum_pola). this. int output){ this.output.file_target = file_target.file_bobot).file_input. this.update_bobot(0. this.Riset Group Ilmu Rekayasa & Komputasi Informatika. private output_layer keluar. private String file_bobot.keluar. this.write_bobot(this.keluar.output).masuk.write_bobot(this. this.target = tar[i]. jum_pola).input = this. } public jaringan(String file_input.output = this.keluar.i<jum_pola.masuk.keluar.inisialiasai_bobot().keluar.jum_output. public jaringan(String bobot){ this. this.input = awal[i]. } public void pelatihan(int jum_pola. this. this.8f). int epoh){ this.baca_target(this. String file_target.5f).i++){ this.keluar. float tar[][] = this.masuk.baca_input(this. input).masuk. } public void membangun_jaringan(int input.keluar. this.h++){ for(int i=0.file_target.masuk = new input_layer(input. for(int h=0.file_bobot = file_bobot.h<epoh.input. private String file_target.keluar. this.file_bobot).file_bobot = bobot. private input_layer masuk. } public void konfigInputOutput(){ this.hitung_output(0. this. String file_bobot) { super().keluar = new output_layer(this.masuk.keluar. float awal[][] = this.konfigInputOutput(). WHT 2011 Halaman : 7 . Universitas Sebelas Maret Untuk class jaringan codingnya sebagai berikut : public class jaringan { private String file_input.

Penentuan target yang diinginkan berdasarkan pola input 4. 5.hitung_output(0. Indentifikasi permasalahan Gerbang logika AND mempunyai dua inputan dengan output akan bernilai 1 jika semua inputnya bernilai 1 dan -1 untuk inputnya ada yang bernilai 0. } } Berdasarkan class-class yang kita buat tersebut. Memilih metode training dan melakukan pelatihan terhadap jaringan syaraf tiruan tersebut menggunakan data pola input dan target (untuk supervised training). Melakukan uji coba aplikasi jaringan syaraf tiruan hasil training. Penentuan pola input jaringan syaraf tiruan 3. this.keluar. this. 6.output.konfigInputOutput().read_bobot(this.Riset Group Ilmu Rekayasa & Komputasi Informatika.keluar.masuk.5f).input = input. this. Memilih dan membangun arsitektur jaringan syaraf tiruan yang digunakan. Indentifikasi permasalahan 2. Universitas Sebelas Maret } } } //proses setelah JST di latih public float[] aplikasi(float input[]){ this. Dalam membangun suatu aplikasi jaringan syaraf tiruan dilakukan beberapa tahap yaitu : 1. Menentukan pola input jaringan syaraf tiruan : Input 1 1 1 0 0 Input 2 1 0 1 0 Bias 1 1 1 1 WHT 2011 Halaman : 8 . 2. maka dapat kita gunakan untuk membangun suatu arsitektur jaringan syaraf tiruan dengan arsitektur single layer dan metode pembelajaran perceptron. Solusi : 1. Kasus : Bangunlah suatu jaringan syaraf tiruan yang mampu mengenali gerbang logika AND.file_bobot). return this.keluar.

Sebagai catatan.txt")."target.membangun_jaringan(3. 1). Berikut conding proses pelatihannnya dengan menggunakan class-class yang sudah dibuat sebelumnya : Ket : Pola input disimpan dalam file : masuk. System. float hasil[] = isi.txt".aplikasi(data).txt"). } 7.txt Pola output/target disimpan dalm file : target.membangun_jaringan(3.1}. isi.out.Riset Group Ilmu Rekayasa & Komputasi Informatika.txt (akan diabuat secara otomatis) public void training(){ jaringan isi = new jaringan("masuk. Menentukan target berbdasarkan pola input jaringan syaraf tiruan Input 1 1 1 0 0 Input 2 1 0 1 0 Bias 1 1 1 1 Target 1 -1 -1 -1 4. Universitas Sebelas Maret 3.txt Bobot hasil pelatihan disimpan dalam file : bobot."bobot. Memilih arsitektur : dalam kasus ini kita mabil arsitektur single layer feedforward 5. Melakukan uji coba terhadap jaringan syaraf tiruan berdasarkan bobot hasil pelatihan. proses training dilakukan sebelum ujicoba. 9).txt". float[] data ={input1. Berikut coding lengkap dari jaringan syaraf tiruan untuk proses pelatihan dan ujicoba. 1). isi. Menggunakan metode pelatihan perceptron. Jika sudah WHT 2011 Halaman : 9 . float input2){ jaringan isi = new jaringan("bobot. isi.println("Keluarannya : "+hasil[0]). } 6. Berikut coding darin ujicoba jaringan syaraf tiruan : public void ujicoba(float input1.pelatihan(4.input2.

Matakuliah tersebut adalah : a. } } D.jaringan."bobot.txt".txt"). Logika Samar WHT 2011 Halaman : 10 . Konsep Pemrograman d. System.out.membangun_jaringan(3. 1). 9). System Terdistribusi c. Universitas Sebelas Maret selesai training maka dapat dilakukan ujicoba berulang kali.1).membangun_jaringan(3. } public void ujicoba(float input1. isi. test.training(). float input2){ jaringan isi = new jaringan("bobot. Distributed System b.pelatihan(4. isi. float[] data ={input1. //jika training sedang dijalankan maka non-aktifkan method ujicoba test. import lib. Jaringan Komputer b. Latihan 1. float hasil[] = isi. ditentukan oleh variable matakuliah.ujicoba(1.input2. //jika dilakukan ujicoba."target. public class simulasi { public void training(){ jaringan isi = new jaringan("masuk.aplikasi(data).txt"). Soft Computing c.Riset Group Ilmu Rekayasa & Komputasi Informatika. Jaringan Syaraf Tiruan e. Information System Dalam menentukan masuk bidang minat apa seorang mahasiswa. 1). non-aktifkan method training.txt". } public static void main(String[] args){ simulasi test = new simulasi(). akan membuat system untuk menentukan konsentrasi bidang minat keahlian mahasiswa dengan menfaatkan Jaringan Syaraf Tiruan Perceptron (single layer perceptron). Jangan melakukan training bersamaan dengan ujicoba. Konsentrasi tersebut dibagi menjadi 3 cluster yaitu : a.println("Keluarannya : "+hasil[0]). isi.1}. Pada Jurusan Teknik Informatika Fakultas MIPA.

3. maka matakuliah jaringan komputer. maka matakuliah jaringan syaraf tiruan. Membangun Jaringan Syaraf Tiruan Menggunakan Matlab dan Excel Link. Jika ingin masuk bidang minat Soft Computing. E. Diyah puspitaningrum. 2. Graha Ilmu.Riset Group Ilmu Rekayasa & Komputasi Informatika. sedangkan lainnya bernilai minimal CUKUP (0). Pengantar Jaringan saraf Tiruan. Andi. Proyek Perangkat Lunak Ketentuan yang berlaku atas matakuliah-matakuliah tersebut adalah 1. proyek perangkat lunak dan konsep pemrograman bernilai BAIK (1). Yogyakarta. Sri. maka matakulia Rekayasa perangkat lunak. Yogayakarta. Analisis Perancangan Sistem Informasi h. sedangkan lainnya bernilai minimal CUKUP (0). Kusumadewi. Rekayasa Perangkat Lunak g. 2. 2006. analisis perancangan system informasi. Jika ingin masuk bidang minat Information System. Universitas Sebelas Maret f. logika samar dan Konsep pemrograman bernilai BAIK (1). 2004. Jika ingin masuk bidang minat Distributed System. sedangkan lainnya bernilai minimal CUKUP (0). WHT 2011 Halaman : 11 . Referensi 1. system terdistribusi dan konsep pemrograman bernilai BAIK (1).

Sign up to vote on this title
UsefulNot useful