LAMPIRAN A: LISTING PROGRAM
Index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Sistem Pakar AIDS</title>
<link type="text/css" href="css/style.css" rel="stylesheet" /> <link type="text/css" href="css/bubble.css" rel="stylesheet" /> </head>
<body>
<div class="wrapper"> <div class="logo_l"> <a href="">
<img src="image/logo.jpg" width="100%" height="100%" /> </a>
</div>
<!-- <div class="logo_r"> <a href="">
<img src="image/aids2.jpg" width="100%" height="100%" /> </a>
</div> -->
<?php include "config/menu.php"; ?> <div class="main">
<div class="header"> <div class="logo">
<h1>Sistem Pakar AIDS</h1>
untuk dapat menerapkan koreksi. Sistem ini memanfaatkan kapabilitas penalaran untuk mencapai suatu kesimpulan. </p>
<br /><br /> </div>
<?php include "config/footer.php"; ?>
</div> </div> </body> </html>
Daftar.php
<?php require_once "config/settings.php"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Sistem Pakar AIDS</title>
<link type="text/css" href="css/style.css" rel="stylesheet" /> </head>
<body>
<div class="wrapper"> <div class="logo_l"> <a href="">
<img src="image/logo.jpg" width="100%" height="100%" /> </a>
</div>
<!-- <div class="logo_r"> <a href="">
<img src="image/aids2.jpg" width="100%" height="100%" /> </a>
</div> -->
<?php include "config/menu.php"; ?> <div class="main">
<div class="header"> <div class="logo">
<h1>Sistem Pakar AIDS</h1>
<div class="content">
<h1>Pendaftaran Pasien</h1>
<br />
<form method="post" action="config/act_daftar.php?act=add"> <table>
<tr><td align="right"><dt> Email </dt></td><td><input type="text" size="50" name="email" /></td></tr>
<tr><td align="right"><dt> Password </dt></td><td><input type="password" size="50" name="pass1" /></td></tr>
<tr><td align="right"><dt><i> Ulang Password
</i></dt></td><td><input type="password" size="50" name="pass2" /></td></tr>
<tr><td align="right"><dt> Nama Lengkap </dt></td><td><input type="text" size="50" name="nama" /></td></tr>
<tr><td align="right"><dt> Alamat </dt></td><td><textarea name="alamat"></textarea></td></tr>
<tr><td align="right"><dt> Kelamin </dt></td><td><select style="width:410px;" name="kelamin"><option value="Laki-laki">Laki-laki</option>
<option value="Perempuan">Perempuan</option></select> </td></tr>
<tr><td align="right"><dt> Tinggi </dt></td><td><input type="text" size="50" name="tinggi" />
<small><i>Cm</i></small></td></tr>
<tr><td align="right"><dt> Berat </dt></td><td><input type="text" size="50" name="berat" />
<small><i>Kg</i></small></td></tr>
<tr><td align="right" colspan="2"><button type="submit"> Simpan </button> <button type="button"
onclick="window.back()"> Batal </button></td></tr> </table>
</form> </div> </div>
<?php include "config/footer.php"; ?>
</div>
$query = "select * from user_sistem where email = '$_POST[email]' and password = '".md5($_POST[pass])."'";
$r = mysql_fetch_array($q);
echo "<script> alert('Username & Password tidak valid !'); window.back(); </script>";
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Sistem Pakar AIDS</title>
<link type="text/css" href="css/style.css" rel="stylesheet" /> <link type="text/css" href="css/bubble.css" rel="stylesheet" /> </head>
<body>
<div class="wrapper"> <div class="logo_l"> <a href="">
<img src="image/logo.jpg" width="100%" height="100%" /> </a>
</div>
<!-- <div class="logo_r"> <a href="">
<img src="image/aids2.jpg" width="100%" height="100%" /> </a>
</div> -->
<?php include "config/menu.php"; ?> <div class="main">
<div class="header"> <div class="logo">
<h1>Sistem Pakar AIDS</h1>
<h2>Universitas Sumatera Utara</h2> </div>
</nav>
<form action="login.php" method="post"> <table>
<tr><td align="right"><dt> Email </dt></td><td><input type="text" size="50" name="email" /></td></tr>
<tr><td align="right"><dt> Password </dt></td><td><input type="password" size="50" name="pass" /></td></tr>
<tr><td></td><td><button type="submit">Login</button> <button type="button"
onclick="window.location='daftar.php'">Daftar</button></td></tr> </table>
<?php else: ?>
<blockquote class="example-obtuse"> <p>Selamat datang <strong><?php echo
getIdentitas($_COOKIE[username],"nama"); ?></strong>, untuk memulai konsultasi silahkan klik <a
href="config/set_konsultasi.php"><b>Next</b></a>. </p> </blockquote>
<p><img src="image/dokter.jpg" width="75" height="75" /></p> <!-- <table>
<tr><td></td><td><button type="submit">Tidak</button> <button type="submit">Sedikit Yakin</button> <button type="submit">Cukup Yakin</button> <button type="submit">Yakin</button> <button type="submit"> Sangat Yakin </button>
</table> -->
<?php include "config/footer.php"; ?>
echo "<script type='text/javascript'> alert('Anda harus login terlebih dahulu.'); window.location = 'index.php'; </script>";
endif;
require_once "config/settings.php"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Sistem Pakar AIDS</title>
<link type="text/css" href="css/style.css" rel="stylesheet" /> <link type="text/css" href="css/bubble.css" rel="stylesheet" />
<script type="text/javascript" src="js/jquery-1.5.2.min.js"></script> <script type="text/javascript" src="js/function.js"></script>
<script type="text/javascript"> function GenPertanyaan(a){
var url = "config/act_tanya.php?act=view_gejala&a="+a; url=url+"&sid="+Math.random();
xmlhttp = GetXmlHttpObject();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){ var hasil = xmlhttp.responseText;
var h = hasil.split("||"); document.frm.tipe.value = h[0];
var a = document.frm.tipe.value; var b = document.frm.indeks.value; var c = c;
var url = "config/generate.php?a="+a+"&b="+b+"&c="+c; url=url+"&sid="+Math.random();
xmlhttp = GetXmlHttpObject();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){ var hasil = xmlhttp.responseText;
$m('tanya').innerHTML = h[2];
$m('tanya').innerHTML = '<p><strong> ? ? ? ? ? ? ? ? ? ? ? ? ? ? </strong> </p>';
<img src="image/logo.jpg" width="100%" height="100%" /> </a>
</div>
<!-- <div class="logo_r"> <a href="">
<img src="image/aids2.jpg" width="100%" height="100%" /> </a>
</div> -->
<?php include "config/menu.php"; ?> <div class="main">
<div class="header"> <div class="logo"> <h1>Diagnosa AIDS</h1>
<h2><?php echo getIdentitas($_COOKIE[username],"nama"); ?></h2>
<blockquote class="example-obtuse" id="tanya">
<p><strong> ? ? ? ? ? ? ? ? ? ? ? ? ? ? </strong> </p> </blockquote>
<input type="hidden" name="tipe" value="Mayor" /> <input type="hidden" name="indeks" value="0" /> <table id="navi">
<tr><td></td><td><button type="button"
onclick="GenKeputusan(0)">Tidak</button> <button type="button" onclick="GenKeputusan(1)">Sedikit Yakin</button> <button
type="button" onclick="GenKeputusan(2)">Cukup Yakin</button> <button type="button" onclick="GenKeputusan(3)">Yakin</button> <button
<script type="text/javascript"> GenPertanyaan('0'); </script> <?php include "config/footer.php"; ?>
</div>
$cfTMP = $cf[$indexCF];
$query = "insert into tmp_gejala values(0,$Noip,$idTMP,'$type',$cfTMP)";
$query = "select * from gejala where ID = $idgejala[$index]";
$query = "select * from tmp_gejala where tipe = '$tipe[0]' and Noip = $Noip";
$q = mysql_query($query); $rmay = mysql_num_rows($q);
$query = "select * from tmp_gejala where tipe = '$tipe[1]' and Noip = $Noip";
$q = mysql_query($query); "</strong>, kemungkinan anda terkena infeksi AIDS berdasarkan gejala fisiologi yang anda rasakan sebesar ".$nilai_cf." %.</p>";
$query2 = "select * from tmp_gejala where Noip = $Noip order by ID asc";
$q2 = mysql_query($query2);
echo "<ul>";
while($r2 = mysql_fetch_array($q2)):
echo "<li><img
src='image/checklist_check.jpg' /> anda ".$ykn[$r2[CF]*10]." mengalami ".getGejala($r2[id_gjl])."</li>";
endwhile; echo "</ul>
<p>Disarankan untuk melakukan pemeriksaan darah demi mendapatkan hasil yang lebih akurat. Agar dapat diketahui jumlah CD4 dalam darah anda.</p>
<br> - - - Terima Kasih - - - -
<p><a
href='config/set_konsultasi.php'>Ulang </a> atau <a
$sql = "insert into hasil "</strong>, kemungkinan anda terkena infeksi AIDS berdasarkan gejala fisiologi yang anda rasakan sebesar ".$nilai_cf." %.</p>";
$query2 = "select * from tmp_gejala where Noip = $Noip order by ID asc";
$q2 = mysql_query($query2);
echo "<ul>";
while($r2 = mysql_fetch_array($q2)):
echo "<li><img
src='image/checklist_check.jpg' /> anda ".$ykn[$r2[CF]*10]." mengalami ".getGejala($r2[id_gjl])."</li>";
endwhile; echo "</ul>
<p>Disarankan untuk melakukan pemeriksaan darah demi mendapatkan hasil yang lebih akurat. Agar dapat diketahui jumlah CD4 dalam darah anda.</p>
<br> - - - Terima Kasih - - - -
<p><a
href='config/set_konsultasi.php'>Ulang </a> atau <a
href='index.php'>Selesai </a> ?</p> <p><a href='print_detail.php' target='_blank'>Cetak</a></p>||end";
$sql = "insert into hasil
values($Noip,'Kemungkinan terinfeksi HIV/AIDS',$nilai_cf)"; mysql_query($sql);
else:
$sql = "insert into hasil
values($Noip,'Kemungkinan tidak terinfeksi HIV/AIDS',100)"; mysql_query($sql);
echo "$type||$index||<p>Anda tidak terkena infeksi HIV/AIDS.</p>
<p><a href='config/set_konsultasi.php'>Ulang </a> atau <a href='index.php'>Selesai </a> ?</p> ||end";
endif; else:
echo "$r2[tipe]||$r[gjl_tanya]||<p>Mengalami $r2[nama] ?</p>||";
endif; else:
$query = "select * from pohon where gjl_tanya = $index"; $q = mysql_query($query);
$query = "select * from gejala where ID = $id"; $q = mysql_query($query);
mysql_connect("localhost","root","") or die("Koneksi tidak berhasil");
$numday =
array("Minggu"=>0,"Senin"=>1,"Selasa"=>2,"Rabu"=>3,"Kamis"=>4,"Jumat" =>5,"Sabtu"=>6);
$tipe = array("Mayor","Minor","Spesifik"); $cf = array(0,0.4,0.6,0.8,1);
$ykn = array(0 => "tidak", 4 => "sedikit yakin", 6 => "cukup yakin", 8 => "yakin", 10 => "sangat yakin");
function getBln($i){ switch($i){
case 1: $bln = "Januari"; break; case 2: $bln = "Februari"; break; case 3: $bln = "Maret"; break; case 4: $bln = "April"; break; case 5: $bln = "Mei"; break; case 6: $bln = "Juni"; break; case 7: $bln = "Juli"; break; case 8: $bln = "Agustus"; break; case 9: $bln = "September"; break; case 10: $bln = "Oktober"; break; case 11: $bln = "November"; break; case 12: $bln = "Desember"; break; }
return $bln; }
function getIdentitas($id,$colom){
$query = "select * from identitas where email = '$id'"; $q = mysql_query($query);
$r = mysql_fetch_array($q); return $r[$colom];
}
function getGejala($id){
$query = "select * from gejala where ID = $id"; $q = mysql_query($query);
$r = mysql_fetch_array($q); return $r[nama];
}
function hitungCF1($Noip){
$cfold = $cfold2; endwhile;
return round($cfold * 100,2); }
function hitungCF2($Noip){
$query = "select * from tmp_gejala where Noip = $Noip"; $q = mysql_query($query);
return round($cfold * 100,2); }
$query = "select * from tmp_gejala where Noip = $Noip order by ID desc limit 1";
$q = mysql_query($query); $row = mysql_num_rows($q); $r = mysql_fetch_array($q);
$query = "select * from hasil where Noip = $Noip"; $qh = mysql_query($query);
$rowh = mysql_num_rows($qh); if($row <= 0):
$query = "select * from gejala where tipe = 'Mayor' order by ID asc limit 1";
$q = mysql_query($query); $r = mysql_fetch_array($q);
elseif($rowh > 0):
$query = "select * from hasil where Noip = $Noip"; $q = mysql_query($query);
$rf = mysql_fetch_array($q); $nilai_cf2 = $rf[cf_aids]; $id = $rf[id_peny];
if($rf[cf_aids] == 0 and $r[cf_faktor]==0): $string = "<p>Anda tidak terkena infeksi HIV/AIDS.</p>";
$nilai_cf2 = 100; //<p><a
href='config/set_konsultasi.php'>Ulang </a> atau <a
href='index.php'>Selesai </a> ?</p> <p><a href='print_detail.php' target='_blank'>Cetak</a></p>||end";
elseif($id == 0):
$string = "anda positif terinfeksi HIV/AIDS tetapi stadium klinis AIDS anda tidak diketahui.";
else:
$query = "select * from penyakit where ID = $id"; $q = mysql_query($query);
$r = mysql_fetch_array($q);
$string = "anda terinfeksi $r[nama]."; endif;
echo
"0||0||<p><strong>".getIdentitas($_COOKIE[username],"nama")."</strong >, $string</p>";
$query2 = "select * from tmp_gejala where Noip = $Noip order by ID asc";
$q2 = mysql_query($query2);
echo "<ul>";
while($r2 = mysql_fetch_array($q2)):
echo "<li><img src='image/checklist_check.jpg' /> anda ".$ykn[$r2[CF]*10]." mengalami ".getGejala($r2[id_gjl])."</li>";
endwhile; echo "</ul>
<p>$r[solusi]</p>";
echo "<p>Persentasi keyakinan sistem <b>".$nilai_cf2." %</b></p><p><a href='config/set_konsultasi.php'>Ulang </a> atau <a href='index.php'>Selesai </a> ?</p><p><a href='print_detail.php' target='_blank'>Cetak</a></p>||end";
else:
$query = "select * from gejala where ID = $r[id_gjl]"; $q = mysql_query($query);
$query = "select * from gejala where tipe != 'Spesifik' order by ID asc";
$q2 = mysql_query($query);
$query = "select * from gejala where ID = $idgejala[$index]";
$query = "select * from tmp_gejala where tipe = 'Mayor' and Noip = $Noip";
$q = mysql_query($query); $rmay = mysql_num_rows($q);
$query = "select * from tmp_gejala where tipe = 'Minor' and Noip = $Noip";
$q = mysql_query($query); $rmin = mysql_num_rows($q); if($rmay>=2 and $rmin>=1):
echo "$type||$index||<p>Anda positif terkena infeksi HIV/AIDS dengan persentasi keyakinan
".hitungCF1($Noip)." %.</p>
<p><a href='#' onclick='GenKeputusan(0)'>Lanjut >></a>||end";
elseif($rmin>=3):
echo "$type||$index||<p>Anda positif terkena infeksi HIV/AIDS dengan persentasi keyakinan
$query = "select * from pohon where gjl_tanya =
$query = "select * from gejala where ID = $id"; $sql = "insert into hasil values($Noip,0,$nilai_cf2,$nilai_cf1)";
mysql_query($sql);
echo "finish||0||<p>Stadium klinis HIV anda tidak diketahui.</p> <p><a href='#'
onclick='GenKeputusan(0)'>Lihat detail >></a> </p>||end"; endif;
else:
$id = substr($hasil,1);
$query = "select * from penyakit where ID = $id";
$q = mysql_query($query); $r = mysql_fetch_array($q); $nilai_cf1 = hitungCF1($Noip); $nilai_cf2 = hitungCF2($Noip); $sql = "insert into hasil values($Noip,$r[ID],$nilai_cf2,$nilai_cf1)";
mysql_query($sql);
echo "finish||0||<p>Anda terinfeksi $r[nama].</p>
<p>$r[solusi]</p>";
echo "<p>Persentasi keyakinan sistem <b>".$nilai_cf2." %</b></p><p><a href='#'
onclick='GenKeputusan(0)'>Lihat detail >></a> ||end"; endif;
endif; endif;
DAFTAR PUSTAKA
Daniel dan Virginia, G. 2010. Implementasi Sistem Pakar untuk Mendiagnosis
Penyakit dengan Gejala Demam menggunakan Metode Certainty Factor.
Jurnal Teknologi, vol 6 No.1 : Universitas Kristen Duta Wacana
Efraim, Turban. 1995. Decision Support System and Expert System. USA:
Prentice-Hall.
Efraim, Turban, Aronson, dan Jay E. 2002. Decision Support Systems and Intelligent
Systems, 6th edition. New Jersey: Prentice-Hall.
Giarratano, Joseph dan Riley, Gary. 2005. Expert Systems: Principle and
Programming, 4th Edition. Boston: Thomson Course Technology.
Heckerman, D. 1986. Probabilistic Interpretations for Mycin’s Certainty Factors,
North-Holland: Elsevier science Publishers B.V.
Kusrini. 2006. Sistem Pakar: Teori dan Aplikasi. Yogyakarta: Andi.
Kusumadewi, S. 2003. Artificial Intelligence (Teknik dan Aplikasinya). Yogyakarta:
Graha Ilmu.
Martin, James., Oxman, Steven. 1988. Building Expert Systems: A Tutorial. New
Jersey: Prentice-Hall.
Satyareni, Hernyka Diema. 2011. Sistem Pakar Diagnosis Infeksi penyakit tropis
dengan menggunakan forward dan backward chaining. Jurnal Teknologi, vol
1 No. 2. Jatim : Universitas Pesantren Tinggi Darul ‘Ulum (Unipdu).
Situmeang, Ellys R.. 2011. Sistem Pakar Diagnosa Infeksi Penyakit Tropis Dengan
Menggunakan Metode Forward Chaining. Medan : Universitas Sumatera
Syahputra, Dedy. 2011. Perancangan Aplikasi Perangkat Lunak Sistem Pakar
Dengan Menggunakan Metode Forward Chaining Dan Certainty Factor
Untuk Mendiagnosis Kerusakan Komputer Pada Warung Internet (Warnet).
Medan : Universitas Sumatera Utara.
Voni, Elpa Armi. 2010. Penggunaan Certainty Factor (CF) Dalam Perancangan
Sistem Pakar Untuk Mendiagnosis Penyakit Atherosklerosis. Medan :
Universitas Sumatera Utara.
Waterman, D.1986. A Guide to Expert Systems. Kanada: Addison-Wesley Publishing
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1 Certainty Factor dalam Penentuan terinfeksi AIDS atau tidak
Gejala-gejala yang ditimbulkan oleh penyakit AIDS pada umumnya menyerupai
gejala-gejala yang ditimbulkan oleh beberapa penyakit ringan lainnya, seperti diare,
demam, batuk, dan infeksi jamur pada kulit. Untuk membantu masyarakat awam pada
umumnya, maka dirancanglah sebuah sistem yang cukup akurat mengenai
gejala-gejala penyakit AIDS secara lebih spesifik yang kemudian dapat membedakannya dari
penyakit lainnya. Perancangan aplikasi ini dibuat sesederhana mungkin, dan dengan
tampilan yang menarik untuk memudahkan pemakainya dan memberikan manfaat
yang dibutuhkan oleh pemakainya.
Proses penentuan gejala dilakukan oleh user, kemudian selanjutnya akan
dilakukan perhitungan besar certainty factor untuk memperoleh besarnya nilai
keyakinan penyakit berdasarkan gejala-gejala yang dialami oleh user. Proses
perhitungan nilai certainty factor ini didasarkan pada frekuensi gejala yang dialami
oleh user. Certainty factor akan dihitung jika gejala-gejala yang dialami penderita
belum memenuhi syarat dari klasifikasi klinis WHO dan CDC untuk infeksi AIDS.
Syarat yang harus dipenuhi yaitu sekurang-kurangnya terdapat dua gejala mayor dan
satu gejala minor. Jika syarat terpenuhi, maka sistem akan langsung mengeluarkan
persentase kemungkinan terinfeksi AIDS, dan jika gejala-gejala yang ditemukan pada
penderita belum memenuhi syarat klinis WHO dan CDC, maka dapat dilakukan
perhitungan certainty factor, yaitu :
1. Tentukan besar frekuensi gejala yang dialami oleh penderita (dalam kasus ini
Yakin (0.6), Yakin (0.8), dan Sangat Yakin (1)). Dalam hal ini penentuan
bobot jawaban diambil dari Daniel dan Virginia (2010).
2. Perhitungan besar certainty factor (Turban dan Aronson, 2001) dengan rumus:
CF = CFpakar x CFuser
CFold = CFold + CF1 x (1-CFold)
Presentase keyakinan : CFold x 100%
Dimana :
CFold = Nilai certainty factor.
CF = Hasil pengalian dari CFpakar dan CFuser.
CFpakar = Nilai CF yang telah ditentukan oleh pakar untuk setiap gejala
CFuser = Besar frekuensi gejala yang dialamin oleh user.
3.2 Gejala untuk Penentuan AIDS
Adapun gejala yang dapat ditimbulkan oleh penyakit AIDS terbagi dalam 2 bagian,
yaitu :
A. Gejala Mayor
Karakteristik pada gejala Mayor yang sering terjadi pada penderita AIDS adalah
sebagai berikut:
1. Berat badan menurun lebih dari 10% dalam satu bulan.
2. Diare kronis yang berlangsung lebih dari satu bulan.
3. Demam berkepanjangan lebih dari satu bulan.
4. Penurunan kesadaran dan gangguan neurologis.
5. Ensefalopati HIV.
B. Gejala Minor
Karakteristik pada gejala Minor yang sering terjadi pada penderita AIDS adalah
sebagai berikut :
1. Batuk menetap lebih dari satu bulan.
2. Dermatitis generalisata.
3. Herpes zoster multisegmental berulang.
5. Herpes simpleks kroniks progresif.
6. Limfadenopati generalisata.
7. Infeksi jamur berulang pada alat kelamin wanita.
8. Retinitis oleh virus situmegalo.
Perhitungan untuk kasus infeksi AIDS fiktif dapat dilihat pada contoh kasus
berikut. Seorang pasien mempunyai gejala yang menunjukkan gejala terinfeksi AIDS
berikut ini :
1. Mengalami penurunan berat badan lebih dari 10% dalam sebulan.
2. Mengalami diare kronis yang berlangsung lebih dari sebulan.
3. Mengalami demam berkepanjangan lebih dari sebulan.
4. Mengalami batuk menetap lebih dari sebulan.
5. Mengalami dermatitis generalisata (penyakit kulit berupa perasaan gatal).
6. Mengalami demam dengan sebab yang tidak jelas (intermittent atau menetap)
lebih dari sebulan.
Gejala-gejala yang diderita pasien tersebut dapat dijabarkan pada tabel 3.2:
Tabel 3.2 Tabel Gejala
Gejala Jawaban
2 Diare kronis yang berlangsung lebih dari sebulan.
Sedikit Yakin 0.4 0.4
3 Demam berkepanjangan lebih dari sebulan.
Cukup Yakin 0.4 0.6
4 Gangguan neurologis seperti kebingungan dan pelupa, mati rasa pada lengan dan kaki.
Sedikit Yakin 0.3 0.4
5 Batuk menetap lebih dari sebulan. Sedikit Yakin 0.4 0.4
6 Dermatitis generalisata (penyakit kulit
berupa perasaan gatal).
Sedikit Yakin 0.4 0.4
7 Herpes simpleks kronis progresif,
merupakan demam yang terjadi berulang-ulang.
Maka, dari gejala-gejala di atas dapat dihitung besar persentase user terkena HIV
AIDS dengan cara sebagai berikut:
a. Berat badan menurun lebih dari 10% dalam sebulan: Sedikit Yakin.
CFpakar =0.3
CFuser =0.4
CF1 =CFpakar x CFuser
= 0.3 x 0.4
= 0.12
b. Diare kronis yang berlangsung lebih dari sebulan: Sedikit Yakin
CFpakar =0.4
CFuser =0.4
CF2 =CFpakar x CFuser
= 0.4 x 0.4
= 0.16
c. Demam berkepanjangan lebih dari sebulan: Cukup Yakin
CFpakar =0.4
CFuser =0.6
CF3 =CFpakar x CFuser
= 0.4 x 0.6
= 0.24
d. Gangguan neurologis, seperti kebingungan dan pelupa, mati rasa pada lengan dan
kaki : Sedikit Yakin
CFpakar = 0.4
CFuser = 0.4
CF5 = CFpakar x CFuser
= 0.4 x 0.4
= 0.16
e. Batuk menetap lebih dari sebulan: Sedikit Yakin
CFpakar =0.5
CF4 =CFpakar x CFuser
= 0.5 x 0.4
= 0.2
f. Dermatitis generalisata (penyakit kulit berupa perasaan gatal): Sedikit Yakin
CFpakar =0.3
CFuser =0.4
CF5 =CFpakar x CFuser
= 0.3 x 0.4
= 0.12
g. Herpes simpleks kronis progresif (berupa demam yang terjadi berulang-ulang, dan
disebabkan oleh virus herpes): Sedikit Yakin
= 0.528094
5. CFold = CFold + CF5 x (1-CFold)
= 0.528094 + 0.2 x (1-0.528094)
= 0.528094 + 0.0943812
= 0.6224752
6. CFold = CFold + CF6 x (1-CFold)
= 0.6224752+ 0.12 x (1-0.6224752)
= 0.6224752 + 0.0453029
= 0.6677781
7. CFold = CFold + CF7 x (1-CFold)
= 0.6677781+ 0.2 x (1-0.6677781)
= 0.6677781 + 0.06644438
= 0.73422248
Maka, Persentase Keyakinan = CFold x 100%
= 0.73422248 x 100%
= 73,42%
3.3 Metode Inferensi
Proses diagnosis pada sistem menggunakan metode inferensi runut maju atau forward
chaining, yaitu suatu proses untuk mengidentifikasi penyakit berdasarkan
gejala-gejala yang dialami oleh user dan besarnya nilai kepercayaan yang dimasukkan oleh
user.
Di bawah ini merupakan gambar yang menjelaskan metode inferensi pada
sistem pakar penyakit AIDS dalam proses identifikasi penyakit:
Gambar 3.1 Metode Inferensi Forward Chaining
Tidak Ada Gejala yang diderita
Observasi 1
2 Gejala Mayor dan 1 Gejala Minor
Pada metode inferensi ini data yang digunakan adalah jawaban dari
pertanyaan gejala-gejala yang dialami oleh user. Sistem tidak akan memunculkan
pertanyaan yang sama. Setelah user menjawab seluruh pertanyaan gejala, maka
jawaban user akan disimpan. Sehingga, jika suatu waktu dibutuhkan kembali user
tidak perlu melakukan proses ulang.
Dalam proses mengidentifikasi penyakit yang diderita oleh user, ada beberapa
langkah dalam sistem yaitu:
1. Memasukkan semua daftar gejala yang dialami oleh user. Dalam hal ini gejala
yang dimaksud yaitu, gejala mayor dan minor.
2. Setelah didapat gejala-gejala yang dialami oleh user, maka sistem akan
memunculkan hasil dari proses berupa persentase kemungkinan user terinfeksi
AIDS.
3.4 Perancangan Sistem
Pada bagian ini akan diuraikan tentang perancangan sistem yang terdiri dari
perancangan mesin inferensi, perancangan basis data, bentuk tabel sistem informasi
dan perancangan antarmuka.
3.4.1 Perancangan Mesin Inferensi
Untuk lebih jelasnya, perancangan sistem ini dapat dilihat pada bagan flowchart
Start
Menghitung Gejala Mayor dan Minor
(gejala mayor >=2 and gejala minor >=1) OR (gejala minor>gejala mayor or gejala minor >=3)
Simpan jawaban Ya
Hasil
End
Ya Tidak
Gambar 3.2 Flowchart Sistem
Penjelasan flowchart :
1. Input gejala user.
Pada tahap ini sistem akan mengajukan beberapa gejala yang berkaitan dengan
diagnosis penyakit AIDS, lalu user akan memilih gejala-gejala apa saja yang
dialami oleh penderita, yaitu berupa gejala mayor dan minor. Gejala-gejala
tersebut berdasar pada klasifikasi klinis WHO dan CDC.
2. Hitung jumlah gejala.
Pada tahap ini sistem akan menghitung jumlah gejala yang dialami oleh
penderita. Dengan aturan, sekurang-kurangnya terdapat 2 atau lebih gejala
tersimpan pada sistem user sebagai history. Namun, jika bernilai Tidak, maka
tidak akan disimpan oleh sistem. Dan sistem akan segera mencetak hasil
diagnosisnya.
3. Untuk data yang bernilai Ya, data kemudian akan tersimpan pada sistem.
4. Cetak hasil, pada tahap ini sistem akan mencetak hasil dari diagnosis yang
dilakukan oleh user.
3.4.2 Perancangan DFD
Diagram Aliran Data/Data Flow Diagram (DFD) adalah alat yang biasa dipakai untuk
mendokumentasi proses dalam sistem atau sebuah teknis grafis yang menggambarkan
aliran informasi dan transformasi yang diaplikasikan pada saat data bergerak dari
input menjadi output.
a. Data flow diagram level 0 pada sistem dapat dilihat pada gambar 3.2.
User Sistem Pakar Admin
- data gejala - data user
- data gejala - lap. Hasil analisa
- data admin - entry gejala - entry aturan
- data gejala - data aturan
Gambar 3.3 Data Flow Diagram Level 0
Keterangan Gambar 3.3 :
1. User melakukan input data, berupa data gejala dan data user itu sendiri ke
dalam sistem. Dan akan menerima output berupa data gejala dan laporan hasil
diagnosis.
2. Admin melakukan input data, berupa data admin, data gejala, dan data aturan.
Selanjutnya admin akan menerima output dari sistem berupa entry gejala dan
b. Data flow diagram level 1pada sistem dapat dilihat pada gambar 3.3.
Data identitas Entry Data gejala
Data gejala
Gambar 3.4 Data Flow Diagram Level 1
Keterangan Gambar 3.4
1. Proses 1.0
Nama Proses : Proses Menu User
Masukan : Data user berupa identitas, dan gejala.
Keluaran : Hasil pemeriksaan berupa hasil diagnosis dan nilai certainty
factornya.
Simpan data user ke dalam basis data.
Keterangan : Proses untuk mengolah data user.
2. Proses 2.0
Nama Proses : Proses Menu Admin
Keluaran : Data gejala, dan data aturan.
Simpan data admin ke dalam basis data.
Keterangan : Proses untuk mengolah data admin.
c. Data flow diagram level 2 proses 1 pada sistem dapat dilihat pada gambar 3.4.
User 1.1
Gambar 3.5 Data Flow Diagram Level 2 Proses 1
Keterangan Gambar 3.5
1. Proses 1.1
Nama Proses : Proses Datar User.
Masukan : entry data user dan entry identitas.
Keluaran : Data user dan data identitas.
2. Proses 1.2
Nama Proses : Proses Konsultasi
Masukan : Data gejala.
d. Data flow diagram level 2 proses 2 pada sistem dapat dilihat pada gambar 3.5.
Entry Data admin Entry Data admin
Data identitas admin
Gambar 3.6 Data Flow Diagram Level 2 Proses 2
Keterangan Gambar 3.6
Masukan : Entry admin, dan Entry identitas admin.
Keluaran : Data admin, dan Data identitas admin.
3. Proses 2.3
Nama Proses : Data Gejala.
Masukan : Entry gejala.
3.5 Perancangan Antarmuka
Perancangan antarmuka dibuat untuk mempermudah gambaran-gambaran tampilan
sistem ketika sistem dijalankan. Antarmuka merupakan tampilan program aplikasi
yang akan digunakan oleh pengguna untuk dapat berkomunikasi dengan komputer.
Berikut struktur yang akan dirancang pada sistem pakar ini.
3.5.1 Halaman Utama
Halaman ini merupakan halaman yang pertama kali ditampilan ketika user hendak
menggunakan sistem. Pada halaman ini dijelaskan dengan singkat tentang sistem yang
dibangun, yaitu sistem pakar. Halaman ini terdiri dari lima menu, yaitu home, AIDS,
konsultasi dan bantuan.
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
PENJELASAN SINGKAT SISTEM
Gambar 3.7 Rancangan Halaman Utama
3.5.2 Halaman AIDS
Halaman ini menampilkan penjelasan singkat tentang penyakit AIDS, sebagai
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
Penjelasan Singkat AIDS
Gambar 3.8 Rancangan Halaman AIDS
3.5.3 Halaman Konsultasi
Pada halaman ini user dapat memulai konsultasi pada sistem. User terlebih dahulu
diminta untuk login dengan menggunakan data diri yang sudah terdaftar pada sistem.
Namun, bagi user yang belum terdaftar, dapat melakukan pendaftaran terlebih dahulu,
seperti pada tampilan berikut:
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
LOGIN Email
Password
Login Daftar
3.5.4 Halaman Pendaftaran Pasien
Pada halaman pendaftaran pasien, user diminta untuk mengisi form yang telah
tersedia. Data-data yang diminta berupa email, password, ulangi password, nama
lengkap, jenis kelamin, tinggi badan, dan berat badan. Setelah user mengisi seluruh
form, maka data-data user akan tersimpan, maka selanjutnya user dapat memulai
proses konsultasi.
Gambar 3.10 Rancangan Halaman Daftar Pasien
Setelah pasien berhasil melakukan pendaftaran, selanjutnya pasien dapat
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
Gambar 3.11 Rancangan Halaman Awal Konsultasi
Pertanyaan yang kemudian diajukan oleh sistem merupakan gejala mayor dan
minor, yang terdiri dari tiga belas pertanyaan.
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
Tidak Sedikit Yakin Cukup Yakin Yakin Sangat Yakin
Gambar 3.12 Rancangan Halaman Pertanyaan Gejala Mayor dan Minor
Setelah user menjawab tiga belas pertanyaan sebelumnya, maka sistem akan
mengeluarkan hasil diagnosis yaitu apakah user positif atau negatif terkena AIDS.
Maka seperti inilah rancangan tampilan hasil diagnosis positif yang akan dikeluarkan
oleh sistem.
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
Kemungkinan Anda terinfeksi AIDS sebesar 56,39 %
Apabila user ingin melihat detail hasil diagnosis oleh sistem, maka user
tinggal meng-klik opsi lihat detail. Maka, akan muncul tampilan:
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
Gejala-gejala penyakit AIDS yang diderita oleh pasien
Persentase Keyakinan Sistem
Ulang atau Selesai Cetak
Gambar 3.14 Rancangan Halaman Detail Hasil Diagnosis
Sedangkan untuk tampilan hasil diagnosis negatif dapat dilihat pada gambar di
bawah ini:
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
Anda Tidak Terkena infeksi AIDS
Ulang atau selesai Cetak
Gambar 3.15 Rancangan Halaman Hasil Diagnosis Negatif
3.5.5 Halaman Bantuan
Halaman ini berisi petunjuk untuk menggunakan sistem. Hal ini membantu user yang
masih asing dengan penggunaan sistem seperti ini. Tampilan rancangan dapat dilihat
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
Petunjuk Penggunaan Sistem
BAB 4
IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1 Implementasi
Implementasi merupakan tahap dimana sistem yang telah dirancang, kemudian akan
diimplementasikan dengan menggunakan bahasa pemrograman tertentu. Pada sistem
yang telah dirancang dibagi menjadi dua bagian, yaitu: menu user dan menu admin.
Berikut ini akan dijelaskan hasil implementasi dari rancangan sistem yang telah
dibuat.
4.2 Pengujian Sistem
Pada tahap ini akan dijelaskan proses pengujian dari aplikasi sistem certainty factor
pada saat dijalankan. Sistem akan menghasilkan output berupa persentase
kemungkinan user terinfeksi AIDS berdasarkan gejala mayor dan minor yang dialami
oleh user.
4.2.1 Tampilan Menu User
Form ini merupakan tampilan awal yang akan dilihat user ketika mulai menggunakan
aplikasi sistem ini. Dalam form ini terdapat empat menu yang dapat dipilih oleh user,
Pada menu home dijelaskan secara singkat pengertian dari sistem pakar, untuk
memperkenalkan kepada user yang belum pernah mengetahui tentang sistem pakar
sebelumnya. Berikut adalah tampilannya:
Gambar 4.1 Tampilan Menu Home
4.2.2 Tampilan Menu AIDS
Pada menu AIDS akan ditampilkan informasi singkat tentang AIDS. Sehingga user
dapat lebih memahami mengenai penyakit AIDS, dan sebagai informasi tambahan
bagi user itu sendiri. Dengan tampilan sebagai berikut:
4.2.3 Tampilan Menu Konsultasi
Pada menu konsultasi sistem akan meminta user melakukan login terlebih dahulu
dengan data yang telah terdaftar dalam sistem yang berupa, email dan password.
Tampilan tersebut ditunjukkan pada Gambar 4.3 berikut ini:
Gambar 4.3 Tampilan Login User
Gambar 4.4 Tampilan Pendaftaran Pasien/User
Halaman ini berisi delapan form data, yaitu email, password, ulang password,
nama lengkap, alamat, jenis kelamin, tinggi dan berat badan. Setelah user berhasil
melakukan registrasi, maka user dapat langsung melakukan konsultasi dengan
Gambar 4.5 Tampilan Menu Konsultasi
Untuk memulai konsultasi, user hanya perlu memilih opsi “Next” yang telah
tersedia. Selanjutnya, user akan dibimbing dengan pertanyaan gejala-gejala AIDS
berdasarkan Klasifikasi Klinis WHO (2002) dan CDC (1993). Gejala-gejala tersebut
terdiri dari tiga belas pertanyaan, dan dibagi ke dalam 2 bagian, yaitu: gejala mayor,
dan gejala minor. Berikut adalah tampilan pertanyaan-pertanyaan yang akan diajukan
oleh sistem kepada user:
Setelah user menjawab pertanyaan yang sesuai dengan gejala yang
dideritanya, maka akan muncul tampilan yang berisi keseluruhan dari hasil diagnosis
berupa persentase kemungkinan user terinfeksi AIDS dan gejala-gejala yang dialami
oleh user. Tampilan tersebut dapat dilihat seperti gambar berikut:
Gambar 4.8 Tampilan Hasil Diagnosis
Sementara bagi user yang kemungkinan tidak terinfeksi AIDS. Maka akan muncul
Gambar 4.9 Tampilan Hasil Diagnosis Negatif AIDS
4.2.4 Tampilan Form Cetak dari Database
Untuk mencetak hasil diagnosis, maka user harus memilih opsi cetak dan kemudian
akan muncul tampilan berikut ini:
Maka seperti inilah cetakan hasil diagnosis:
Gambar 4.11 Tampilan Cetakan Hasil Diagnosis
4.2.5 Tampilan Menu Bantuan
Menu ini berisi tentang petunjuk penggunaan sistem. Hal ini bertujuan untuk
memudahkan user yang sama sekali tidak pernah menggunakan sistem seperti ini
Gambar 4.12 Tampilan Menu Bantuan
4.3 Tampilan Menu Admin
Form ini adalah dikhususkan untuk admin, artinya form ini hanya dapat diakses oleh
admin. Tampilan utama pada menu admin terdiri dari lima menu, yaitu: gejala,
penyakit, relasi, pohon, dan user. Tampilan utama pada menu user ini sama dengan
tampilan home yang ada pada menu user, yaitu berisi tentang penjelasan singkat
pengertian sistem pakar. Tampilannya adalah sebagai berikut:
.
4.3.1 Tampilan Menu Gejala
Menu ini memaparkan tentang jenis-jenis gejala pada AIDS, yaitu gejala mayor, dan
gejala minor. Pada menu ini juga terdapat nilai certainty factor yang sebelumnya telah
ditentukan oleh admin. Apabila terjadi kesalahan pengetikan atau penentuan nilai
certainty factor, maka pada menu ini tersedia opsi edit, hapus dan juga opsi tambah
yang disimbolkan dengan tanda tambah di sisi kanan menu. Sehingga jika suatu saat
ada data yang harus diubah, maka admin dapat melakukannya dengan mudah. Maka
tampilan tersebut dapat dilihat pada gambar di bawah ini:
Ketika admin melakukan pengeditan data, maka akan muncul tampilan seperti berikut:
Gambar 4.15 Tampilan Menu Edit Gejala AIDS
Sedangkan jika admin ingin menambahkan gejala baru pada menu gejala,
dengan memilih opsi tambah di sisi kanan menu. Kemudian akan muncul tampilan
seperti di bawah ini:
4.3.2 Tampilan Menu Relasi
Menu ini menampilkan hubungan antara jenis penyakit dan gejala. Pada menu ini
tidak terdapat opsi lain seperti pada dua menu sebelumnya. Menu ini memiliki
tampilan seperti di bawah:
Gambar 4.17 Tampilan Menu Relasi
4.3.3 Tampilan Menu Pohon Keputusan
Pada menu ini dijelaskan keterkaitan antara gejala yang satu dengan gejala yang
lainnya. Pada menu ini ditampilkan dengan jelas aturan yang berlaku pada metode
forward chaining yang digunakan dalam membangun sistem tersebut. Tampilan menu
pohon keputusan dapat dilihat pada Gambar 4.18 di bawah ini:
4.3.4 Tampilan Menu User
Menu ini berisi tentang daftar user admin yang telah tersimpan pada sistem, dengan
tampilan seperti berikut ini:
Gambar 4.19 Tampilan Menu User Admin
Gambar 4.20 Tampilan Menu Edit User Admin
Sementara jika admin memilih opsi tambah untuk menambah user admin, maka akan
muncul tampilan sebagai berikut:
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan pembahasan yang telah dilakukan pada bab-bab sebelumnya, maka dapat
ditarik kesimpulan sebagai berikut :
1. Aplikasi sistem ini dibuat sebagai alat bantu untuk mendiagnosis penyakit
AIDS menggunakan Certainty Factor dan metode kuantifikasi pertanyaan
yang diajukan berdasarkan Klasifikasi Klinis WHO dan atau CDC.
2. Aplikasi ini dirancang untuk membantu masyarakat awam sebagai diagnosis
awal terinfeksi AIDS.
3. Sistem menggunakan syarat gejala-gejala yang dialami oleh penderita AIDS,
dan perubahan fisik yang terjadi dapat dipantau secara jelas.
4. Sistem pakar dengan metode kuantifikasi pertanyaan dapat digunakan untuk
mendiagnosis gejala-gejala awal AIDS dengan mengeliminasi aturan
lama-gejala.
5. Sistem dapat mengenali gejala-gejala AIDS yang diderita dan dapat
5.2Saran
Untuk pengembangan lebih lanjut terhadap sistem yang telah dibuat, penulis
menyarankan beberapa pengembangan berikut ini :
1. Sistem ini dapat dikembangan dengan menggunakan server mobile, untuk
semakin mempermudah pemantauan dan pengembangannya.
2. Pembaca dapat mengembangkan sistem ini dengan menggunakan metode
perhitungan yang lain.
BAB 2
LANDASAN TEORI
2.1. Defenisi Sistem Pakar
Sistem pakar adalah suatu sistem komputer yang bisa menyamai atau meniru
kemampuan seorang ahli (Giarratano dan Riley, 2005). Sistem pakar dapat diartikan
sebagai suatu sistem yang mengambil sebagian pengetahuan manusia ke komputer,
sehingga komputer dapat memecahkan permasalahan yang umumnya dilakukan oleh
ahlinya. Dalam hal ini, manusia yang dimaksud adalah seorang pakar dari bidang
pengetahuan tertentu. Misalnya, dokter adalah seorang pakar yang mampu
mendiagnosis penyakit yang diderita pasien serta dapat memberikan penatalaksanaan
suatu penyakit. Atau seorang ahli mesin yang mengusai segala pengetahuan tentang
mesin.
Menurut Kusrini (2006), masalah-masalah yang dapat diselesaikan sistem
pakar, di antaranya:
1. Interpretasi
Membuat sebuah kesimpulan atau deskripsi dari sekumpulan data mentah.
2. Prediksi
Memproyeksikan akibat-akibat yang dimungkinkan dari situasi-situasi
tertentu.
3. Diagnosis
Menentukan sebab malfungsi dalam situasi kompleks yang didasarkan pada
gejala-gejala yang teramati.
4. Desain
Menentukan konfigurasi komponen-komponen sistem yang cocok dengan
5. Perencanaan
Merencanakan serangkaian tindakan yang akan dapat mencapai sejumlah
tujuan dengan kondisi awal tertentu.
6. Debugging dan Repair
Menentukan dan menginterpretasikan cara-cara untuk mengatasi malfungsi.
7. Pengendalian
Mengatur tingkah laku suatu environment yang kompleks.
8. Instruksi
Mendeteksi dan mengoreksi defisiensi dalam pemahaman domain subyek.
9. Selection
Mengidentifikasi pilihan terbaik dari sekumpulan (list) kemungkinan.
10. Simulation
Pemodelan interaksi antara komponen-komponen sistem
11. Monitoring
Membandingkan hasil pengamatan dengan kondisi yang diharapkan.
2.1.1 Sejarah Sistem Pakar
Selama abad ke-20, beberapa definisi dari kecerdasan buatan sudah banyak diajukan.
Definisi yang paling populer adalah "membuat komputer yang mampu berpikir
layaknya manusia". Hal ini terbukti dari banyaknya film fiksi ilmiah yang
mempromosikan pandangan tersebut. Sebenarnya definisi ini berakar pada ahli
matematika Inggris terkenal dan uji pelopor komputer Alan Turing, tes Turing yaitu
dimana manusia akan mencoba menentukan apakah mereka (orang) dapat berbicara
melalui keyboard jarak jauh yang merupakan program manusia atau komputer.
Kondisi AI (Artificial Intelligence) yang kuat biasanya dipromosikan oleh
orang-orang yang percaya bahwa AI harus didasarkan pada landasan logis yang kuat
daripada apa yang mereka sebut yaitu AI lemah berbasis jaringan syaraf tiruan,
algoritma genetik, dan metode evolusi. Hal ini terbukti bahwa ada salah satu teknik AI
yang berhasil dalam menangani semua masalah dan mendapatkan kombinasi metode
Pada pertengahan tahun 1970-an, beberapa sistem pakar mulai muncul. Tujuan
dari sistem pakar adalah untuk mengembangkan program komputer yang dapat
berpikir berdasarkan akal manusia, yaitu memecahkan masalah dengan cara yang
dianggap cerdas jika dilakukan oleh manusia.
Selama tahun 1970-an, peneliti lebih fokus mengembangkan teknik-teknik
seperti representasi “bagaimana untuk memformulasikan masalah sehingga menjadi
lebih mudah untuk dipecahkan” dan pencarian “bagaimana untuk mengontrol
pencarian untuk menemukan solusi secara cerdas”, sehingga proses pencarian yang dilakukan tidak akan menggunakan memori komputer yang berlebihan. Strategi ini
menciptakan beberapa kemajuan, namun tidak mendapatkan terobosan baru. Hal ini
berlangsung sampai akhir dekade 70-an, dimana ilmuwan sistem pakar mulai
menyadari suatu hal yang sangat penting, yaitu kemampuan penyelesaian masalah
dalam suatu program berasal dari pengetahuan yang dimilikinya, bukan dari
formalitas atau skema inferensi yang digunakan. Terobosan konseptual dibuat dan
dapat dinyatakan dengan sederhana. Untuk membuat program yang cerdas, program
tersebut disediakan dengan pengetahuan spesifik yang berkualitas tentang
bidang-bidang masalah tertentu. Program ini kemudian disebut sebagai sistem pakar, dan
memulai bidang baru dalam lingkup ilmu komputer. Proses pembangunan sistem
pakar biasanya disebut dengan rekayasa pengetahuan. Biasanya melibatkan interaksi
yang spesial antara orang yang membangun sistem pakar yang disebut teknisi
pengetahuan. Biasanya terdapat satu atau lebih pakar dalam lingkup masalah tertentu.
Teknisi pengetahuan mengambil informasi dari pakar berupa prosedur, strategi, dan
aturan-aturan untuk menyelesaikan masalah, lalu membangun pengetahuan itu
menjadi sebuah sistem pakar, seperti yang ditunjukkan pada skema di bawah ini.
Gambar 2.1 Fungsi Dasar Sistem Pakar (Giarratano dan Riley, 2005) Knowledge-Base
Hasilnya adalah sebuah program komputer yang dapat memecahkan masalah
dengan cara yang hampir sama seperti para ahli. Paul E. Johnson, seorang ilmuwan
yang telah menghabiskan bertahun-tahun waktunya untuk mempelajari perilaku ahli
manusia, cukup baik menggambarkan apa yang dimaksud dengan ahli.
“Seorang ahli yaitu orang yang memiliki pengetahuan dan kemampuan untuk melakukan hal-hal yang kebanyakan orang tidak bisa. Seorang ahli bukan hanya
sekedar mahir, tetapi juga lancar mengambil tindakan untuk menyelesaikan masalah.
Seorang ahli mengetahui banyak hal dalam menerapkan apa yang mereka ketahui
dalam menyelesaikan suatu masalah. Mereka juga pandai memilih informasi yang
tidak relevan dalam rangka untuk mendapatkan masalah dasar, dan mereka mengenal
dengan baik permasalahan yang mereka hadapi. Rekayasa pengetahuan sangat
bergantung pada penelitian pakar untuk meningkatkan kecerdasan dan kemampuan
program”. Hal ini serupa dengan yang diutarakan oleh Hayes-Roth dalam bukunya
yang berjudul “Building Expert Sistem”:
Saat ini sudah banyak sistem pakar yang dikembangkan di berbagai bidang,
seperti : kedokteran, pertanian, ekonomi, elektronika, industri, dan masih banyak lagi.
Sistem pakar untuk melakukan diagnosis penyakit telah dikembangkan pada
pertengahan tahun 1970. Sistem pakar untuk diagnosis pertama kali dibuat oleh Bruce
Buchanan dan Edward Shortliffe di Stanford University. Yang kemudian diberi nama
MYCIN (Heckerman, 1986). MYCIN adalah sistem pakar yang dibangun untuk
mendiagnosis infeksi bakteri pada darah, contohnya meningitis dan infeksi bacremia,
dan memberikan rekomendasi terapi antimikrobia. MYCIN mampu memberikan
penjelasan atas penalarannya secara detail. Dalam uji cobanya, MYCIN menunjukkan
kemampuan seperti seorang spesialis. Dengan bertanya dan melakukan
backward-chaining pada basis aturan yang terdiri dari sekitar 500 aturan, MYCIN dapat
mengenali sekitar 100 penyebab infeksi bakteri. Dengan demikian MYCIN dapat
merekomendasi resep obat yang efektif. MYCIN ini dikembangkan di bidang
2.1.2 Konsep Dasar Sistem Pakar
Menurut Efraim Turban (1995), konsep dasar sistem pakar memiliki arti sebagai
keahlian, ahli, pengalihan keahlian, inferensi, aturan dan kemampuan menjelaskan.
Keahlian adalah suatu kelebihan penguasaan di bidang tertentu yang diperoleh dari
pelatihan, membaca atau pengalaman. Seorang ahli adalah seseorang yang mampu
menjelaskan suatu tanggapan dan dapat mempelajari hal-hal baru seputar topik
permasalahan (domain), menyusun kembali pengetahuan jika diperlukan, memecah
aturan-aturan jika dibutuhkan, dan menentukan relevan tidaknya keahlian mereka.
Pengalihan keahlian dari para ahli ke komputer dan kemudian dialihkan lagi
ke orang lain yang bukan ahli, merupakan tujuan utama dari sistem pakar. Proses ini
membutuhkan empat aktivitas, yaitu : tambahan pengetahuan (dari para ahli atau
sumber-sumber lainnya), representasi pengetahuan (ke komputer), inferensi
pengetahuan, dan pengalihan pengetahuan ke user. Pengetahuan yang disimpan di
komputer disebut dengan nama basis pengetahuan. Ada dua tipe pengetahuan, yaitu :
fakta dan prosedur (biasanya berupa aturan).
Salah satu fitur yang harus dimiliki sistem pakar yaitu kemampuan daya
nalar. Jika keahlian-keahlian sudah tersimpan sebagai basis pengetahuan dan sudah
tersedia diprogram yang mampu mengakses basis data, maka komputer harus dapat
diprogram untuk membuat inferensi. Proses inferensi ini dikemas dalam bentuk motor
inferensi (inference engine).
Sebagian besar sistem pakar komersial dibuat dalam bentuk rule-based
systems, yang mana pengetahuan dapat disimpan dalam bentuk aturan-aturan. Aturan
2.1.3 Struktur Sistem Pakar
Sistem pakar memiliki beberapa komponen utama, yaitu antarmuka pengguna (user
interface), basis data sistem pakar (expert system database), fasilitas akuisisi
pengetahuan (knowledge acquisition facility), dan mekanisme inferensi (inference
mechanism). Selain itu ada satu komponen yang hanya ada pada beberapa sistem
pakar, yaitu fasilitas penjelasan (explanation facility) (Martin dan Oxman,1988).
Struktur dari Sistem Pakar dapat dilihat pada Gambar 2.2.
Gambar 2.2 Struktur Sistem Pakar (Giarratano dan Riley, 2005)
Komponen-komponen yang terdapat dalam arsitektur/struktur sistem pakar yaitu:
1. Antarmuka Pengguna (User Interface)
Antarmuka merupakan mekanisme yang digunakan oleh pengguna dan sistem
pakar untuk berkomunikasi. Antarmuka menerima informasi dari pemakai dan
mengubahnya ke dalam bentuk yang dapat diterima oleh sistem. Selain itu
antarmuka akan menerima dari sistem dan menyajikannya ke dalam bentuk yang
dapat dimengerti oleh pemakai.
KNOWLEDGE BASE (RULES)
INFERENCE
ENGINE
WORKING MEMORY
(FACTS)
KNOWLEDGE AQUISITION FACILITY
INTERFACE EXPLANATION
FACILITY
2. Basis Pengetahuan (Knowledge Base)
Basis pengetahuan mengandung pengetahuan untuk pemahaman, formulasi, dan
penyelesaian masalah. Ada dua bentuk pendekatan basis pengetahuan yang sangat
umum digunakan, yaitu:
a. Penalaran Berbasis Aturan (Rule-Based Reasoning)
Pada penalaran berbasis aturan, pengetahuan dipresentasikan dengan
menggunakan aturan berbentuk IF-THEN. Bentuk ini digunakan apabila kita
memiliki sejumlah pengetahuan pakar pada suatu permasalahan tertentu, dan si
pakar dapat menyelesaikan masalah tersebut secara berurutan. Disamping itu,
bentuk ini juga digunakan apabila dibutuhkan penjelasan tentang
langkah-langkah pencapaian solusi.
b. Penalaran Berbasis Kasus (Case-Based Reasoning)
Basis pengetahuan akan berisi solusi-solusi yang telah dicapai sebelumnya,
kemudian akan diturunkan suatu solusi untuk keadaan yang terjadi sekarang
(fakta yang ada). Bentuk ini digunakan apabila user menginginkan untuk tahu
lebih banyak lagi pada kasus-kasus yang hampir sama. Selain itu, bentuk ini
juga digunakan apabila kita telah memiliki sejumlah kasus tertentu dalam basis
pengetahuan.
3. Akuisisi Pengetahuan (Knowledge Acquisition)
Akuisisi pengetahuan adalah akumulasi, transfer, dan transformasi keahlian dalam
menyelesaikan masalah dari sumber pengetahuan ke dalam program komputer.
Dalam tahap ini knowledge engineer berusaha menyerap pengetahuan untuk
selanjutnya ditransfer ke dalam basis pengetahuan. Pengetahuan diperoleh dari
pakar, dilengkapi dengan buku, basis data, laporan penelitian, dan pengalaman
pemakai.
4. Mesin/Motor Inferensi (Inference Engine)
Komponen ini mengandung mekanisme pola pikir dan penalaran yang digunakan
oleh pakar dalam menyelesaikan suatu masalah. Mesin inferensi adalah program
komputer yang memberikan metodologi untuk penalaran tentang informasi yang
ada dalam basis pengetahuan dan dalam workplace, dan untuk memformulasikan
5. Workplace/Blackboard
Workplace merupakan area dari sekumpulan memori kerja (working memory),
digunakan untuk merekam kejadian yang sedang berlangsung termasuk keputusan
sementara.
6. Fasilitas Penjelasan (Explanation Facility)
Fasilitas penjelasan adalah komponen tambahan yang akan meningkatkan
kemampuan sistem pakar, digunakan untuk melacak respon dan memberikan
penjelasan tentang kelakuan sistem pakar secara interaktif melalui pertanyaan.
7. Perbaikan Pengetahuan
Pakar memiliki kemampuan untuk menganalisis dan meningkatkan kinerjanya
serta kemampuan untuk belajar dari kinerjanya. Kemampuan tersebut adalah
penting dalam pembelajaran terkomputerisasi, sehingga program akan mampu
menganalisis penyebab kesuksesan dan kegagalan yang dialaminya dan juga
mengevaluasi apakah pengetahuan-pengetahuan yang ada masih cocok untuk
digunakan di masa mendatang.
2.1.4 Representasi Pengetahuan
Pengetahuan merupakan kemampuan untuk membentuk model mental yang
menggambarkan objek dengan tepat dan mampu mempresentasikannya dalam aksi
yang dilakukan terhadap suatu objek (Martin dan Oxman,1988). Representasi
pengetahuan merupakan metode yang digunakan untuk mengkodekan pengetahuan
dalam sebuah sistem pakar yang berbasis pengetahuan.
Beberapa model representasi pengetahuan yang penting adalah (Kusrini, 2006) :
1. Logika (logic)
2. Jaringan semantic (semantic nets)
3. Object-Atribute-Value (OAV)
4. Bingkai (frame)
2.1.5 Keuntungan Sistem Pakar
Sistem pakar adalah sistem yang menggunakan pengetahuan manusia yang
dimasukkan ke dalam komputer untuk memecahkan masalah-masalah yang biasanya
diselesaikan oleh pakar (Turban dan Aronson, 2002). Sistem pakar merupakan subset
dari Artificial Intelligence.
Adapun beberapa keuntungan dari sistem pakar adalah sebagai berikut :
1. Menjadikan pengetahuan dan nasehat jadi lebih mudah didapat.
2. Meningkatkan output dan produktifitas.
3. Menyimpan kemampuan dan keahlian pakar.
4. Meningkatkan penyelesaian masalah-menerusi panduan pakar,
penerangan, sistem pakar khas.
5. Meningkatkan reabilitas.
6. Memberikan respons (jawaban) yang cepat.
7. Merupakan panduan yang cerdas.
8. Dapat bekerja dengan informasi yang tidak lengkap dan mengandung
ketidakpastian.
9. Intelligence database (basis data cerdas), bahwa sistem pakar dapat
digunakan untuk mengakses basis data dengan cara cerdas.
2.2 Forward Chaining
Chain adalah suatu perkalian inferesi yang menghubungkan suatu permasalahan
dengan solusinya. Forward chaining adalah strategi penarikan kesimpulan yang
dimulai dari sejumlah fakta-fakta yang telah diketahui, untuk mendapatkan suatu fakta
baru dengan memakai rule-rule yang memiliki ide dasar yang cocok dengan fakta dan
terus dilanjutkan sampai mendapatkan tujuan atau sampai tidak ada rule yang punya
ide dasar yang cocok atau sampai mendapatkan fakta.
Forward chaining disebut bottom-up penalaran karena alasan dari bukti-bukti
tingkat rendah, fakta, ke tingkat atas kesimpulan yang didasarkan pada fakta. Forward
chaining menggunakan pendekatan data driven (berorientasi data). Dalam pendekatan
menggambarkan kesimpulan. Komputer akan menganalisa permasalahan dengan
mencari fakta yang cocok dengan bagian IF dari aturan IF-THEN.
Cara lain untuk menggambarkan forward chaining adalah suatu teknik untuk
mencari informasi baru, kemudian melihat proses di dalam petunjuk yan ada dari
tanda-tanda yang memisahkan bagian kiri dan kanan dari aturan-aturan tersebut
(Waterman, 1986). Fakta merupakan satuan dasar dari paradigma berbasis
pengetahuan karena mereka tidak bisa diurai ke dalam setiap unit yang lebih kecil
yang memiliki arti.
Kaidah ini digunakan dalam rantai sebab-akibat dari inferensi forward yang
menarik kesimpulan bahwa clyde adalah binatang yang memperlihatkan bahwa clyde
adalah seekor gajah. Rantai inferensi tersebut dapat ditunjukkan pada Gambar 2.3
berikut ini:
Gajah (Clyde)
Gajah (x) Mamalia (x)
Mamalia (x) Binatang (x)
Binatang (Clyde)
Gambar 2.3 Forward Chaining (Giarratano dan Riley, 2005)
Forward chaining :
1. Identifikasi kondisi.
2. Variabel kondisi ditempatkan pada Conclusion Var.Queue dan nilainya dicatat
pada Variable List.
3. Pencarian diarahkan untuk menemukan variabel di Base Variable List dengan
nama yang sama dengan nama variabel dalam daftar pertama antrian.
4. Jika ketemu, rule dan clause number dari variabel disimpan ke clause Variable