14
Program Pilihan Ganda Sederhana dengan Java Posted by Lita Nurlaelati | 1:25 PM | Programming Kali ini admin berbagi tentang membuat program Java GUI menggunakan Netbeans. Berikut langkah - langkahnya : Buat project baru dengan mengklik icon New Project Pada tahap Choose Project, pilih Java Application Disini admin memberi nama project dengan nama PilihanGanda. Jangan centang bagian Create Main Class. Karena untuk saat ini kita hanya akan bermain di bagian form saja. Kemudian kita buat Java Package-nya. Untuk langkah - langkahnya lihat gambar dibawah ini.

Program Pilihan Ganda Sederhana Dengan Java

Embed Size (px)

Citation preview

Page 1: Program Pilihan Ganda Sederhana Dengan Java

Program Pilihan Ganda Sederhana dengan JavaPosted by Lita Nurlaelati | 1:25 PM | Programming

Kali ini admin berbagi tentang membuat program Java GUI menggunakan Netbeans. Berikut

langkah - langkahnya :

Buat project baru dengan mengklik icon New Project

Pada tahap Choose Project, pilih Java Application

Disini admin memberi nama project dengan nama PilihanGanda. Jangan centang bagian

Create Main Class. Karena untuk saat ini kita hanya akan bermain di bagian form saja.

Kemudian kita buat Java Package-nya. Untuk langkah - langkahnya lihat gambar dibawah

ini.

Page 2: Program Pilihan Ganda Sederhana Dengan Java

Beri nama Utama pada Package Name.

Buat JFrame Form dengan cara klik kanan pada Package Utama > pilih New > pilih JFrame

Form

Untuk nama Formnya, admin beri nama SoalPilihanGanda.

Di tutorial ini, admin konsentrasikan untuk menggunakan fitur - fitur Palette berikut :

Page 3: Program Pilihan Ganda Sederhana Dengan Java

     

     Adapun fungsinya yaitu :

1. Scroll Pane untuk menscroll bagian penampil soal.

2. Label untuk memberikan atribut nama agar memudahkan user.

3. Button untuk mengeksekusi setiap pilihan yaitu button OK dan button Lihat Hasil.

4. Radio Button untuk memilih jawaban. Terdiri dari A, B, C.

5. Combo Box untuk memilih materi yang akan dijawab soalnya. Terdiri dari -Pilih-, Jaringan,

Pemrograman.

Buat design form seperti berikut. Ubah nama variabelnya seperti yang ada pada bagian

Navigator.

Untuk penulisan soalnya, tuliskan tepat dibawah public class SoalPilihanGanda

