Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- CREATE DATABASE IF NOT EXISTS db_expert;
- USE db_expert;
- DROP TABLE IF EXISTS ds_evidences;
- CREATE TABLE IF NOT EXISTS ds_evidences(
- id INT AUTO_INCREMENT,
- code VARCHAR(3),
- name VARCHAR(30),
- PRIMARY KEY (id)
- ) ENGINE=MyISAM CHARSET=utf8;
- INSERT INTO ds_evidences(code,name)
- VALUES
- ('G1','Sulit untuk disiplin'),
- ('G2','Sangat sensitif terhadap kritikan'),
- ('G3','Hanya memiliki sedikit teman'),
- ('G4','Menghindari atau tidak menyukai kegiatan yang membutuhkan usaha berkesinambungan, contohnya duduk diam'),
- ('G5','Mengalami kecemasan pada situasi baru atau yang tidak familiar'),
- ('G6','Memiliki kecenderungan untuk melamun'),
- ('G7','Sering merasa rendah diri dan tidak percaya diri'),
- ('G8','Banyak merasa khawatir dan takut'),
- ('G9','Menjawab tanpa berpikir,sementara pertanyaan belum selesai'),
- ('G10','Apabila bermain, lebih sering mondar-mandir dan sulit bermain dengan tenang'),
- ('G11','Bicara berlebihan'),
- ('G12','Sering menghentak-hentakkan kaki ketika duduk diam'),
- ('G13','Sering mengganggu anak-anak lain'),
- ('G14','Mengalami kesulitan menunggu gilirannya (tidak sabaran)'),
- ('G15','Sering mengambil mainan teman dengan paksa'),
- ('G16','Reaktif, sering merespon kembali apa yang dilakukan kepadanya'),
- ('G17','Sering mengulangi kata-kata yang diucapkan teman'),
- ('G18','Sering bertindak kasar dengan teman sebaya'),
- ('G19','Sikap menantang dan membangkang'),
- ('G20','Sering melanggar peraturan, bahkan peraturan yang sederhana'),
- ('G21','Selalu bermasalah dengan orang- orang yang memiliki otoritas'),
- ('G22','Mudah merasa terganggu, mudah marah'),
- ('G23','Terlihat sangat pemalu dan menarik diri'),
- ('G24','Mainan sering tertinggal'),
- ('G25','Mudah beralih perhatian (terutamarangsang suara)'),
- ('G26','Cenderung tidak mendengarkan ketika seseorang berbicara'),
- ('G27','Memiliki masalah dalam hal mengatur tugas / kegiatan sehari- hari'),
- ('G28','Sulit mengikuti petunjuk guru dan orang tua'),
- ('G29','Sulit menyelesaikan tugas atau kegiatan yang diberikan guru atau orang tua'),
- ('G30','Seringkali lupa dengan kebiasaan dan kegiatan sehari-hari'),
- ('G31','Selalu bergerak, seperti berjalan atau memanjat'),
- ('G32','Sering menggeliat'),
- ('G33','Sering membuat gaduh suasana'),
- ('G34','Selalu ingin memegang benda yang dilihat');
- DROP TABLE IF EXISTS ds_problems;
- CREATE TABLE IF NOT EXISTS ds_problems(
- id INT AUTO_INCREMENT,
- code VARCHAR(3),
- name VARCHAR(30),
- notes TEXT,
- PRIMARY KEY (id)
- ) ENGINE=MyISAM CHARSET=utf8;
- INSERT INTO ds_problems(code,name,notes)
- VALUES
- ('P1','Inatentif','Anak-anak yang masalah utamanya adalah rendahnya konsentrasi dan kurangnya kemampuan untuk memusatkan perhatian.'),
- ('P2','Hiperaktif','Anak-anak yang masalahnya terutama diakibatkan oleh perilaku yang tidak bisa diam.'),
- ('P3','Impulsif','Anak-anak yang mengalami kesulitan untuk menunda respon (dorongan untuk mengatakan sesuatu/melakukan sesuatu dengan tidak sabar) dan selalu terburu-buru.');
- DROP TABLE IF EXISTS ds_rules;
- CREATE TABLE IF NOT EXISTS ds_rules(
- id_problem INT,
- id_evidence INT,
- cf float
- ) ENGINE=MyISAM CHARSET=utf8;
- INSERT INTO ds_rules(id_problem,id_evidence,cf)
- VALUES
- ('1','1','0.3'),
- ('2','1','0.3'),
- ('3','1','0.3'),
- ('1','2','0.3'),
- ('2','2','0.3'),
- ('3','2','0.3'),
- ('1','3','0.3'),
- ('2','3','0.3'),
- ('3','3','0.3'),
- ('1','4','0.6'),
- ('2','4','0.6'),
- ('1','5','0.6'),
- ('2','5','0.6'),
- ('1','6','0.6'),
- ('2','6','0.6'),
- ('3','6','0.6'),
- ('1','7','0.6'),
- ('2','7','0.6'),
- ('1','8','0.6'),
- ('1','9','0.6'),
- ('3','9','0.6'),
- ('2','10','0.7'),
- ('2','11','0.6'),
- ('3','11','0.6'),
- ('2','12','0.6'),
- ('3','12','0.6'),
- ('2','13','0.6'),
- ('3','13','0.6'),
- ('3','14','0.85'),
- ('3','15','0.4'),
- ('3','16','0.85'),
- ('3','17','0.75'),
- ('3','18','0.9'),
- ('3','19','0.9'),
- ('3','20','0.75'),
- ('2','21','0.6'),
- ('3','21','0.6'),
- ('1','22','0.6'),
- ('3','22','0.6'),
- ('1','23','0.6'),
- ('3','23','0.6'),
- ('1','24','0.7'),
- ('1','25','0.85'),
- ('1','26','0.9'),
- ('1','27','0.35'),
- ('1','28','0.6'),
- ('1','29','0.75'),
- ('1','30','0.95'),
- ('2','31','0.95'),
- ('2','32','0.45'),
- ('2','33','0.8'),
- ('2','34','0.9');
- */
- //-- database configurations
- $dbhost='localhost';
- $dbuser='root';
- $dbpass='';
- $dbname='db_expert';
- //-- database connections
- $db=new mysqli($dbhost,$dbuser,$dbpass,$dbname);
- //-- halt and show error message if connection fail
- if ($db->connect_error) {
- die('Connect Error ('.$db->connect_errno.')'.$db->connect_error);
- }
- ?>
- <form method="post">
- <!-- menampilkan daftar gejala-->
- <?php
- $sqli="SELECT * FROM ds_evidences";
- $result=$db->query($sqli);
- while($row=$result->fetch_object()){
- echo "<input type='checkbox' name='evidence[]' value='{$row->id}'"
- .(isset($_POST['evidence'])?(in_array($row->id,$_POST['evidence'])?" checked":""):"")
- ."> {$row->code} {$row->name}<br>";
- }
- ?>
- <input type="submit" value="proses">
- </form>
- <pre>
- <?php
- //-- Mengambil Nilai Belief Gejala Yang dipilih
- if(isset($_POST['evidence'])){
- if(count($_POST['evidence'])<2){
- echo "Pilih minimal 2 gejala";
- }else{
- $sql = "SELECT GROUP_CONCAT(b.code), a.cf
- FROM ds_rules a
- JOIN ds_problems b ON a.id_problem=b.id
- WHERE a.id_evidence IN(".implode(',',$_POST['evidence']).")
- GROUP BY a.id_evidence";
- $result=$db->query($sql);
- $evidence=array();
- while($row=$result->fetch_row()){
- $evidence[]=$row;
- }
- //--- menentukan environement
- $sql="SELECT GROUP_CONCAT(code) FROM ds_problems";
- $result=$db->query($sql);
- $row=$result->fetch_row();
- $fod=$row[0];
- //--- menentukan nilai densitas
- echo "== MENENTUKAN NILAI DENSITAS ==\n";
- $densitas_baru=array();
- while(!empty($evidence)){
- $densitas1[0]=array_shift($evidence);
- $densitas1[1]=array($fod,1-$densitas1[0][1]);
- $densitas2=array();
- if(empty($densitas_baru)){
- $densitas2[0]=array_shift($evidence);
- }else{
- foreach($densitas_baru as $k=>$r){
- if($k!="θ"){
- $densitas2[]=array($k,$r);
- }
- }
- }
- $theta=1;
- foreach($densitas2 as $d) $theta-=$d[1];
- $densitas2[]=array($fod,$theta);
- $m=count($densitas2);
- $densitas_baru=array();
- for($y=0;$y<$m;$y++){
- for($x=0;$x<2;$x++){
- if(!($y==$m-1 && $x==1)){
- $v=explode(',',$densitas1[$x][0]);
- $w=explode(',',$densitas2[$y][0]);
- sort($v);
- sort($w);
- $vw=array_intersect($v,$w);
- if(empty($vw)){
- $k="θ";
- }else{
- $k=implode(',',$vw);
- }
- if(!isset($densitas_baru[$k])){
- $densitas_baru[$k]=$densitas1[$x][1]*$densitas2[$y][1];
- }else{
- $densitas_baru[$k]+=$densitas1[$x][1]*$densitas2[$y][1];
- }
- }
- }
- }
- foreach($densitas_baru as $k=>$d){
- if($k!="θ"){
- $densitas_baru[$k]=$d/(1-(isset($densitas_baru["θ"])?$densitas_baru["θ"]:0));
- }
- }
- print_r($densitas_baru);
- }
- //--- perangkingan
- echo "== PERANGKINGAN ==\n";
- unset($densitas_baru["θ"]);
- arsort($densitas_baru);
- print_r($densitas_baru);
- //--- menampilkan hasil akhir
- echo "== HASIL AKHIR ==\n";
- $codes=array_keys($densitas_baru);
- $final_codes=explode(',',$codes[0]);
- $sql="SELECT GROUP_CONCAT(name)
- FROM ds_problems
- WHERE code IN('".implode("','",$final_codes)."')";
- $result=$db->query($sql);
- $row=$result->fetch_row();
- echo "Terdeteksi penyakit <b>{$row[0]}</b> dengan derajat kepercayaan ".round($densitas_baru[$codes[0]]*100,2)."%";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment