Form Input Gangguan
String kolom0,kolom1;
public inputdatagangguan() {
initComponents();
tampiluser();
}
private void TampilCombobox() {
jComboBox1.removeAllItems();
jComboBox1.addItem("-Pilih-");
try {
String query = "select * from gangguan";
Statement st = TugasAkhir.getConnection().createStatement();
ResultSet rs = st.executeQuery(query);
while (rs.next()) {
jComboBox1.addItem(rs.getString("nama_gangguan"));
}
st.close();
rs.close();
TugasAkhir.getConnection().close();
} catch(Exception e) {
System.out.println(e);
}
}
private void tampiluser() {
try {
DefaultTableModel dtm = new DefaultTableModel(){
@Override
public boolean isCellEditable(int row, int col) {
return false;
}
};
dtm.addColumn("Id");
dtm.addColumn("Nama");
dtm.addColumn("Gangguan");
String sql = "SELECT DISTINCT kode_perolehan, nama , nama_gangguan FROM perolehan_copy p, gangguan g where p.kode_gangguan=g.kode_gangguan ";
Statement stmt = TugasAkhir.getConnection().createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
dtm.addRow(new Object[] {
rs.getString("kode_perolehan"),
rs.getString("nama"),
rs.getString("nama_gangguan")
});
jTable1.setModel(dtm);
}
stmt.close();
} catch (SQLException ex) {
Logger.getLogger(datauser.class.getName()).log(Level.SEVERE,null,ex);
}
}
private void formWindowOpened(java.awt.event.WindowEvent evt) {
// TODO add your handling code here:
TampilCombobox();
tampiluser();
}
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
jComboBox1.setEnabled(true);
jButton1.setEnabled(true);
int baris=jTable1.getSelectedRow();
int kolom=jTable1.getSelectedColumn();
String dataterpilih=jTable1.getValueAt(baris, kolom).toString();
kolom0=jTable1.getValueAt(baris, 0).toString();
kolom1=jTable1.getValueAt(baris, 1).toString();
try {
DefaultTableModel dtm = new DefaultTableModel();
dtm.addColumn("Soal");
dtm.addColumn("Jawaban");
dtm.addColumn("Bobot");
String sql = "SELECT pertanyaan.soal, perolehan_copy.jawaban,bobot FROM perolehan_copy, pertanyaan WHERE pertanyaan.kode_pertanyaan=perolehan_copy.kode_pertanyaan and nama='"+kolom1+"'";
Statement stmt = TugasAkhir.getConnection().createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
dtm.addRow(new Object[] {
rs.getString("soal"),
rs.getString("jawaban"),
rs.getString("bobot")
});
jTable2.setModel(dtm);
}
stmt.close();
} catch (SQLException ex) {
Logger.getLogger(datauser.class.getName()).log(Level.SEVERE,null,ex);
}
}
private void jTable2MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String kode="";
String trg="";
try {
String ggn=(String) jComboBox1.getSelectedItem();
Statement Stm = (Statement)TugasAkhir.getConnection().createStatement();
String sql = "SELECT kode_gangguan from gangguan where nama_gangguan='"+ggn+"'";
ResultSet rs = Stm.executeQuery(sql);
if (rs.next()) {
kode = rs.getString("kode_gangguan");
//trg = rs.getString("target");
}
//Stm.close();
int konfirm=JOptionPane.showConfirmDialog(this,
"Yakin data disimpan?","Konfirmasi",JOptionPane.YES_NO_OPTION);
if(konfirm==0)
{
Stm.executeUpdate("update perolehan_copy set kode_gangguan='"+kode+"'"+" where kode_perolehan='"+kolom0+"'");
JOptionPane.showMessageDialog(this, "Berhasil di ubah");
Stm.close();
tampiluser();
}
else
{
//batalkrActionPerformed(evt);
}
} catch(Exception e) {
JOptionPane.showMessageDialog(this, "Gagal ubah"+e);
}
}
Form Pelatihan
public class pelatihan extends javax.swing.JFrame{
private double[][] data;
private int[][] target;
private String[] nama;
private int jumData ;
private int jumHL;
private double max ;
private static int jumInput = 3;
private static int jumOutput = 2;
private double[][] v,bv,w,bw;
//variables for counting total diseas
int jumlah =0;
int jumAno =0;
int jumBed =0;
int jumNor =0;
int jumBul =0;
private ArrayList> aList;
private XYSeries series;
Connection c = TugasAkhir.getConnection();
public pelatihan() {
initComponents();
txtJumlahHidden.setDocument(new validasiinput(validasiinput.numeric));
txtKelipatanIterasi.setDocument(new validasiinput(validasiinput.numeric));
txtKonstantaBelajar.setDocument(new validasiinput(validasiinput.numeric));
txtMaksimalIterasi.setDocument(new validasiinput(validasiinput.numeric));
txtSse.setDocument(new validasiinput(validasiinput.numeric));
series = new XYSeries("Nilai MSE");
}
private void TampilData() {
DefaultTableModel tabel = new DefaultTableModel(){
@Override
public boolean isCellEditable(int row, int col) {
return col == 0;
}
@Override
public Class> getColumnClass(int columnIndex) {
Class> clazz = String.class;
switch (columnIndex) {
case 0:
clazz = Boolean.class;
break;
}
return clazz;
}
@Override
public void setValueAt(Object aValue, int row, int column) {
if (aValue instanceof Boolean && column == 0) {
@SuppressWarnings("unchecked")
Vector rowData = (Vector)getDataVector().get(row);
rowData.set(0, (boolean)aValue);
fireTableCellUpdated(row, column);
}
}
};
jTable1.setModel(tabel);
tabel.addColumn("Pilih");
tabel.addColumn("Nama");
tabel.addColumn("Bobot 1");
tabel.addColumn("Bobot 2");
tabel.addColumn("Bobot 3");
tabel.addColumn("Gangguan");
tabel.addColumn("Target 1");
tabel.addColumn("Target 1");
tabel.getDataVector().removeAllElements();
tabel.fireTableDataChanged();
try{
Statement s = c.createStatement();
String sql = "SELECT aa.nama AS nama,SUM(aa.bobot1) AS bobot1,SUM(aa.bobot2) AS bobot2,SUM(aa.bobot3) AS bobot3, bb.nama_gangguan, bb.target1 AS t1, bb.target2 AS t2 " +
" FROM (SELECT a.nama,SUM(a.bobot) AS bobot1,0 AS bobot2,0 AS bobot3,a.kode_gangguan,a.kode_kategori,a.ket " +
" FROM perolehan_copy AS a" +
" WHERE a.kode_kategori=1 GROUP BY a.nama " +
" UNION ALL " +
" SELECT a.nama,0 AS bobot1,SUM(a.bobot) AS bobot2,0 AS bobot3,a.kode_gangguan,a.kode_kategori,a.ket " +
" FROM perolehan_copy AS a " +
" WHERE a.kode_kategori=2 GROUP BY a.nama " +
" UNION ALL " +
" SELECT a.nama,0 AS bobot1,0 AS bobot2,SUM(a.bobot) AS bobot3,a.kode_gangguan,a.kode_kategori,a.ket " +
" FROM perolehan_copy AS a " +
" WHERE a.kode_kategori=3 GROUP BY a.nama) AS aa, gangguan AS bb , kategori AS cc " +
" WHERE aa.kode_gangguan=bb.kode_gangguan AND aa.kode_kategori=cc.kode_kategori " +
" GROUP BY aa.nama";
ResultSet r = s.executeQuery(sql);
while (r.next()){
Object[] o = new Object[8];
o[0]=false;
o[1]=r.getString("nama");
o[2]=r.getString("bobot1");
o[3]=r.getString("bobot2");
o[4]=r.getString("bobot3");
o[5]=r.getString("bb.nama_gangguan");
o[6]=r.getString("t1");
o[7]=r.getString("t2");
tabel.addRow(o);
}
r.close();
s.close();
}catch (SQLException e){
JOptionPane.showMessageDialog(this, "Error Load Data","Error Message",0);
}
jumlahdata1.setText(""+jumlah);
ano1.setText(""+jumAno);
bed1.setText(""+jumBed);
bno1.setText(""+jumBul);
nor1.setText(""+jumNor);
}
private void hapusBobotBias(){
PreparedStatement p;
try{
String sql1 = "DELETE from bobotbias_hidden";
String sql2 = "DELETE from bobotbias_output";
p = c.prepareStatement(sql1);
p.executeUpdate();
p = c.prepareStatement(sql2);
p.executeUpdate();
p.close();
}catch (SQLException e){
JOptionPane.showMessageDialog(null, "Bobot Bias Gagal Dihapus!", "Error Message", 0);
}finally{
}
}
private void simpanBobotBiasHidden(){
PreparedStatement p;
String sql1,sql2;
try{
//bobot hidden
for(int i=0;i
for(int j=0;j
sql1 = "INSERT INTO bobotbias_hidden VALUES(?,?)";
p = c.prepareStatement(sql1);
p.setString(1, "v["+i+"]["+j+"]");
p.setDouble(2, v[i][j]);
p.executeUpdate();
p.close();
}
}
//bias hidden
for(int i=0;i
sql1 = "INSERT INTO bobotbias_hidden VALUES(?,?)";
p = c.prepareStatement(sql1);
p.setString(1, "bv["+i+"]");
p.setDouble(2, bv[0][i]);
p.executeUpdate();
p.close();
}
//jumlah hidden dan nilai inputan max
sql1 = "INSERT INTO bobotbias_hidden VALUES(?,?)";
p = c.prepareStatement(sql1);
p.setString(1, "jumlah hidden");
p.setDouble(2, jumHL);
p.executeUpdate();
p.close();
sql2 = "INSERT INTO bobotbias_hidden VALUES(?,?)";
p = c.prepareStatement(sql2);
p.setString(1, "nilai max");
p.setDouble(2, max);
p.executeUpdate();
p.close();
}catch (SQLException e){
JOptionPane.showMessageDialog(null, "Bobot Bias Hidden Gagal Disimpan!", "Error Message", 0);
}finally{
//clear();
}
}
private void simpanBobotBiasOutput(){
PreparedStatement p;
String sql;
try{
//bobot output
for(int i=0;i
for(int j=0;j
sql = "INSERT INTO bobotbias_output VALUES(?,?)";
p = c.prepareStatement(sql);
p.setString(1, "w["+i+"]["+j+"]");
p.setDouble(2, w[i][j]);
p.executeUpdate();
p.close();
}
}
//bias output
for(int i=0;i
sql = "INSERT INTO bobotbias_output VALUES(?,?)";
p = c.prepareStatement(sql);
p.setString(1, "bw["+i+"]");
p.setDouble(2, bw[0][i]);
p.executeUpdate();
p.close();
}
}catch (SQLException e){
JOptionPane.showMessageDialog(null, "Bobot Bias Output Gagal Disimpan!", "Error Message", 0);
}finally{
//clear();
}
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
home utama = new home();
this.dispose();
utama.setVisible(true);
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
double konsBelajar = Double.parseDouble(txtKonstantaBelajar.getText());
if (konsBelajar > 1.0){
JOptionPane.showMessageDialog(this, "Nilai konstanta belajar harus kurang dari 1");
}else{
jTextArea3.removeAll();
//assign parameter input dan target
int jumAll = jTable1.getRowCount();
int index = 0;
jumData = jumlah;
data = new double[jumData][jumInput];
target = new int[jumData][jumOutput];
nama = new String[jumData];
for(int i=0;i
if((Boolean)jTable1.getValueAt(i, 0)==true){
nama[index] = jTable1.getValueAt(i,1).toString();
for(int j=0;j
data[index][j] = Double.parseDouble(jTable1.getValueAt(i,j+2).toString());
}
target[index][0] = Integer.parseInt(jTable1.getValueAt(i,6).toString());
target[index][1] = Integer.parseInt(jTable1.getValueAt(i,7).toString());
index++;
}
}
//cari nilai maksimal dari inputan
max = 0;
for(int i=0;i
for(int j=0;j
if(data[i][j] > max){
max = data[i][j];
}
}
}
//normalisasi data inputan
for(int i=0;i
for(int j=0;j
data[i][j] = data[i][j]/max;
}
}
//procedure penghitungan BP
hitungBP(data, target, jumData);
}
}
//procedure hitungBP
private void hitungBP(double[][] x,int[][] t,int jmlData){
final double e = 2.718281828;
double[][] z,y;
double[] hiddenL,sy,q,sz;
int c,i,j,k;
int jmlinpt,jmlHL,jmlOutput,iterasi,maxIter,selang;
double zin,yin,jumlah,sse,galat;
double konsBelajar;
jmlHL = Integer.parseInt(txtJumlahHidden.getText());
maxIter = Integer.parseInt(txtMaksimalIterasi.getText());
galat = Double.parseDouble(txtSse.getText());
konsBelajar = Double.parseDouble(txtKonstantaBelajar.getText());
selang = Integer.parseInt(txtKelipatanIterasi.getText());
if (konsBelajar>=1){
JOptionPane.showMessageDialog(this, "melebihi batas");
}
// //set nilai konfigurasi jaringan
jmlinpt = jumInput;
jmlOutput = jumOutput;
jumHL = jmlHL;
//bobot x-z
v = new double[jmlinpt][jmlHL];
for(i=0;i
for(j=0;j
v[i][j] = Math.random();
}
}
//bias x-z
bv = new double[1][jmlHL];
for(i=0;i
bv[0][i] = Math.random();
}
//bobot z-y
w = new double[jmlHL][jmlOutput];
for(i=0;i
for(j=0;j
w[i][j] = Math.random();
}
}
//bias z-y
bw = new double[1][jmlHL];
for(i=0;i
bw[0][i] = Math.random();
}
/** hitung dan cari nilai z **/
zin = 0;
z = new double[jmlData][jmlHL];
for(i=0;i
for(j=0;j
zin = 1*bv[0][j];
for(c=0;c
zin += (x[i][c]*v[c][j]);
}
z[i][j] = 1/(1 + (Math.pow(e, (-(zin)))));
}
}
/** hitung dan cari nilai y **/
yin = 0;
y = new double[jmlData][jmlOutput];
for(i=0;i
for(j=0;j
yin = 1*bw[0][j];
for(k=0;k
yin += (z[i][k]*w[k][j]);
}
y[i][j] = 1/(1 + (Math.pow(e, (-(yin)))));
}
}
/** hitung sse **/
sse = 0;
for(i=0;i
for(j=0;j
sse += Math.pow((t[i][j]-y[i][j]), 2);
}
}
jTextArea3.append("iterasi: "+0+"; SSE: "+sse+"\n");
//** Masuk iterasi **//
iterasi = 0;
hiddenL = new double[jmlHL];
// System.out.println("iterasi: "+iterasi+"; SSE: "+sse);
do {
iterasi += 1;
for(i=0;i
//hitung nilai zin dan z
for(j=0;j
jumlah = 1*bv[0][j];
for(k=0;k
jumlah += (x[i][k]*v[k][j]);
}
hiddenL[j] = 1 / (1 + (Math.pow(e,-(jumlah))));
}
//hitung nilai yin dan y
for(j=0;j
jumlah = 1*bw[0][j];
for(k=0;k
jumlah += (hiddenL[k]*w[k][j]);
}
y[i][j] = 1 / (1 + (Math.pow(e,-(jumlah))));
}
//hitung galat informasi sy
sy = new double[jmlOutput];
for(j=0;j
sy[j] = (t[i][j]-y[i][j])*y[i][j]*(1-y[i][j]);
}
//hitung nilai dinz
q = new double[jmlHL];
for(j=0;j
q[j]=0;
for(k=0;k
q[j] += (sy[k]*w[j][k]);
}
}
//hitung nilai dz
sz = new double[jmlHL];
for(j=0;j
sz[j] = q[j]*hiddenL[j]*(1-hiddenL[j]);
}
//hitung bobot dan bias baru y
for(j=0;j
bw[0][j] += (konsBelajar*sy[j]*1);
for(k=0;k
w[k][j] += (konsBelajar*sy[j]*hiddenL[k]);
}
}
//hitung bobot dan bias baru z
for(j=0;j
bv[0][j] += (konsBelajar*sz[j]*1);
for(k=0;k
v[k][j] += (konsBelajar*sz[j]*x[i][k]);
}
}
}
//hitung dan cari nilai z
for(i=0;i
for(j=0;j
zin = 1*bv[0][j];
for(k=0;k
zin += (x[i][k]*v[k][j]);
}
z[i][j] = 1 / (1 + (Math.pow(e,(-(zin)))));
}
}
//hitung dan cari nilai y
for(i=0;i
for(j=0;j
yin = 1*bw[0][j];
for(k=0;k
yin += (z[i][k]*w[k][j]);
}
y[i][j] = 1 / (1 + (Math.pow(e,(-(yin)))));
}
}
//hitung sse
sse = 0;
for(i=0;i
for(j=0;j
sse += Math.pow((t[i][j]-y[i][j]), 2);
}
}
//selang tampilan
if(((iterasi%selang) == 0) || (sse
jTextArea3.append("iterasi: "+iterasi+"; SSE: "+sse+"\n");
}
series.add(sse,iterasi);
} while ((iterasigalat));
//chart
XYSeriesCollection dataset = new XYSeriesCollection(series);
JFreeChart chart = ChartFactory.createXYLineChart("Grafik Mean Squared Error (MSE)",
"SSE", "Iterasi", dataset,PlotOrientation.HORIZONTAL,true,true,true);
ChartPanel chartpanel = new ChartPanel(chart);
JPanel panelChart = new JPanel();
panelChart.setLayout(new BorderLayout());
panelChart.add(chartpanel,BorderLayout.NORTH);
JFrame frame = new JFrame();
frame.add(panelChart);
frame.pack();
setLocationRelativeTo(null);
frame.setVisible(true);
double mseNil = sse/jumData;
mse.setText(""+mseNil);
iterasicapai.setText(""+iterasi);
}
private void formWindowOpened(java.awt.event.WindowEvent evt) {
TampilData();
}
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
//count total diseas
int i = jTable1.getSelectedRow();
int getT1 = Integer.parseInt((String)jTable1.getModel().getValueAt(i,6));
int getT2 = Integer.parseInt((String)jTable1.getModel().getValueAt(i,7));
if((Boolean)jTable1.getValueAt(jTable1.getSelectedRow(), 0)==false){
jTable1.setValueAt(true, i, 0);
jumlah++;
if((getT1==0) && (getT2==0)){
jumAno += 1;
}else if((getT1==0) && (getT2==1)){
jumBul += 1;
}else if((getT1==1) && (getT2==0)){
jumBed += 1;
}else {
jumNor += 1;
}
}else{
jTable1.setValueAt(false, i, 0);
jumlah--;
if((getT1==0) && (getT2==0)){
jumAno -= 1;
}else if((getT1==0) && (getT2==1)){
jumBul -= 1;
}else if((getT1==1) && (getT2==0)){
jumBed -= 1;
}else {
jumNor -= 1;
}
}
jumlahdata1.setText(""+jumlah);
ano1.setText(""+jumAno);
bed1.setText(""+jumBed);
bno1.setText(""+jumBul);
nor1.setText(""+jumNor);
}
private void simpanActionPerformed(java.awt.event.ActionEvent evt) {
try{
//reset all data
for(int i=0;i
String ket = "Data Awal";
// String sql = "UPDATE perolehan_copy SET ket=? WHERE nama=?";
String sql = "UPDATE perolehan_copy SET ket=?";
PreparedStatement p = c.prepareStatement(sql);
p.setString(1, ket);
p.executeUpdate();
p.close();
}
//set data awal to data latih
for(int i=0;i
String ket = "Data Latih";
String sql = "UPDATE perolehan_copy SET ket=? WHERE nama=?";
PreparedStatement p = c.prepareStatement(sql);
p.setString(1, ket);
p.setString(2, nama[i]);
p.executeUpdate();
p.close();
}
//hapus bobot bias yang ada
hapusBobotBias();
//simpan bobot dan bias
simpanBobotBiasHidden();
simpanBobotBiasOutput();
JOptionPane.showMessageDialog(null, "Data Berhasil Disimpan!","Succes Message",1);
}catch (SQLException e){
JOptionPane.showMessageDialog(null, "Data Gagal Disimpan!", "Error Message", 0);
}finally{
//clear();
}
}
Form Pengujian
public class pengujian extends javax.swing.JFrame {
private DefaultTableModel tabel;
private final java.sql.Connection c = TugasAkhir.getConnection();
private double[][] data;
private int[][] target;
private String[] nama;
private String[] gangguan;
private int jumData;
public int jumHL;
public double max;
public static final int jumInput = 3;
public static final int jumOutput = 2;
public double[][] v,bv,w,bw;
private double[][] y;
public pengujian() {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int x = (dim.width-getWidth())/2;
int y = (dim.height-getHeight())/2;
setLocation(y, y);
initComponents();
}
private void tampilData(){
tabel = new DefaultTableModel(){
@Override
public boolean isCellEditable(int row, int col) {
return col == 0;
}
@Override
public Class> getColumnClass(int columnIndex) {
Class> clazz = String.class;
switch (columnIndex) {
case 0:
clazz = Boolean.class;
break;
}
return clazz;
}
@Override
public void setValueAt(Object aValue, int row, int column) {
if (aValue instanceof Boolean && column == 0) {
@SuppressWarnings("unchecked")
Vector rowData = (Vector)getDataVector().get(row);
rowData.set(0, (boolean)aValue);
fireTableCellUpdated(row, column);
}
}
};
jTable1.setModel(tabel);
tabel.addColumn("Pilih");
tabel.addColumn("Nama");
tabel.addColumn("Bobot 1");
tabel.addColumn("Bobot 2");
tabel.addColumn("Bobot 3");
tabel.addColumn("Gangguan");
tabel.addColumn("Target 1");
tabel.addColumn("Target 1");
tabel.getDataVector().removeAllElements();
tabel.fireTableDataChanged();
}
private void dataPilih(String jenisData){
try{
Statement s = c.createStatement();
String sql = "SELECT aa.nama AS nama,SUM(aa.bobot1) AS bobot1,SUM(aa.bobot2) AS bobot2,SUM(aa.bobot3) AS bobot3, bb.nama_gangguan, bb.target1 AS t1, bb.target2 AS t2 " +
" FROM (SELECT a.nama,SUM(a.bobot) AS bobot1,0 AS bobot2,0 AS bobot3,a.kode_gangguan,a.kode_kategori,a.ket " +
" FROM perolehan_copy AS a" +
" WHERE a.kode_kategori=1 GROUP BY a.nama " +
Dostları ilə paylaş: