• Tidak ada hasil yang ditemukan

Penerapan Jaringan Saraf Tiruan Algoritma Backpropagation Untuk Penyusunan Jadwal Mata Kuliah di Jurusan Matematika FMIPA USU

N/A
N/A
Protected

Academic year: 2017

Membagikan "Penerapan Jaringan Saraf Tiruan Algoritma Backpropagation Untuk Penyusunan Jadwal Mata Kuliah di Jurusan Matematika FMIPA USU"

Copied!
11
0
0

Teks penuh

(1)

LAMPIRAN

SOURCE CODE

=====================================================================

fungsi_utama.java

=====================================================================

import java.io.IOException;

import java.util.Scanner;

public class fungsi_utama

{

private static double mse;

private static float jum2;

public static void main (String[] args) throws IOException

{

int [][] matriks = new int [10][10];

int [][] matriksbanding = new int [10][10];

int [][] matriksC = new int [10][10];

int [][] matriksbanding2 = new int [10][10];

double [][] matriksjst =

{

{0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1}

,{0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2}

,{0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3}

,{0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4}

,{0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5}

,{0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6}

,{0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7}

,{0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8}

,{0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9}

,{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0}

};

double targetY[][] =

{

(2)

{0.0,0.2,0.2,0.2,0.2,1,1,1,1,1},

{0.5,0.3,0.3,0.3,0.3,1,1,1,1,1},

{0.0,0.4,0.4,0.4,0.4,1,1,1,1,1},

{0.7,0.5,0.5,0.5,0.5,1,1,1,1,1},

{0.8,0.6,0.6,0.6,0.6,1,1,1,1,1},

{1,1,1,1,1,1,1,1,1,1},

{1,1,1,1,1,1,1,1,1,1},

{1,1,1,1,1,1,1,1,1,1},

{1,1,1,1,1,1,1,1,1,1}

};

boolean sama = true;

for(int i = 0 ; i<6 ; i++)

{

for(int j = 1 ; j<6; j++)

{

if(targetY[0][0] == targetY[j][i])

sama = false;

}

}

mse = fungsi_backpropagation.init(matriksjst,targetY);

double jum3;

System.out.println();

if(jum2 == 0.0)

{

jum3 = jum2 +100;

}

else

{

jum3 = 100- jum2;

}

System.out.println(" ini adalah mse sesungguhnya: " +

mse);

double nilai = 0.02;

(3)

{

if(!sama)

{

System.out.println();

System.out.println("Not Find Solution");

}else{

System.out.println();

System.out.println("Find Solution");

}

}

else

{

System.out.println();

System.out.println("not Find Solution");

}

}

}

=====================================================================

fungsi_backpropagation.java

=====================================================================

import java.io.IOException;

import java.util.*;

class fungsi_backpropagation

