Anda di halaman 1dari 8

JOBSHEET

SISTEM CERDAS
FUZZY

S1 TEKNIK ELEKTRO
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS NEGERI MALANG
2019
PRAKTIKUM SISTEM CERDAS – FUZZY

A. Tujuan
 Mahasiswa diharapkan mampu mendesain fuzzifikasi, Inference Rule, dan Defuzzifikasi
dari Kontrol Motor.
 Mahasiswa diharapkan mampu menerapkan sistem fuzzy pada mikrokontroler
berdasarkan sistem fuzzy yang dibuat.
B. Alat & Bahan
 Komputer/Laptop yang terinstall software MATLAB, Arduino atau CV-AVR
C. Dasar Teori
a. Fuzzy System
Sistem Fuzzy adalah suatu sistem yang menggunakan himpunan fuzzy untuk
memetakan suatu inputan menjadi ouput tertentu. Misalnya, jika anda mengetahui
seberapa layanan pada restaurant tersebut, anda dapat menentukan berapa jumlah tip
yang layak diberikan kepada pelayan.
Secara umum dalam sistem logika fuzzy terdapat empat buah elemen dasar, yaitu
Basis kaidah (rule base), yang berisi aturan-aturan secara linguistik yang bersumber dari
para pakar. Suatu mekanisme pengambilan keputusan (inference engine), yang
memperagakan bagaimana para pakar mengambil suatu keputusan dengan menerapkan
pengetahuan (knowledge). Proses fuzzifikasi (fuzzification), yang mengubah besaran
tegas (crisp) ke besaran fuzzy. Proses defuzzifikasi (defuzzification), yang mengubah
besaran fuzzy hasil dari inference engine, menjadi besaran tegas (crisp).
Logika Fuzzy adalah suatu cara yang tepat untuk memetakan suatu ruang input ke
dalam ruang output. Untuk sistem yang sangat rumit, penggunaan logika fuzzy (fuzzy
logic) adalah salah satu pemecahannya. Sistem tradisional dirancang untuk mengontrol
keluaran tunggal yang berasal dari beberapa masukan yang tidak saling berhubungan.
Karena ketidaktergantungan ini, penambahan masukan yang baru akan
memperumit proses kontrol dan membutuhkan proses perhitungan kembali dari semua
fungsi . Kebalikannya, penambahan masukan baru pada sistem fuzzy, yaitu sistem yang
bekerja berdasarkan prinsip-prinsip logika fuzzy, hanya membutuhkan penambahan
fungsi keanggotaan yang baru dan aturan-aturan yang berhubungan dengannya.

Langkah Umum Pengembangan Model Fuzzy