extends javax.swing.JFrame { . Perhatikan gambar!

Page 4: Program Pilihan Ganda Sederhana Dengan Java

! ! ! Perlu diketahui, untuk menulis soal - soalnya kita dapat mengkombinasikan dengan

bahasa HTML agar tulisan yang muncul lebih rapi dan lebih bagus tentunya.

Agar button yang kita buat dapat bekerja dengan baik, buat parameter ButtonGroupseperti

berikut.

Kenapa harus dibuat seperti itu? Jawabannya, agar user hanya dapat memilih 1 jawaban

pada setiap soal. Selain itu, agar program dapat berada di tengah - tengah layar saat pertama

kali dirun, maka kita set SetLocationRelativeTo(null); dan agar jendela program tidak

dapat di Maximaze atau Resize maka kita set menjadi false [setResizable (false);]

Klik 2x pada button OK dan ketikkan kode - kode berikut.

          

          Fungsinya yaitu menampilkan soal yang sesuai pilihan materinya.

Lalu klik button Lihat Hasil dan insert kode dibawah ini yang berfungsi untuk menentukan

jawaban yang benar diberi nilai 10, jawaban yang salah diberi nilai 0 kemudian hasilnya

dikali 2 dan ditampilkan dengan MessageDialog.

Page 5: Program Pilihan Ganda Sederhana Dengan Java

?

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849

private void hasilActionPerformed(java.awt.event.ActionEvent evt) {   if(pilihan.getSelectedItem().equals("Jaringan"))   {       int poin1 = 0;       if (a1.isSelected()){           poin1 = 10;       }       if (b1.isSelected()){       poin1 = 0;       }       if (c1.isSelected()){           poin1 = 0;       }       int poin2 = 0;       if (a2.isSelected()){           poin2= 0;       }       if (b2.isSelected()){       poin2 = 0;       }       if (c2.isSelected()){           poin2 =10;       }       int poin3 = 0;       if (a3.isSelected()){           poin3 = 0;       }       if (b3.isSelected()){       poin3 = 10;       }       if (c3.isSelected()){           poin3 = 0;       }       int poin4 = 0;       if (a4.isSelected()){           poin4 = 10;       }       if (b4.isSelected()){       poin4 = 0;       }       if (c4.isSelected()){           poin4 = 0;       }       int poin5 = 0;       if (a5.isSelected()){           poin5 = 0;       }       if (b5.isSelected()){       poin5 = 10;       }       if (c5.isSelected()){           poin5 = 0;       }       int jumlah1 = (poin1+poin2+poin3+poin4+poin5)*2;       javax.swing.JOptionPane.showMessageDialog( SoalPilihanGanda.this, "Nilai Anda "+jumlah1);   }   if(pilihan.getSelectedItem().equals("Pemrograman"))   {       int poin1 = 0;       if (a1.isSelected()){           poin1 = 0;       }

Page 6: Program Pilihan Ganda Sederhana Dengan Java

5051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

       if (b1.isSelected()){       poin1 = 10;       }       if (c1.isSelected()){           poin1 = 0;       }       int poin2 = 0;       if (a2.isSelected()){           poin2= 10;       }       if (b2.isSelected()){       poin2 = 0;       }       if (c2.isSelected()){           poin2 =0;       }       int poin3 = 0;       if (a3.isSelected()){           poin3 = 0;       }       if (b3.isSelected()){       poin3 = 10;       }       if (c3.isSelected()){           poin3 = 0;       }       int poin4 = 0;       if (a4.isSelected()){           poin4 = 0;       }       if (b4.isSelected()){       poin4 = 10;       }       if (c4.isSelected()){           poin4 = 0;       }       int poin5 = 0;       if (a5.isSelected()){           poin5 = 0;       }       if (b5.isSelected()){       poin5 = 0;       }       if (c5.isSelected()){           poin5 = 10;       }       int jumlah1 = (poin1+poin2+poin3+poin4+poin5)*2;       javax.swing.JOptionPane.showMessageDialog( SoalPilihanGanda.this, "Nilai Anda "+jumlah1);   }   }

Page 7: Program Pilihan Ganda Sederhana Dengan Java

100101102103104105106107108109110

Jalankan aplikasinya dan silakan mencoba memodifikasinya. 

Contoh Algoritma Backpropagation

Jika kita mempunyai pola matriks X  :

Dan bobot awal dan bias awal yang dipilih secara acak adalah : 

Nilai bobot dari layer input ke hidden layer

Vij=  0.1207690864390194, 0.18121937900400642, 0.5373979583380004, 0.6958370793063979,

0.7315162285625711, 0.19241284706221817, 0.618297402969798, 0.5254289914600393

Nilai bobot dari hidden layer ke output layer

Wk = 0.3338186565232477, 0.04331653473021879, 0.27610812619466973, 0.5946077987374927

bias 1

b1 = 0.5500964441249149, 0.28941827642665174, 0.4615712532796826, 0.8149000001760573

Page 8: Program Pilihan Ganda Sederhana Dengan Java

bias 2

b2= 0.6109600864128633

Topologi jaringan yang kita gunakan adalah menggunakan jaringan MLP Backpropagation

dengan 1 layer input (2 neuron masukan), 1 hiden layer (4 neurron) dan 1 output layer (1

neuron). Fungsi aktivasi yang kita gunakan pada hidden layer adalah fungsi sigmoid dan

pada output layer, fungsi aktivasi yang kita gunakan adalah fungsi linear.

Gb1. Jaringan MLP Backpropagation

Karena pola data adalah matriks berukuran 6x4, maka kita bagi 3 vector pertama

sebagai learning set, kemudian 3 vector sisanya kita gunakan sebagai test set. yaitu :

Pada data test set dan learning set, kolom ketiga dari kedua data kita set sebagai target

keluaran jaringan. Pada proses inisialisasi parameter jaringan, kita beri nilai maximum

epoch = 1000, target error = 0.00001, MSE = 0 dan learning rate = 0,4. 

Output Program :

******************Epoch ke-0 ********************** 

MSE = 4.758556221656486 

******************Epoch ke-1 ********************** 

MSE = 1.3080030484094292 

******************Epoch ke-2 ********************** 

MSE = 1.085172838222893 

******************Epoch ke-3 ********************** 

MSE = 1.0549847659147695 

******************Epoch ke-4 ********************** 

MSE = 1.046603613669597 

******************Epoch ke-5 ********************** 

MSE = 1.0338336469898246 

Page 9: Program Pilihan Ganda Sederhana Dengan Java

Pada 5 epoch awal, MSE mempunyai nilai yang tinggi, kemudian pada epoch setelahnya,

MSE mengalami penurunan.

Gb2. Grafik MSE ddi 200 epoch pembelajaran

Jaringan akan terus menerus melakukan iterasi hingga epoch = maximum epoch atau

MSE = target error. Pada kasus ini, iterasi akan berhenti pada epoch = 1000 dan jaringan

akan memberhentikan proses dengan hasil output :

******************Epoch ke-999 ********************** 

MSE = 0.023784991619496897 

******************Epoch ke-1000 ********************** 

MSE = 0.0237919057577512

Dari sini bisa kita lihat bahwa nilai MSE di epoch ke-999 lebih kecil daripada epoch ke-

1000, bisa diartikan bahwa jaringan tidak convergent pada saat maximum epoch

tercapai, jika diteruskan ke epoch selanjutnya, kemungkinan MSE bergerak menjauhi

target error akan semakin besar, oleh karena itu kita harus mencari titik epoch dimana

MSE berada pada nilai paling minimum. Dan nilai MSE paling minimum berada pada

epoch ke-140 :

******************Epoch ke-139 ********************** 

MSE = 0.018681322162804544 

******************Epoch ke-140 ********************** 

MSE = 0.018681208923667793 

******************Epoch ke-141 ********************** 

MSE = 0.01868149867843059

Nilai bobot dan bias di epoch ke-140 adalah :

***Final weights and bias value at mininum MSE on epoch : 140****

V1[] = -0.7011998774720427 

-0.3689790140738511 

0.8046512685396908 

Page 10: Program Pilihan Ganda Sederhana Dengan Java

1.7505551804252213 

V2[] = 1.3100784790048718 

0.7668952387082638 

0.4267333271027457 

-1.2177481267024133 

b1[] = 0.3066897306561537 

0.31370227499483994 

0.5372604876143215 

0.12644098313242658 

W[] = -1.4092041090128564 

0.821117168346266 

0.26580529638614636 

2.241329804694944 

b2 = -0.33554834261466654 

Kemudian, kita implementasikan bobot dan bias tersebut untuk test set dengan

menggunakan perhitungan maju (feedforward) saja di jaringan yang sama. 

***************TEST SET****************** 

minimum MSE = 0.018681208923667793 

The weights and bias which used at this test function are from the minimum MSE at

epoch :140 

out put = -1.0586077904900728 

out put = 0.1293472169464956 

out put = -0.9036426039696852 

out put = 0.28431240346688297 

Jika kita merubah fungsi aktivasi pada output layer, dari fungsi linier menjadi fungsi

Hardlimit atau sigmoid, menjadi :

***************TEST SET****************** 

minimum MSE = 0.018681208923667793 

The weight and bias which used at this test function are from the minimum MSE at epoch

:140 

out put = -1.0586077904900728 hardlimit(y)= 0.0 sigmoid= 0.25757559762379123 

out put = 0.1293472169464956 hardlimit(y)= 1.0 sigmoid= 0.5322917947514457 

out put = -0.9036426039696852 hardlimit(y)= 0.0 sigmoid= 0.2883025167191984 

out put = 0.28431240346688297 hardlimit(y)= 1.0 sigmoid= 0.5706031484804999 

Dengan fungsi Hardlimit pada output layer, hasil output program adalah : 0 1 0 1, yang

berarti jaringan sudah mengenali pola dari learning set dengan baik dan mampu

menghasilkan output yang sesuai pada test set.

Algoritma Pembelajaran Backpropagation

Page 11: Program Pilihan Ganda Sederhana Dengan Java

Sesuai dengan namanya, algoritma ini melakukan dua tahap komputasi yaitu :

perhitungan maju (feedforward) dan perhitungan mundur (backward), dalam setiap

iterasinya, jaringan akan memperbaiki nilai-nilai bobot dan bias pada semua neuron yang

ada di jaringan.

Algoritma Backpropagation adalah salah satu algoritma yang menggunakan metode

terawasi (supervised learning), dan termasuk jaringan MLP (Multi Layer Perceptron).

Gb.1 Jaringan Multi Layer Perpceptron

Algoritma Pembelajaran Backpropagation : 

● Inisialisasi semua input, target, bobot awal, bias awal dan target keluaran. 

● Inisialisasi Epoch. 

● Inisialisasi learning rate, maximum error. 

Feedforward: 

○ Hitung   nilai   masukan   pada   tiap   pasangan   elemen   input   pada   hidden  layer 

dengan  formula :

○ Jika kita menggunakan fungsi aktivasi sigmoid, hitung output dengan : 

○ Hitung   sinyal   keluaran   dari  hidden   layer  untuk   mendapatkan   keluaran output  

layer  dengan menggunakan persamaan :

○ Jika kita menggunakan fungsi aktivasi sigmoid, hitung output dengan : 

Page 12: Program Pilihan Ganda Sederhana Dengan Java

○ Kemudian, keluaran jaringan dibandingkan dengan target, hitung error E dengan :

○ Hitung MSE (Mean Square Error) :

dengan n adalah jumlah input masukan.

Backpropagation : 

○ Pada tiap unit output, gunakan formula ini  untuk memperbaiki nilai bobot dan bias : 

○ Perbaiki nilai bobot dan bias dengan menggunakan formula : 

○ Hitung sinyal balik dari output layer pada tiap unit di hidden layer

○ Pada tiap unit hidden layer, hitung  delta_1 untuk memperbaiki nilai bobot dan bias :

○ Perbaiki nilai bobot dan bias dengan menggunakan formula :

Page 13: Program Pilihan Ganda Sederhana Dengan Java

○ Untuk semua layer, perbaiki bobot dan bias :

○ Hitung MSE (Mean Square Error) dengan menggunakan formula : 

dengan n adalah jumlah input masukan. 

○ Jika (Epoch < maximum Epoch) atau (MSE < Target Error), ulangi langkah pelatihan.