bab iii metode penelitian 3.1 pengumpulan dan...
TRANSCRIPT
35 Muhammad Yunus N, 2017 PERBANDINGAN PERAMALAN BEBAN PUNCAK BERBASIS ALGORITMA FUZZY C-MEANS DAN FUZZY SUBTRACTIVE CLUSTERING DENGAN OPTIMASI CLUSTER HARI DAN JUMLAH INPUT repository.upi.edu | perpustakaan.upi.edu
BAB III
METODE PENELITIAN
3.1 Pengumpulan dan Pegolahan Data Beban Listrik
Data beban lisrtik yang digunakan adalah beban listrik harian yang aktual di
Region Jawa Barat selama tahun 2006-2014. Data tersebut didapatkan dari PT.
PLN (Persero) Pusat Pengaturan Beban (P2B) yang berlamat di Jalan PLN Raya
No.11, Gandul - Cinere, Jakarta Selatan. Selain itu data tersbut juga dilengkapi
dengan data beban historis yang didapatkan dari PT.PLN (Persero) P3B Jawa Bali
Region II Jawa Barat yang beralamat di Jalan Moch Toha Km.04 Komp.PLN/GI
Cigereleng Bandung.
Data harian tersebut merupakan pemakaian beban listrik pelanggan se-Jawa
Barat yang dihitung setiap 30 menit. Kemudian data tersebut diambil pada waktu
beban puncak saja, yaitu pukul 17.00 s.d 22.00 WIB. Setelah itu diambil sebanyak
20 hari yang kemudian dibagi lagi menjadi 5 hari, 10 hari dan 15 hari sebagai
sampael yang digunakan dalam penelitian ini. Input sampel yang dipilih dari
setiap bulan, yang selanjutnya diklasifikasi berdasarkan tipe hari. Klasifikasi hari
yang ditetapkan adalah sebagai berikut :
Tabel 3.1
Klasifikasi Tipe Hari
No. Tipe Hari Hari
1 Hari Kerja Senin s.d Jum'at kecuali libur nasional
2 Hari Akhir Pekan Sabtu dan Minggu kecuali libur nasional
3 Hari libur Nasional Libur nasional dan cuti bersama
Data-data tersebut dijadikan input pelatihan dan pengujian pada algoritma Fuzzy
C-Means dan Fuzzy Subtracrive Clustering dalam script yang akan dibuat.
Adapun perangkat lunak yang digunakan untuk mengolah data adalah MS. Excell
2106 dan perangkat lunak untuk melakukan simulasi peralaman adalah Matlab
versi R2015a.
36
Muhammad Yunus N, 2017 PERBANDINGAN PERAMALAN BEBAN PUNCAK BERBASIS ALGORITMA FUZZY C-MEANS DAN FUZZY SUBTRACTIVE CLUSTERING DENGAN OPTIMASI CLUSTER HARI DAN JUMLAH INPUT repository.upi.edu | perpustakaan.upi.edu
Pengambilan data input pengujian dari tahun ke tahun dengan klasifikasi yang
ditetapkan adalah dengan alasan sebagai berikut:
1. Dengan data input yang diambil dari masing-masing tahun yaitu sejak
tahun 2006 s.d 2012 adalah dapat mengetahui pertumbuhan beban listrik.
2. Klasifikasi hari yang dibuat merupakan asumsi berdasarkan hasil studi
literatur bahwa pola beban pada hari kerja cenderung sama tiap tahunnya.
Begitu pula pada polda beban hari libur nasional dan akhir pekan memilik
pola yang sama. Sedangkan pola beban listrik antara ketiga kelompok
tersebut menunjukan perbedaan yang signifikan. Maka dengan
mengelompokan perhitungan makan akan meningkatkan estimasi yang
akan dihitung.
3. Dengan membagi data input menjadi 4 macam dimaksudkan untuk
mengetahui pengaruh banyaknya jumlah input terhadap akurasi peramalan
pada algoritma yang akan diuji.
Sebagai analisa data yang digunakan untuk dilatih dalam algoritma FSC dan
FCM dibagi menjadi tiga kelompok yaitu hari libur nasional, hari kerja (senin s.d
jum’at), hari libur akhir pekan (sabtu dan minggu). Gambar 3.1 menunjukan
Ketiga kelompok beban listrik tersebut memiliki perbedaan yang signifikan
selama tahun 2006 s.d 2014, yang mana beban listrik pada hari kerja (senin-jumat)
adalah cenderung lebih tinggi daripada hari akhir pekan (sabtu-minggu).
Sementara beban listrik pada hari libur nasional cenderung lebih rendah namun
mengalami fluktuasi yang tinggi dibanding dengan kurva beban hari kerja dan
akhir pekan, sehingga ketiga beban ini perlu diklasifikasi untuk meningkatkan
akurasi peramalan beban listrik.
37
Muhammad Yunus N, 2017 PERBANDINGAN PERAMALAN BEBAN PUNCAK BERBASIS ALGORITMA FUZZY C-MEANS DAN FUZZY SUBTRACTIVE CLUSTERING DENGAN OPTIMASI CLUSTER HARI DAN JUMLAH INPUT repository.upi.edu | perpustakaan.upi.edu
Gambar 3.1 Tipikal Lenggam Waktu Beban Puncak Sistem 2006-2014
Pada penelitian ini data yang diuji diambil beberapa sample yang akan
dilatih yaitu 20, 15, 10 dan 5 input data yang diambil dari tiap tahun dari masing-
masing kelompok hari yang kemudian akan dibandingkan hasilnya. Data lengkap
sampel yang digunakan dapat dilihat pada lampiran.
3.2 Langkah Penelitian
Pada bagian sebelumnya dijelaskan pengambilan dan pengolahan data. Hal
tersebut merupakan bagian dari serangkaian kegiatan penelitian dalam skripsi ini.
Ada beberapa langkah yang dikerjakan dalam mencapai tujuan penelitia ini
sebagaimana dijelaskan pada penduahuluan, penelitian ini bertujuan mendapatkan
hasil peramalan berbasis algoritma FCM dan FSC dengan user interface yang
kemudian dibandingkan dengan peramalan dari RBS PLN. Adapun langkah-
langkah penelitian ini dijelaskan oleh diagaram alir pada gambar 3.2.
38
Muhammad Yunus N, 2017 PERBANDINGAN PERAMALAN BEBAN PUNCAK BERBASIS ALGORITMA FUZZY C-MEANS DAN FUZZY SUBTRACTIVE CLUSTERING DENGAN OPTIMASI CLUSTER HARI DAN JUMLAH INPUT repository.upi.edu | perpustakaan.upi.edu
Gambar 3.2 Flowchart Langkah-langkah Penelitian
3.3 Pemodelan Algoritma Fuzzy C-Means
Penjelasan algoritma fuzzy c-means yang digunakan adalah sebagai berikut
(Miyamoto, 2008):
1. Input data yang akan di cluster X, berupa matriks berukuran n x m
(n=jumlah sampel data, m=data per 30 menit).
2. Bangkitkan bilangan random untuk matriks partisi , sebagai berikut :
[
[ ] [ ] [ ]
[ ] [ ] [ ]
[ ] [ ] [ ]
] (3.1)
39
Muhammad Yunus N, 2017 PERBANDINGAN PERAMALAN BEBAN PUNCAK BERBASIS ALGORITMA FUZZY C-MEANS DAN FUZZY SUBTRACTIVE CLUSTERING DENGAN OPTIMASI CLUSTER HARI DAN JUMLAH INPUT repository.upi.edu | perpustakaan.upi.edu
3. Tentukan nilai pangkat (c) > 1, jumlah cluster (w) = 2, Maksimum iterasi
(MaxIter) = 100, Error terkecil (ξ) = , Fungsi obyektif =
random, Iterasi awal (t) = t+1. Nilai tersebut telah seusai dengan kondisi
default pada Matlab.
4. Hitung pusat vektor tiap cluster untuk matriks partisi tersebut sebagai
berikut :
∑
∑
5. Modifikasi tiap-tiap nilai keanggotaan sebagai berikut :
Jika , maka [∑ (| |
| | )
⁄
]
Jika dan i=g, maka =1
Jika dan i≠g, maka =0
Jika tidak ditemukan makan akan terjadi error, selanjutnya kembali ke
langkah-3 untuk merubah nilainya.
6. Masukan hasil modifikasi nilai keanggotan ke matriks partisi baru
7. Hitung fungsi obyektif :
∑∑ | |
8. Cek kondisi untuk berhenti, yaitu :
| |
Jika iya maka berhenti dan jika tidak ulangi kembali ke langkah 4 dengan
menaikan iterasinya.
(3.2)
(3.3)
(3.4)
(3.5)
40
Muhammad Yunus N, 2017 PERBANDINGAN PERAMALAN BEBAN PUNCAK BERBASIS ALGORITMA FUZZY C-MEANS DAN FUZZY SUBTRACTIVE CLUSTERING DENGAN OPTIMASI CLUSTER HARI DAN JUMLAH INPUT repository.upi.edu | perpustakaan.upi.edu
Berikut adalah flowchart dari algortima Fuzzy C-Means :
Gambar 3.3 Flowchart Algoritma Fuzzy C-Means
41
Muhammad Yunus N, 2017 PERBANDINGAN PERAMALAN BEBAN PUNCAK BERBASIS ALGORITMA FUZZY C-MEANS DAN FUZZY SUBTRACTIVE CLUSTERING DENGAN OPTIMASI CLUSTER HARI DAN JUMLAH INPUT repository.upi.edu | perpustakaan.upi.edu
3.4 Pemodelan Algoritma Fuzzy Subtractive Clustering
Dibawah ini adalah flowchart algortima fuzzy subtractive clustering :
Gambar 3.4 Flowchart Algoritma Fuzzy Subtractive Clustering
42
Muhammad Yunus N, 2017 PERBANDINGAN PERAMALAN BEBAN PUNCAK BERBASIS ALGORITMA FUZZY C-MEANS DAN FUZZY SUBTRACTIVE CLUSTERING DENGAN OPTIMASI CLUSTER HARI DAN JUMLAH INPUT repository.upi.edu | perpustakaan.upi.edu
Berikut ini adalah algoritma fuzzy subtractive clustering (Kusumadewi, 2013):
1. Input data yang akan dicluster : Xij dengan i = 1,2,…,n; dan j = 1,2,…,m.
2. Tetapkan nilai influence range ( ) = 0,1 0,9 , squash factor(q) = 1,25,
Accept_ratio = 0,5, Reject_ratio = 0,15, minimum yang diperbolehkan
(Xmin), maksimum yang diperbolehkan (Xmax)
3. Normalisasi data
4. Tentukan potensi awal tiap-tiap titik data. Kerjakan hingga i = n
j = 1,2,…,m. Hitung:.
(
) j = 1,2,…,m; k = 1,2,…,m
Potensi awal :
Jika m = 1, maka ∑ ( )
Jika m > 1, maka ∑ (∑
)
i = i+1
5. Cari titik dengan potensi tertinggi
a. M = max [ | ];
b. h = i, sedemikian hingga ;
6. Tentukan pusat cluster dan kurangi potensinya terhadap titik-titik
disekitarnya.
a. Center = [];
b. j=1,2,…,m;
c. (jumlah cluster);
d. Kondisi = 1;
e. Z = M;
f. Kerjakan jika kondisi ≠ 0 dan Z ≠ 0 :
Kondisi = 0 (sudah tidak ada calon pusat lagi)
Rasio = Z/M
(3.6)
(3.7)
(3.8)
(3.9)
43
Muhammad Yunus N, 2017 PERBANDINGAN PERAMALAN BEBAN PUNCAK BERBASIS ALGORITMA FUZZY C-MEANS DAN FUZZY SUBTRACTIVE CLUSTERING DENGAN OPTIMASI CLUSTER HARI DAN JUMLAH INPUT repository.upi.edu | perpustakaan.upi.edu
Jika rasio > accept_ratio, maka kondisi = 1 (ada pusat calon
baru)
Jika tidak, maka :
o Jika rasio > reject_ratio, (calon baru akan diterima
sebagai pusat jika keberadaannya akan memberikan
keseimbangan terhadap data-data yang letaknya cukup
jauh dengan pusat cluster yang telah ada), maka
kerjakan
Md = -1;
Kerjakan untuk i = 1 sampai i = C:
i.
, j = 1,2,…,m
ii. ∑ ( )
iii.
o Smd = √ ;
o Jika (Rasio + Smd) ≥ 1, maka kondisi = 1; (Data
diterima sebagai pusat cluster)
o Jika (Rasio + Smd) < 1, maka kondisi = 2; (Data tidak
akan dipertimbangkan kembali sebagai pusat cluster)
Jika kondisi = 1 (calon pusat baru diterima sebagai pusat baru),
kerjakan :
o C = C+1;
o = V;
o Kurangi potensi dari titik-titik di dekat pusat cluster :
i.
; j = 1,2,…,m; i = 1,2,…,n.
ii.
iii. D = D – Dc
iv. Jika maka ; i = 1,2,…,n.
v. Z = max[ |i=1,2,…,n];
vi. Pilih h = i, sedemikian hingga = Z;
(3.10)
(3.11)
44
Muhammad Yunus N, 2017 PERBANDINGAN PERAMALAN BEBAN PUNCAK BERBASIS ALGORITMA FUZZY C-MEANS DAN FUZZY SUBTRACTIVE CLUSTERING DENGAN OPTIMASI CLUSTER HARI DAN JUMLAH INPUT repository.upi.edu | perpustakaan.upi.edu
Jika kondisi = 2 (Calon pusat baru tidak diterima sebagai pusat
baru), maka
o
o Z = max[ |i=1,2,…,m]
o Pilih h = i, sedemikian hingga = Z;
7. Kembali pusat cluster dari bentuk ternormalisasi ke bentuk semula.
( )
8. Hitung nilai sigma cluster.
( ) √
9. Untuk mempersingkat notasi selanjutanya center akan disebut sebagai C.
Hasil dari algoritma Fuzzy Subtractive Clustering ini berupa matriks pusat
cluster (C) dan sigma (σ) akan digunakan untuk menentukan nilai
parameter fungsi keanggotan Gauss seperti terlihat pada gambar 2.3
Dengan kurva gauss tersebut, maka derajat keanggotaan suatu titik data
pada cluster ke-k, adalah :
∑
( )
3.5 Menentukan Optimasi Cluster Hari dan Data Latih
Untuk meningkatkan hasil perhitungan menggunakan algoritma Fuzzy
Subtractive Clustering dan Fuzzy C-Mean diperlukan beberapa optimasi varibel,
baik dalam input maupun inisiasi persamaan. Pada penelitian ini optimasi yang
akan diuji adalah sebagai berikut :
1. Banyaknya input
Input yang dimasukan dalam program yang akan dilatih adalah 4
kelompok input yang masing-masing akan diuji dan dievaluasi hasilnya,
yaitu sebanyak 5 data, 10, 15 dan 20 input. Hasil evaluasi dari perhitungan
dengan 5 input akan diabdingkan dengan 10 input, begitu juga degan yang
lainnya. Keempat data yang diolah ditampilkan pada lampiran.
(3.12)
(3.13)
(3.14)
(3.15)
45
Muhammad Yunus N, 2017 PERBANDINGAN PERAMALAN BEBAN PUNCAK BERBASIS ALGORITMA FUZZY C-MEANS DAN FUZZY SUBTRACTIVE CLUSTERING DENGAN OPTIMASI CLUSTER HARI DAN JUMLAH INPUT repository.upi.edu | perpustakaan.upi.edu
2. Cluster hari
Cluster hari maksudnya adalah pengelompokan hari-hari dari seluruh data
historis menjadi tiga kelompok yaitu hari kerja, akhir pekan dan libur
nasional sebagaimana dijelaskan pada sub bab 3.1. Hasil perhitungan
ketiga kelompok hari tersebut masing-masing akan dibandingkan dan
dievaluasi sehingga hasil peramalan jadi lebih akurat. Data hari libur dan
hari yang diambil sebagi perhitungan ditampilkan pada lampiran.
3. Influence Range
Pada algoritma Fuzzy Subtractive Clustering diperlukan penentuan
besarnya Influence Range, karena hal ini akan sangat berpengaruh
terhadap hasil permalan. Sebagaimana telah ditetapkan sebagai Influence
Range yang akan dicoba adalah 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8 dan 0,9.
Hasil peramalan yang terbaik kemudian akan diambil untuk dibandingkan
dengan hasil perhitungan dengan algoritma fuzzy c-means.
3.6 Pemrograman Pada Matlab
Algoritma Fuzzy Subtractive Clustering dan Fuzzy C-Means selanjutnya akan
diterapkan pada script pada program M-file Matlab. Kemudian untuk
mempermudah pengoperasian (runnig) M-file ditambah dengan interface yang
dibuat dengan program GUIDE pada Matlab. Data input yang digunakan
dimasukan dalam program Ms Excel yang dihubungkan dengan GUI. Instruksi
(syntax) untuk menyusun script yang dibangun pada Matlab adalah sebagai
berikut :
1. Untuk membuat halaman utama script yang ditampilkan dalam figure:
function varargout = Main(varargin)
2. Inisialisasi GUI :
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
46
Muhammad Yunus N, 2017 PERBANDINGAN PERAMALAN BEBAN PUNCAK BERBASIS ALGORITMA FUZZY C-MEANS DAN FUZZY SUBTRACTIVE CLUSTERING DENGAN OPTIMASI CLUSTER HARI DAN JUMLAH INPUT repository.upi.edu | perpustakaan.upi.edu
'gui_OpeningFcn', @Main_OpeningFcn, ...
'gui_OutputFcn', @Main_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
3. Menampilkan logo dan judul :
a = imread('logo_UPI.jpg');
axes(handles.axes2)
imshow(a);
handles.output = hObject;
guidata(hObject, handles);
4. Memasukan data perhitungan
global loadedTrain;
loadedTrain = 0;
[NUM_input,TXT_input,RAW_input]=xlsread('input_data.xls');
Fy1 = cell2mat(RAW_input);
Fy1Cells = mat2cell(Fy1,ones(1,size(Fy1,1)),ones(1,size(Fy1,2)));
Fy1Str = cellfun(@(c)num2str(c,'%.2f'),Fy1Cells,'un',0);
set(handles.uitable1,'Data',Fy1Str);
loaded = 1;
close(h);
save input.mat NUM_input TXT_input RAW_input;
5. Inisialisasi FIS dengan Subtractive Clustering :
X=NUM_test;
47
Muhammad Yunus N, 2017 PERBANDINGAN PERAMALAN BEBAN PUNCAK BERBASIS ALGORITMA FUZZY C-MEANS DAN FUZZY SUBTRACTIVE CLUSTERING DENGAN OPTIMASI CLUSTER HARI DAN JUMLAH INPUT repository.upi.edu | perpustakaan.upi.edu
DtCluster=X;
inp=DtCluster(:,1:(size(X,2)-1))
out=DtCluster(:,size(X,2))
6. Membuat FIS dengan Fuzzy Subtractive Clustering :
fismat=genfis2(inp,out,n)
save hasilLatih.mat fismat
7. Mendapatkan influence range
n= str2num (get(handles.edit2,'String'))
8. Menghitung peramalan dengan Subtractive Clustering :
load('hasilLatih.mat')
fuzout=evalfis(inp,fismat)
set(handles.uitable2, 'data', fuzout);
9. Inisialisasi FIS dengan Fuzzy C-Means :
X=NUM_test;
DtCluster=X;
inp=DtCluster(:,1:(size(X,2)-1))
out=DtCluster(:,size(X,2))
10. Membuat FIS dengan Fuzzy C-Means :
fismat=genfis2(inp,out,n)
save hasilTrainFCM.mat fisFCM
11. Menghitung peramalan dengan Fuzzy C-Means :
load hasilTrainFCM.mat
fuzout=evalfis(inp,fisFCM)
set(handles.uitable4, 'data', fuzout);
12. Menyimpan data :
save hasilLatih.mat fismat
13. Memuat data :
load test.mat
48
Muhammad Yunus N, 2017 PERBANDINGAN PERAMALAN BEBAN PUNCAK BERBASIS ALGORITMA FUZZY C-MEANS DAN FUZZY SUBTRACTIVE CLUSTERING DENGAN OPTIMASI CLUSTER HARI DAN JUMLAH INPUT repository.upi.edu | perpustakaan.upi.edu
14. Menghitung selisih error :
error=fuzout-out
15. Menampilkan data pada GUI
set(handles.uitable5, 'data', error);
16. Menampilkan grafik
plot(r,fuzout1,'b--o',r,out1,'--r*');
title('Real (*)vs FCM Prediction(o)');
xlabel('Time/30 minutes');ylabel('Peak Load (MW)');
17. Menampilkan Help
helpdlg('Load Data First !');
3.7 Metode Analisis Error Hasil Peramalan
Dari hasil running program pada Matlab, nilai output yang didapat harus
didefinisikan dalam prosedur pengukuran statistik yang baku agar dapat
dibandingkan hasilnya model peramalan lain. Karena itu diperlukan metode
untuk menghasilkan error index yang tepat sehingga analisa evaluasi dapat
dilakukan. Metode yang digunakan dalam penelitian ini adalah sebagai berikut :
1. RMSE atau Root Mean Square Error digunakan untuk menyatakan index
rata-rata kesalahan peramalan dalam satuan input yang mana dalam
penilitian ini adalah Mega Watt (MW). Berdasakan persamaan RMSE
yang dinyatakan oleh Bas (2015) seperti dijelaskan pada sub bab 2.8,
maka variabel yang dibutuhkan untuk menghitung RMSE adalah beban
aktual, hasil peramalan dalam periode yang sama, dalam penelitian ini
yaitu sebanyak 11 period beban per 30 menit dari pukul 17.00 s.d 22. Hasil
permalan pada setiap model input baik 5, 10, 15 dan 20 dan juga pada
setiap model klasifikasi hari akan dihitung berapa besar RMSE-nya.
Perhitungan RMSE dilakukan didalam program Matlab R2015a, berikut
ini adalah syntax yang digunakan :
49
Muhammad Yunus N, 2017 PERBANDINGAN PERAMALAN BEBAN PUNCAK BERBASIS ALGORITMA FUZZY C-MEANS DAN FUZZY SUBTRACTIVE CLUSTERING DENGAN OPTIMASI CLUSTER HARI DAN JUMLAH INPUT repository.upi.edu | perpustakaan.upi.edu
a. Untuk menghitung RMSE :
p= num2str (norm(fuzout-out)/sqrt(length(fuzout)))
b. Untuk menampilkan hasil perhitungan :
set(handles.RMSE1, 'string', p);
c. Untuk membuat tombol start perhitungan :
function RMSE2_CreateFcn(hObject, eventdata, handles)
2. Mean Absolute Percentage Error atau MAPE merupakan indeks kesalahan
peramalan beban terhadap data aktual dalam satuan persentase (%).
Berdasakan persamaan MAPE yang dinyatakan oleh Yu (2013) seperti
dijelaskan pada sub bab 2.9, maka variabel yang diperlukan dalam
perhitungan MAPE adalah sama seperti perhitungan RMSE. Namun
MAPE digunakan untuk menyatakan akurasi permalan terbaik dari
masing-masing percobaan yang akan dibandingkan berikutnya. MAPE
dihitung dalam Ms Office, karena data yang diambil hanya data yang akan
dibandingkan saja. Berikut adalah contoh syntax pada Ms Excell :
a. Menghitung MAPE per periode :
=F5/B5*100
a. Menghitung Avarage MAPE (EMAPE) :
=SUM(K5:K15)/11
3.8 Perhitungan Model Matematis
Model matematis merupakan persamaan linear hasil peramalan terhadap data
input pada GUI berbasis algoritma FSC dan FCM. Persamaan ini berguna sebagai
penyederhaan fungsi dari algoritma FSC dan FCM. Sehingga pada peramalan
berikutnya cukup dengan menggunakan persamaan yan telah dihasilkan tersebut.
Persamaan matematis dihasilkan dengan menghitung data prediksi terhadap data
input dengan menggunakn metode pseudinverse. Metode perhitungan dijelaskan
pada sub-bab 2.10, moore-penrose pseudoinverse dihitung dengan menggunakan
apalikasi Matlab dengan menggunakan coding. Berikut adalah contoh syntax
perhitungan model matematis dengan menggunakan pseudo inverse :
constanta = pinv(input)*prediksi
testing = input * constanta