Gambar 1. Langkah – Langkah Pengembangan Sistem Fuzzy
b. Fuzzyfikasi
Fuzzifikasi yaitu suatu proses untuk mengubah suatu masukan dari bentuk tegas
(crisp) menjadi fuzzy (variabel linguistik) yang biasanya disajikan dalam bentuk
himpunan-himpunan fuzzy dengan suatu fungsi kenggotaannya masing-masing. Setelah
menentukan jumlah input dan output yang akan digunakan, langkah selanjutnya adalah
dengan mengatur membership function atau fungsi keanggotaan. Terdapat 4 fungsi yang
sering digunakan, yakni fungsi sigmoid, Fungsi phi, fungsi trapesium dan fungsi segitiga.
c. Inference Rule
Inference rule melakukan penalaran menggunakan fuzzy input dan fuzzy rules
yang telah ditentukan sehingga menghasilkan fuzzy output. pada umumnya aturan-aturan
fuzzy dinyatakan dalam bentuk “IF THEN” yang merupakan inti dari relasi fuzzy.
Terdapat 2 model dalam penentuan inference rule, yakni metode Mamdani dan Sugeno.
Metode Sugeno mirip dengan metode Mamdani, hanya output (konsekuen) tidak
berupa himpunan fuzzy, melainkan berupa konstanta atau persamaan liniar. Ada dua
model metode Sugeno yaitu model fuzzy sugeno orde nol dan model fuzzy sugeno orde
satu. Bentuk umum model fuzzy sugeno orde nol adalah :
IF (x1 is A1) o (x2 is A2) o ….. o (xn is An) THEN  z = k
Bentuk umum model fuzzy Sugeno orde satu adalah :
IF (x1 is A1) o (x2 is A2) o ….. o (xn is An) THEN  z = p1.x1 + … pn.xn + q
d. Defuzzifikasi
Penegasan /Defuzzifikasi
Input dari proses Defuzzifikasi adalah suatu himpunan fuzzy yang diperoleh dari
komposisi aturan-aturan fuzzy, sedangkan output yang dihasilkan merupakan suatu
bilangan pada domain himpunan fuzzy tersebut. Sehingga jika diberikan suatu himpunan
fuzzy dalam range tertentu, maka harus dapat diambil suatu nilai crisp tertentu sebagai
output. Ada beberapa metoda yang dipakai dalam defuzzifikasi:
a. Metode Centroid.
Pada metode ini penetapan nilai crisp dengan cara mengambil titik pusat daerah
fuzzy.
b. Metode Bisektor.
Pada metode ini , solusi crisp diperoleh dengan cara mengambil nilai pada domain
fuzzy yang memiliki nilai keanggotaan seperti dari jumlah total nilai keanggotaan
pada daerah fuzzy.
c. Metode Means of Maximum (MOM).
Pada metode ini, solusi crisp diperoleh dengan cara mengambil nilai rata-rata
domain yang memiliki niali keanggotaan maksimum.
d. Metode Largest of Maximum (LOM)
Pada metode ini, solusi crisp diperoleh dengan cara mengambil nilai terbesar dari
domain yang memiliki niali keanggotaan maksimum.
e. Metode Smallest of Maksimum (SOM).
Solusi crisp diperoleh dengan cara mengambil nilai terkecil dari domain yang
memiliki nilai keanggotaan maksimum.
D. Langkah Percobaan
a) Fuzzyfikasi
1. Tentukan jumlah membership pada input dan outputnya berdasarkan data dibawah
ini.

(a) Input 1: Suhu (b) Input 2: Jarak


Gambar 2. (a) Input 1: Suhu dan (b) Input 2: Jarak
Gambar 3. Output : Motor
2. Tentukan metode yang akan digunakan.
3. Tentukan membership function pada masing-masing input dan output secara manual
dan dengan menggunakan MATLAB sebagai pembanding. Sebagai contoh tertera
pada langkah dibawah ini.
Fuzzifikasi dengan MATLAB
Untuk membuat Fuzzifikasi dengan MATLAB, langkah-langkahnya yaitu :
1. Jalankan program MATLAB
2. Mbuh lanjut e.. isien
b) Inference Rule
Buatlah Inference Rule berdasarkan tabel dibawah ini dan dengan menggunakan
MATLAB sebagai pembanding. Untuk menggunakan MATLAB, langkah-langkahnya :
 Munculkan dialog box Fuzzy dengan mengetik fuzzy. Kemudian pada dialog box
pilih Edit -> Rules. Lalu pilih input 1 dan 2, lalu koneksi yang digunakan OR atau
AND, lalu keluaran yang diinginkan, setelah itu klik Add Rule.

…………..
………iki pisan gambar” e
Gambar 4. Inference Rule
Tabel 1. Inference Rule

c) Defuzzyfikasi
 Pilih metode yang akan digunakan dalam defuzzifikasi, misalnya centroid
 Masukkan nilai dari setiap linguistik kedalam rumus.