{

private static final int NIN = 10;

private static final int NH = 10 ;

private static final int NOUT = 10 ;

private static final int PATTERN = 10;

static double X[][] = new double [PATTERN][20];

static double H[] = new double[NH];

static double Y[][] = new double [PATTERN][NOUT];

static double targetY [][] = new double [PATTERN][NOUT];

static double weightIH[][] = new double[NIN][NH];

(4)

static double biasH[] = new double[NH];

static double biasY[] = new double [NOUT];

static double deltaweightIH[][] = new double[NIN][NH];

static double deltaweightHO[][] = new double[NH][NOUT];

static double deltaY[] = new double[NOUT];

static double deltaH[] = new double [NH];

public static int nepoch = 10000;

public static int epoch;

public static double error = 0.02;

public static double learning_rate = 0.5;

public static double momentum =0.5;

public static int nImages =1;

public static boolean isFindSolution;

public static double mse;

private static Random random = new Random();

private static int rand ;

static int matriksbanding[][], matriks_banding2[][];

public static void backpropagation(double _learning_rate, int

_nepoch, double _error,

double _momentum, int _nImages)

{

learning_rate = _learning_rate;

nepoch = _nepoch;

error = _error;

momentum = _momentum;

nImages = _nImages;

}

public static double init(double _X[][], double _targetY[][])

{

int a, b, i, h, o, p, memorisasi;

double beta , min, max, eucval, pembagi=10000.0;

for(a = 0 ; a < 10 ; a++)

(5)

for( b = 0 ; b < 10 ; b++)

{

X [a][b] = _X[a][b];

}

}

for(a =0 ; a< PATTERN; a++)

{

for(b=0; b<NOUT; b++)

{

targetY[a][b] = _targetY[a][b];

}

}

beta = 0.7 * ( Math.pow(NH, 1.0/NIN));

min = -beta * pembagi;

max = beta * pembagi;

for(h=0 ; h< NH; h++)

{

eucval =0.0;

for( i = 0 ; i<NIN; i++)

{

rand = (int) random.nextInt(100000);

weightIH[i][h]= ((rand % (int)(max-min))+

min)/ pembagi;

deltaweightIH[i][h] = 0.0;

eucval += Math.pow(weightIH[i][h], 2);

}

eucval = Math.sqrt(eucval);

for(i = 0 ; i<NIN ; i++)

{

weightIH[i][h] = (beta * weightIH[i][h] ) /

eucval;

}

(6)

biasH[h] = ((rand % (int)(max-min))+ min)/ pembagi;

}

for(o = 0 ; o < NOUT; o++)

{

for(h=0 ; h < NH; h++)

{

rand = (int) random.nextInt(100000);

weightHO[h][o] = ((rand % (int)(max-min))+

min)/ pembagi;

deltaweightHO[h][o] =0;

}

rand = (int) random.nextInt(100000);

biasY[o] = ((rand % (int)(max-min))+ min)/ pembagi;

}

boolean tes = training();

memorisasi = 0;

for(p=0; p<10; p++)

{

for(o=0; o<NOUT; o++)

{

if(Y[p][o] >= 0.5)

{

Y[p][o] = 1;

}

else if (Y[p][o] < 0.5)

{

Y[p][o] = 0;

}

}

if(Y[p][0]==targetY[p/nImages][0] &&

Y[p][1]==targetY[p/nImages][1] &&

Y[p][2]==targetY[p/nImages][2] &&

(7)

Y[p][4]==targetY[p/nImages][4])

{

memorisasi ++;

}

}

System.out.println("Learning rate : "+ learning_rate );

System.out.println("Momentum : "+ momentum );

System.out.println("Epoch : "+ epoch );

System.out.print("Memorisasi : " + memorisasi + "/" + p +

"(" );

System.out.print(p-memorisasi); System.out.print(") : " );

System.out.print(((double)memorisasi/p*100) + "%");

return mse;

}

public static boolean training()

{

int p,o,numberTarget, a,b;

epoch =0;

do

{

epoch++;

for(p=0;p<10 ; p++)

{

numberTarget = p/ nImages;

calNet(p, numberTarget);

deltaChange(p, numberTarget);

weightAndbiasChange(p);

}

calMSE();

}

(8)

return isFindSolution;

}

public static void calNet(int p, int numberTarget)

{

int i,h,o;

for(h=0; h<NH ; h++)

{

H[h] = 0.0;

for(i =0; i<NIN ; i++)

{

H[h] += X[p][i] * weightIH[i][h];

}

H[h] += biasH[h];

H[h] = sigmoid(H[h]);

}

for(o=0; o<NOUT ; o++)

{

Y[p][o] = 0.0;

for(h = 0 ; h<NH; h++)

{

Y[p][o] += H[h] * weightHO[h][o];

}

Y[p][o] += biasY[o];

Y[p][o] = sigmoid(Y[p][o]);

}

}

public static void deltaChange(int p, int numberTarget)

{

int h, o;

double sigmadeltaY;

for(o=0; o<NOUT; o++)

(9)

deltaY[o] = (targetY[numberTarget][o]-Y[p][o]) * Y[p][o] *

(1.0-Y[p][o]);

}

