Read 1115 times | Created 2014-05-13 09:57:24 | Updated 2014-05-13 09:57:24 | | |
<?php /********************************* FILENAME : sugeno.php CREATE BY : cahya dsn PURPOSE : Sugeno Fuzzy Inference Engine CREATE DATE : 2014-05-13 ********************************** CONTOH KASUS: Sebuah perusahaan makanan kaleng akan memproduksi makanan jenis ABC. Dari data 1 bulan terakhir, permintaan terbesar hingga mencapai 5000 kemasan/hari, dan permintaan terkecil sampai 1000 kemasan/hari. Persediaan barang digudang paling banyak sampai 600 kemasan/hari, dan paling sedikit sampai 100 kemasan/hari. Dengan segala keterbatasannya, sampai saat ini, perusahaan baru mampu memproduksi barang maksimal 7000 kemasan/hari, serta demi efisiensi mesin dan SDM tiap hari diharapkan perusahaan memproduksi paling tidak 2000 kemasan. Apabila proses produksi perusahaan tersebut menggunakan 4 aturan sebagai berikut: Rule 1 IF permintaan TURUN and persediaan BANYAK THEN produksi barang = permintaan - persediaan Rule 2 IF permintaan TURUN and persediaan SEDIKIT THEN produksi barang = permintaan Rule 3 IF permintaan NAIK and persediaan BANYAK THEN produksi barang = permintaan Rule 4 IF permintaan NAIK and persediaan SEDIKIT THEN produksi barang = 1.25*permintaan - persediaan Berapa kemasan makanan jenis ABC yang harus diproduksi, jika jumlah permintaan sebanyak 3500 kemasan, dan persediaan di gudang masih 300 kemasan ? */ $x_min=isset($_POST['x_min'])?$_POST['x_min']:1000; $x_max=isset($_POST['x_max'])?$_POST['x_max']:5000; $y_min=isset($_POST['y_min'])?$_POST['y_min']:100; $y_max=isset($_POST['y_max'])?$_POST['y_max']:600; $z_min=isset($_POST['z_min'])?$_POST['z_min']:2000; $z_max=isset($_POST['z_max'])?$_POST['z_max']:7000; $x=isset($_POST['x'])?$_POST['x']:3500; $y=isset($_POST['y'])?$_POST['y']:300; ?> <!DOCTYPE html> <html> <head> <title>protoSugeno</title> <style type='text/css'> * {font-family:verdana,arial,sans-serif;font-size:10pt;} h1{font-size:18pt;} h2{font-size:14pt;line-height:16pt;} fieldset{margin:5px;padding:5px;background-color:#eee;} legend {font-weight:bold;padding:5px;background-color:#ee9;} .inptxt{text-align:right;} </style> </head> <body> <div id='container'> <h2>Sistem Inferensi Fuzzy</h2> <h1>Metode Sugeno</h1> <fieldset style='display:none'> <legend>Kasus</legend> <!-- reserved //--> </fieldset> <form method='post'> <fieldset> <legend>Batasan</legend> <table> <tr><th>Variabel</th><th>Min Value</th><th>Max Value</th></tr> <tr> <td>Permintaan (x)</td> <td><input type='text' class='inptxt' name='x_min' value='<?=$x_min?>'/></td> <td><input type='text' class='inptxt' name='x_max' value='<?=$x_max?>'/></td> </tr> <tr> <td>Persediaan (y)</td> <td><input type='text' class='inptxt' name='y_min' value='<?=$y_min?>'/></td> <td><input type='text' class='inptxt' name='y_max' value='<?=$y_max?>'/></td> </tr> <tr> <td>Produksi (z)</td> <td><input type='text' class='inptxt' name='z_min' value='<?=$z_min?>'/></td> <td><input type='text' class='inptxt' name='z_max' value='<?=$z_max?>'/></td> </tr> </table> </fieldset> <fieldset> <legend>Inputan</legend> <table> <tr> <td>Permintaan yang diinginkan (x)</td> <td><input type='text' class='inptxt' name='x' value='<?=$x?>' /></td> </tr> <tr> <td>Persediaan di gudang (y)</td> <td><input type='text' class='inptxt' name='y' value='<?=$y?>' /></td> </tr> </table> </fieldset> <input type='submit' name='proses' value='proses' /> </form> <?php if(isset($_POST['proses'])){ ?> <fieldset> <legend>[1] Pembentukan Himpunan Fuzzy (Fuzzyfication)</legend> <table border='1'> <tr> <th colspan='4'>Pemintaan</th> </tr> <tr> <td rowspan='3'>µ<sub>permintaan NAIK</sub>(x)</td> <td>1 , x<<?=$x_min?></td> <td rowspan='3'>µ<sub>permintaan TURUN</sub>(x)</td> <td>0 , x<<?=$x_min?></td> </tr> <tr> <td>(<?=$x_max?>-x)/<?=($x_max-$x_min)?> , <?=$x_min?> ≤ x ≤<?=$x_max?></td><td>(x-<?=$x_min?>)/<?=($x_max-$x_min)?> , <?=$x_min?> ≤ x ≤<?=$x_max?></td> </tr> <tr> <td>0 , x><?=$x_max?></td><td>1 , x><?=$x_max?></td> </tr> <tr> <th colspan='4'>Persediaan</th> </tr> <tr> <td rowspan='3'>µ<sub>persediaan BANYAK</sub>(y)</td> <td>1 , y<<?=$y_min?></td> <td rowspan='3'>µ<sub>persediaan SEDIKIT</sub>(y)</td> <td>0 , y<<?=$y_min?></td> </tr> <tr> <td>(<?=$y_max?>-y)/<?=($y_max-$y_min)?> , <?=$y_min?> ≤ y ≤<?=$y_max?></td><td>(y-<?=$y_min?>)/<?=($y_max-$y_min)?> , <?=$y_min?> ≤ y ≤<?=$y_max?></td> </tr> <tr> <td>0 , y><?=$y_max?></td><td>1 , y><?=$y_max?></td> </tr> <tr> <th colspan='4'>Produksi</th> </tr> <tr> <td colspan='4' align='center'>Produksi tidak mempunyai himpunan fuzzy</td> </tr> <tr> <td colspan='4'> Permintaan: x=<?=$x?>;<br /> <?php $ux_turun=($x_max-$x)/($x_max-$x_min); $ux_naik=($x-$x_min)/($x_max-$x_min); ?> µ<sub>permintaan TURUN</sub>(<?=$x?>)=(<?=$x_max?>-<?=$x?>)/<?=($x_max-$x_min)?>=<?=$ux_turun?>;<br /> µ<sub>permintaan NAIK</sub>(<?=$x?>)=(<?=$x?>-<?=$x_min?>)/<?=($x_max-$x_min)?>=<?=$ux_naik?>;<br /> Persediaan: y=<?=$y?>;<br /> <?php $uy_sedikit=($y_max-$y)/($y_max-$y_min); $uy_banyak=($y-$y_min)/($y_max-$y_min); ?> µ<sub>persediaan SEDIKIT</sub>(<?=$y?>)=(<?=$y_max?>-<?=$y?>)/<?=($y_max-$y_min)?>=<?=$uy_sedikit?>;<br/> µ<sub>persediaan BANYAK</sub>(<?=$y?>)=(<?=$y?>-<?=$y_min?>)/<?=($y_max-$y_min)?>=<?=$uy_banyak?>;<br/> </td> </tr> </table> </fieldset> <fieldset> <legend>[2] Penerapan Fungsi Implikasi</legend> <p>Nilai α-predikat dan Z dari setiap aturan</p> <p><strong>Rule 1 :</strong><em> IF permintaan TURUN and persediaan BANYAK THEN produksi barang = permintaan - persediaan</em><br /> <?php $a_pred1=min($ux_turun,$uy_banyak); $z1=$x-$y; ?> α-predikat<sub>1</sub>=µ<sub>permintaan TURUN</sub> <big>∩</big> µ<sub>persediaan BANYAK</sub><br /> =min(µ<sub>permintaan TURUN</sub>(<?=$x?>) <big>∩</big> µ<sub>persediaan BANYAK</sub>(<?=$y?>))<br /> =min(<?=$ux_turun?>,<?=$uy_banyak?>)<br /> =<?=$a_pred1?><br /> Dari konsekuen Rule 1: z<sub>1</sub>)=permintaan -persediaan=<?=$x?>-<?=$y?><br/> diperoleh <strong>z<sub>1</sub></strong>=<?=$z1?> </p> <p><strong>Rule 2 :</strong><em>IF permintaan TURUN and persediaan SEDIKIT THEN produksi barang = permintaan</em><br /> <?php $a_pred2=min($ux_turun,$uy_sedikit); $z2=$x; ?> α-predikat<sub>2</sub>=µ<sub>permintaan TURUN</sub> <big>∩</big> µ<sub>persediaan SEDIKIT</sub><br /> =min(µ<sub>permintaan TURUN</sub>(<?=$x?>) <big>∩</big> µ<sub>persediaan SEDIKIT</sub>(<?=$y?>))<br /> =min(<?=$ux_turun?>,<?=$uy_sedikit?>)<br /> =<?=$a_pred2?><br /> Dari bagian konsekuen Rule 2: z<sub>2</sub>)=permintaan =<?=$x?><br/> diperoleh <strong>z<sub>2</sub></strong>=<?=$z2?> </p> <p><strong>Rule 3 :</strong><em>IF permintaan NAIK and persediaan BANYAK THEN produksi barang = permintaan</em><br /> <?php $a_pred3=min($ux_naik,$uy_banyak); $z3=$x; ?> α-predikat<sub>2</sub>=µ<sub>permintaan NAIK</sub> <big>∩</big> µ<sub>persediaan BANYAK</sub><br /> =min(µ<sub>permintaan NAIK</sub>(<?=$x?>) <big>∩</big> µ<sub>persediaan BANYAK</sub>(<?=$y?>))<br /> =min(<?=$ux_naik?>,<?=$uy_banyak?>)<br /> =<?=$a_pred3?><br /> Dari himpunan produksi barang BERTAMBAH: z<sub>3</sub>=permintaan=<?=$x?><br/> diperoleh <strong>z<sub>3</sub></strong>=<?=$z3?> </p> <p><strong>Rule 4 :</strong><em>IF permintaan NAIK and persediaan SEDIKIT THEN produksi barang = 1.25 * permintaan - persediaan</em><br /> <?php $a_pred4=min($ux_naik,$uy_sedikit); $z4=1.25 * $x - $y; ?> α-predikat<sub>2</sub>=µ<sub>permintaan NAIK</sub> <big>∩</big> µ<sub>persediaan SEDIKIT</sub><br /> =min(µ<sub>permintaan NAIK</sub>(<?=$x?>) <big>∩</big> µ<sub>persediaan SEDIKIT</sub>(<?=$y?>))<br /> =min(<?=$ux_naik?>,<?=$uy_sedikit?>)<br /> =<?=$a_pred4?><br /> Dari himpunan produksi barang BERTAMBAH: z<sub>4</sub>= 1.25 * permintaan - persediaan = 1.25 * <?=$x?>-<?=$y?><br/> diperoleh <strong>z<sub>4</sub></strong>=<?=$z4?> </p> </fieldset> <fieldset> <legend>Defuzzyfication</legend> <?php $n=$a_pred1*$z1+$a_pred2*$z2+$a_pred3*$z3+$a_pred4*$z4; $d=$a_pred1+$a_pred2+$a_pred3+$a_pred4; $z=$n/$d; ?> <p>Menghitung z akhir dengan merata-rata semua z berbobot</p> <p>z=(α-predikat<sub>1</sub>*z<sub>1</sub>+α-predikat<sub>2</sub>*z<sub>2</sub>+α-predikat<sub>3</sub>*z<sub>3</sub>+α-predikat<sub>4</sub>*z<sub>4</sub>)/(α-predikat<sub>1</sub>+α-predikat<sub>2</sub>+α-predikat<sub>3</sub>+α-predikat<sub>4</sub>)<br/> =(<?=$a_pred1?>*<?=$z1?>+<?=$a_pred2?>*<?=$z2?>+<?=$a_pred3?>*<?=$z3?>+<?=$a_pred4?>*<?=$z4?>)/(<?=$a_pred1?>+<?=$a_pred2?>+<?=$a_pred3?>+<?=$a_pred4?>)<br/> =<?=$n?>/<?=$d?><br/> =<?=$z?></p> <p>Jadi jumlah yang harus diproduksi (<strong>z</strong>) =<strong><?=$z?></strong></p> </fieldset> <?php } ?> </div> </body> </html>