d) Penerapan pada Mikrokontroler
Fuzzyfikasi Suhu
void FuzzySuhu() {
// untuk suhu dingin
if (sensorSuhu <= 22.5){
suhu [0] = 1;}
else if (sensorSuhu > 22.5 && sensorSuhu <= 25){
suhu [0] = (25 - sensorSuhu) / (25 - 22.5);}
else{
suhu [0] = 0;}

// untuk suhu hangat


if (sensorSuhu <= 22.5){
suhu [1] = 0;}
else if (sensorSuhu > 22.5 && sensorSuhu <= 25){
suhu [1] = (sensorSuhu - 22.5) / (25 - 22.5);}
else if (sensorSuhu > 25 && sensorSuhu <= 27.5){
suhu [1] = (27.5 - sensorSuhu) / (27.5 - 25);}
else{
suhu [1] = 0; }

// untuk suhu panas


if (sensorSuhu <= 25){
suhu [2] = 0;}
else if (sensorSuhu > 25 && sensorSuhu <= 27.5){
suhu [2] = (sensorSuhu - 25) / (27.5 - 25);}
else{
suhu [2] = 1;}
}
Fuzzyfikasi Jarak
void FuzzyJarak() {
// untuk kondisi dekat
if (sensorUS <= 10){
jarak [0] = 1;}
else if (sensorUS > 10 && sensorUS <= 20){
jarak [0] = (20 - sensorUS) / (20 - 10);}
else{
jarak [0] = 0;}

// untuk kondisi sedang


if (sensorUS <= 10){
jarak [1] = 0;}
else if (sensorUS > 10 && sensorUS <= 20){
jarak [1] = (sensorUS - 10) / (20 - 10);}
else if (sensorUS > 20 && sensorUS <= 40){
jarak [1] = (40 - sensorUS) / (40 - 20);}
else{
jarak [1] = 0;}

// untuk kondisi jauh


if (sensorSuhu <= 20){
jarak [2] = 0;}
else if (sensorUS > 20 && sensorUS <= 30){
jarak [2] = (sensorUS - 20) / (30 - 20);}
else if (sensorUS > 30){
jarak [2] = 1; }
}

Inference Rule
void RuleEva () {
int i, j;
for ( i = 0; i <= 2; i = i + 1){
for ( j = 0; j <= 2; j = j + 1){
temp = min(suhu[i], jarak[j]);
rule [i][j] = temp;}}
rule00 = rule [0][0]; // (dingin,dekat = Lambat)
rule01 = rule [0][1]; // (dingin,sedang = Lambat)
rule02 = rule [0][2]; // (dingin,jauh = Lambat)
rule10 = rule [1][0]; // (hangat,dekat = lambat)
rule11 = rule [1][1]; // (hangat,sedang = Sedang)
rule12 = rule [1][2]; // (hangat,jauh = Cepat)
rule20 = rule [2][0]; // (panas,dekat = Cepat)
rule21 = rule [2][1]; // (panas,sedang = Cepat)
rule22 = rule [2][2]; // (panas,jauh= Cepat)
}

Defuzzyfikasi
void Defuzzy () {
// metode sugeno (weighted average)
float lambat = 100;
float sedang = 200;
float cepat = 250;
RuleEva();
pwm = (rule00 * lambat) + (rule01 * lambat) + (rule02 * lambat) +
(rule10 * lambat) + (rule11 * sedang) + (rule12 * cepat) + (rule20 *
cepat) + (rule21 * cepat) + (rule22 * cepat);
defuz = 0;
int i, j;
for ( i = 0; i <= 2; i = i + 1){
for ( j = 0; j <= 2; j = j + 1){
defuz = defuz + rule [i][j];}}
pwm = pwm / defuz;
}

Tambahan pada Arduino


float sensorUS;
float defuz, pwm;

//Sensor Suhu
float sensorSuhu;
float temp;

//Rule Base
float suhu [3];
float jarak [3];
float rule [3][3];
float rule00, rule01, rule02;
float rule10, rule11, rule12;
float rule20, rule21, rule22;

void setup(){
Serial.begin(9600);}

void loop(){
if (Serial.available()){
sensorSuhu = Serial.parseInt();
sensorUS = Serial.parseInt();
Serial.parseInt();
FuzzySuhu();
FuzzyJarak();
RuleEva ();
Defuzzy ();
Serial.print("INPUT - SUHU: ");Serial.print(sensorSuhu);
Serial.print(" | JARAK: ");Serial.println(sensorUS);
Serial.print("Suhu: ");Serial.println(sensorSuhu);
Serial.print("Ultrasonic: ");Serial.println(sensorUS);
Serial.print("PWM: ");Serial.println(pwm);}
}

E. Hasil Percobaan
Bagian hasil e mboh …
F. Analisa Percobaan
…………………………………………………………………………………………………
…………………………………………………………………………………………………
G. Kesimpulan
…………………………………………………………………………………………………
…………………………………………………………………………………………………

Anda mungkin juga menyukai