for(h=0; h<NH; h++)

{

sigmadeltaY = 0.0;

for(o=0; o<NOUT; o++)

{

sigmadeltaY += deltaY[o] * weightHO[h][o];

}

deltaH[h] = sigmadeltaY * H[h] * (1-H[h]);

}

}

public static void weightAndbiasChange(int p)

{

int i, h, o;

for(h=0; h<NH; h++)

{

for(o=0; o<NOUT; o++)

{

deltaweightHO[h][o] = (learning_rate * deltaY[o] * H[h]) +

(momentum * deltaweightHO[h][o]);

weightHO[h][o] += deltaweightHO[h][o];

}

}

for(o=0; o<NOUT; o++)

{

biasY[o] += learning_rate * deltaY[o];

}

for(i=0; i<NIN; i++)

{

for(h=0; h<NH; h++)

{

deltaweightIH[i][h] = (learning_rate * deltaH[h] * X[p][i]) +

(momentum * deltaweightIH[i][h]);

(10)

}

}

for(h=0; h<NH; h++)

{

biasH[h] += learning_rate * deltaH[h];

}

}

public static void calMSE()

{

int a, b;

mse = 0.0;

for(a=0; a<nImages*10; a++)

{

for(b=0; b<NOUT; b++)

{

mse += Math.pow(Y[a][b]-targetY[a/nImages][b], 2);

}

}

mse = ((mse/2))/(nImages*10);

System.out.println(mse);

if(mse>error)

isFindSolution = false;

else

isFindSolution = true;

}

public static double sigmoid(double x)

{

return 1.0/(1.0+Math.exp(-x));

}

public static float perbandingan (int matriksbandingpar[][],

int matriksbandingpar2[][], int width, int height)

{

int jum =0;

(11)

int matriksbanding[][] = new int[width][height];

int matriks_banding2[][] = new int[width][height];

matriksbanding = matriksbandingpar;

matriks_banding2 = matriksbandingpar2;

for(int i= 0; i<width ; i++)

{

for(int j = 0 ; j< height; j++)

{

matriksC[i][j] = (matriksbandingpar2[i][j]) -

(matriksbandingpar[i][j] );

matriksC[i][j] = matriksC[i][j] *

matriksC[i][j];

jum = jum + matriksC[i][j];

}

}

float jum2 = ((float)jum/((float)width * (float)

height))/10000;

if(jum2 < 0)

{

jum2 = jum2 * -1;

}

return jum2;

}

Referensi

Dokumen terkait

1) Novasi subyektif aktif adalah suatu perjanjian yang bertujuan menggantikan Kreditur lama dengan seorang Kreditur baru. Misalnya Bank A memberikan kredit atau

DESKRIPSI UNIT : Unit ini mengidentifikasi kompetensi yang dibutuhkan untuk memperbaiki sistem pengapian konvensional (platina) atau sistem pengapian elektronik pada

Nilai rata-rata potensi produksi gas diterjemahkan sebagai parameter bagian bahan organik (BO) yang potensial terfermentasi didalam rumen (b) dan laju produksi

Untuk mengetahui Implementasi Program Bantuan Operasional Sekolah (BOS) Pada Seksi Pembinaan Sekolah Menengah Pertama di Dinas Pendidikan dan Kebudayaan Daerah

Berikut contoh pernyataan penelitian yang berhubungan dengan variabel kepuasan kerja guru : “saya puas dengan pekerjaan sebagai guru“, “saya puas dengan pilihan pekerjaan

Mata Pelajaran Nilai Rata-rata Rapor1. Nilai

Pendidikan Agama dan Budi Pekerti3. Pendidikan Pancasila

Akibat dari asimetri informasi ini, harga saham yang belum mencapai pada tiitk keseimbangan pasar dimanfaatkan oleh investor yang mengetahui tentang informasi