Advertisement
Guest User

simulated_annealing_view.php

a guest
Jul 21st, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 22.86 KB | None | 0 0
  1. <?php
  2.  
  3. require_once "algoritma_sa.php";
  4. // require_once "../fungsiGlobal.php";
  5.  
  6. $displayError ='display: none';
  7. $displaySuccess = false;
  8. $defineOperasiJantung = 'Operasi Jantung';
  9. $defineNamaRuanganJantung = 'Ruang Operasi Jantung';
  10.  
  11. if (!empty($_POST['jumlahOperasi'])) {
  12.     // Get data from method POST
  13.     $jumlahOperasi = $_POST['jumlahOperasi'];
  14.     $inputDurasiOperasi = $_POST['inputDurasiOperasi'];
  15.     $maxIterasi = $_POST['max_iterasi'];
  16.     $suhuSekarang = $_POST['suhu_sekarang'];
  17. } else {
  18.     // Define value
  19.     $jumlahOperasi = null;
  20.     $inputDurasiOperasi = "false";
  21.     $maxIterasi = 100000;
  22.     $suhuSekarang = 10000;
  23. }
  24.  
  25. if ($jumlahOperasi && $inputDurasiOperasi == "true") {
  26.     $generate = $_POST['generate'];
  27.     $dataJson = $_POST['dataJson'];
  28.  
  29.     if (!empty($_POST['dataPost'])) {
  30.         $dataPost = (array) json_decode($_POST['dataPost']);
  31.         foreach ($dataPost as $key => $value) {
  32.             if ($key == 'generate') {
  33.                 $_POST['generate'] = $generate;
  34.             } elseif ($key == 'dataPost') {
  35.                 $_POST['dataJson'] = $dataJson;
  36.             } else {
  37.                 $_POST[$key] = $value;
  38.             }
  39.         }
  40.     }
  41.  
  42.     // exit(var_dump($_POST));
  43.  
  44.     $data2 = [];
  45.     $c = 1;
  46.     foreach ($db->fetch_all("tbl_ruangan WHERE id_status=1 ORDER BY id_ruangan ASC") as $tbl_ruangan) {
  47.         $jumlahRuangOperasi = $c;
  48.         $d = 1;
  49.         while ($d <= $jumlahOperasi) {
  50.             $id_ruangan = $tbl_ruangan->id_ruangan;
  51.             $namaOperasi = "operasi_" . $d;
  52.             $tanggalMasuk = "tanggal_masuk_" . $id_ruangan . '-' . $d;
  53.             $jamMasuk = "jam_masuk_" . $id_ruangan . '-' . $d;
  54.             $jamKeluar = "jam_keluar_" . $id_ruangan . '-' . $d;
  55.             $getTimeDiffDurasi = getTimeDiff($_POST[$jamMasuk], $_POST[$jamKeluar]);
  56.            
  57.             // RUmus perhitungan
  58.             // (((tbl_alat.kapasitas * tbl_alat.jumlah) / 1000) * durasi) * tbl_harga.harga
  59.  
  60.             $totalHarga = $db->fetch_custom('SELECT (((sum(ta.kapasitas * ta.jumlah) / 1000) * '.$getTimeDiffDurasi.') * (SELECT harga FROM tbl_harga)) as total_harga
  61.            FROM tbl_ruangan as tr
  62.            RIGHT JOIN tbl_alat as ta
  63.            ON ta.id_ruangan = tr.id_ruangan
  64.            WHERE ta.id_ruangan = ' . $id_ruangan);
  65.  
  66.             foreach ($totalHarga as $key => $value) {
  67.                 $totalHargaArr[$id_ruangan][] = $value->total_harga;
  68.             }
  69.  
  70.             if (!empty($getTimeDiffDurasi)) {
  71.  
  72.                 foreach ($totalHarga as $th) {
  73.                     $totalHarga[$id_ruangan][] = $th->total_harga;
  74.                 }
  75.  
  76.                 $dataDurasiOperasi[$namaOperasi][$id_ruangan]['nama_ruangan'] = $tbl_ruangan->nama_ruangan;
  77.                 $dataDurasiOperasi[$namaOperasi][$id_ruangan]['operasi'] = $_POST[$namaOperasi];
  78.                 $dataDurasiOperasi[$namaOperasi][$id_ruangan]['tanggal_masuk'] = $_POST[$tanggalMasuk];
  79.                 $dataDurasiOperasi[$namaOperasi][$id_ruangan]['operasi'] = $_POST[$namaOperasi];
  80.                 $dataDurasiOperasi[$namaOperasi][$id_ruangan]['jam_masuk'] = $_POST[$jamMasuk];
  81.                 $dataDurasiOperasi[$namaOperasi][$id_ruangan]['jam_keluar'] = $_POST[$jamKeluar];
  82.                 $dataDurasiOperasi[$namaOperasi][$id_ruangan]['durasi'] = $getTimeDiffDurasi;
  83.                 $dataDurasiOperasi[$namaOperasi][$id_ruangan]['total_harga'] = $totalHarga;
  84.                 $dataDurasi[$namaOperasi][] = $getTimeDiffDurasi;
  85.             }
  86.  
  87.             // prepare for data algoritma simulated annealing
  88.             $data2[$id_ruangan][] = $getTimeDiffDurasi;
  89.             $operasi[$namaOperasi] = $_POST[$namaOperasi];
  90.             $tanggalMasukArr[$id_ruangan][] = $_POST[$tanggalMasuk];
  91.             $jamMasukArr[$id_ruangan][] = $_POST[$jamMasuk];
  92.             $jamKeluarArr[$id_ruangan][] = $_POST[$jamKeluar];
  93.  
  94.             $d++;
  95.         }
  96.  
  97.         $idRuangan[$c] = $tbl_ruangan->id_ruangan;
  98.         $namaRuangan[$c] = $tbl_ruangan->nama_ruangan;
  99.  
  100.         $c++;
  101.     }
  102.     // var_dump($totalHargaArr);
  103.     // var_dump($tanggalMasukArr);
  104.     // var_dump($jamMasukArr);
  105.     // var_dump($jamKeluarArr);
  106.     // exit;
  107.     // exit(var_dump($data2));
  108.  
  109.     $data = array_values($data2);
  110.     $totalHargaArr = array_values($totalHargaArr);
  111.     $tanggalMasukArr = array_values($tanggalMasukArr);
  112.     $jamMasukArr = array_values($jamMasukArr);
  113.     $jamKeluarArr = array_values($jamKeluarArr);
  114.     $operasi = array_values($operasi);
  115.     $idRuangan = array_values($idRuangan);
  116.     $namaRuangan = array_values($namaRuangan);
  117.  
  118.     // var_dump($result);
  119.     // var_dump($dataDurasiOperasi);
  120.     // var_dump($jumlahRuangOperasi);
  121.     // var_dump($operasi);
  122.     // var_dump($data)
  123.  
  124.     // Save data to table jadwal
  125.     if (!empty($_POST['generate']) && $_POST['generate'] == 'generate') {
  126.        
  127.         $dataDuplicate = [];
  128.         foreach (json_decode($_POST['dataJson']) as $key => $dataJadwal) {
  129.             if (!empty($dataJadwal->tanggal_masuk) && !empty($dataJadwal->jam_masuk) && !empty($dataJadwal->jam_keluar)) {
  130.                 $checkData = $db->fetch_all_custom('SELECT tbl_jadwal.*, tr.nama_ruangan FROM tbl_jadwal
  131.                LEFT JOIN tbl_ruangan tr ON tr.id_ruangan = tbl_jadwal.id_ruangan
  132.                    WHERE tbl_jadwal.id_ruangan="'.$dataJadwal->id_ruangan.'"
  133.                    AND tanggal_masuk="'.$dataJadwal->tanggal_masuk.'"
  134.                    AND
  135.     (
  136.         jam_masuk between "'.$dataJadwal->jam_masuk.'" AND "'.$dataJadwal->jam_keluar.'" OR
  137.         jam_keluar between "'.$dataJadwal->jam_masuk.'" AND "'.$dataJadwal->jam_keluar.'"
  138.     )
  139.                    ');
  140.                    
  141.                 foreach ($checkData as $value) {
  142.                     $dataDuplicate[] = $value;
  143.                 }
  144.    
  145.                 if (empty($dataDuplicate)) {
  146.                     $insertJadwal[$key] = [
  147.                         'id_ruangan' => $dataJadwal->id_ruangan,
  148.                         'nama_operasi' => $dataJadwal->operasi,
  149.                         'tanggal_masuk' => $dataJadwal->tanggal_masuk,
  150.                         'jam_masuk' => $dataJadwal->jam_masuk,
  151.                         'jam_keluar' => $dataJadwal->jam_keluar,
  152.                         'id_status' => 0, // Status OFF,
  153.                         'durasi' => $dataJadwal->durasi,
  154.                         'total_harga' => $dataJadwal->total_harga,
  155.                     ];
  156.                 } else {
  157.                     $displayError = '';
  158.                 }
  159.             }
  160.         }
  161.  
  162.         if (!empty($insertJadwal) && empty($dataDuplicate)) {
  163.             foreach ($insertJadwal as $value) {
  164.                 $db->insert("tbl_jadwal", $value);
  165.             }
  166.             $displaySuccess = true;
  167.         }
  168.     }
  169. }
  170.  
  171. ?>
  172.  
  173. <div class="errorna" style="<?php echo $displayError ?>">
  174.     <div class="alert alert-danger" style="margin-left:0">
  175.       <button class="close" data-dismiss="alert">×</button>
  176.       <center><strong>Data jadwal sudah ada!</strong></center>
  177.       <br><br>
  178.       <?php $nomor=1; foreach($dataDuplicate as $value) { ?>
  179.         <p>
  180.             <?= $nomor ?>. <?= $value->nama_ruangan ?> pada tanggal <?= $value->tanggal_masuk ?> Jam <?= $value->jam_masuk ?> s/d <?= $value->jam_keluar ?> sudah terpaikai.
  181.         </p>
  182.       <?php $nomor++;} ?>
  183.     </div>
  184.   </div>
  185.  
  186. <?php if ($displaySuccess == true) { ?>
  187.   <div class="errorna">
  188.     <div class="alert alert-success" style="margin-left:0">
  189.       <button class="close" data-dismiss="alert">×</button>
  190.       <center><strong>Data berhasil disimpan!</strong></center>
  191.     </div>
  192.   </div>
  193.   <script>
  194.     setTimeout(function(){ window.location = "http://localhost:81/Admin/admina/index.php/simulated-annealing"; }, 2000);
  195.   </script>
  196. <?php } ?>
  197.  
  198. <!-- Content Header (Page header) -->
  199. <section class="content-header">
  200.     <h1>
  201.         Simulated Annealing
  202.     </h1>
  203.     <ol class="breadcrumb">
  204.         <li>
  205.             <a href="<?=base_index();?>">
  206.                 <i class="fa fa-dashboard"></i> Home</a>
  207.         </li>
  208.         <li>
  209.             <a href="<?=base_index();?>jadwal-ruangan">Simulated Annealing</a>
  210.         </li>
  211.     </ol>
  212. </section>
  213.  
  214. <!-- Main content -->
  215. <section class="content">
  216.     <!-- Input Jumlah Operasi -->
  217.     <div class="row">
  218.         <div class="col-xs-12">
  219.             <div class="box">
  220.                 <div class="box-header">
  221.                     <h3 class="box-title">Input Jumlah Operasi</h3>
  222.                 </div>
  223.                 <div class="box-body">
  224.                     <form id="input-jumlah-operasi" method="post" class="form-horizontal">
  225.                         <div class="form-group">
  226.                             <label for="Jumlah Operasi" class="control-label col-xs-2">Jumlah Operasi</label>
  227.                             <div class="col-xs-10">
  228.                                 <input type="number" name="jumlahOperasi" placeholder="Jumlah Operasi" class="form-control" required value="<?php echo $jumlahOperasi ?>">
  229.                             </div>
  230.                         </div>
  231.                         <div class="form-group">
  232.                             <label for="Max Iterasi" class="control-label col-xs-2">Max Iterasi</label>
  233.                             <div class="col-xs-10">
  234.                                 <input type="number" name="max_iterasi" placeholder="Max Iterasi Operasi" class="form-control" required value="<?php echo $maxIterasi ?>">
  235.                             </div>
  236.                         </div>
  237.                         <div class="form-group">
  238.                             <label for="Suhu Sekarang" class="control-label col-xs-2">Suhu Sekarang</label>
  239.                             <div class="col-xs-10">
  240.                                 <input type="number" name="suhu_sekarang" placeholder="Suhu Sekarang" class="form-control" required value="<?php echo $suhuSekarang ?>">
  241.                             </div>
  242.                         </div>
  243.                         <div class="form-group">
  244.                             <label for="tags" class="control-label col-xs-2">&nbsp;</label>
  245.                             <div class="col-xs-10">
  246.                                 <button type="submit" class="btn btn-primary btn-flat" value="submit">Submit</button>
  247.                             </div>
  248.                         </div>
  249.                     </form>
  250.                 </div>
  251.             </div>
  252.         </div>
  253.     </div>
  254.     <!-- End Input Jumlah Operasi -->
  255.  
  256.     <?php if (!empty($jumlahOperasi) && $inputDurasiOperasi === "true") {
  257.         // Solusi
  258.         // Generate Algoritma SA
  259.         $generate = generate($data, $jumlahRuangOperasi, $jumlahOperasi, $operasi, $maxIterasi, $suhuSekarang, $idRuangan, $namaRuangan, $tanggalMasukArr, $jamMasukArr, $jamKeluarArr, $totalHargaArr);
  260.  
  261.         $cekRuangaOperasi = [];
  262.         foreach ($generate['result'] as $key => $value) {
  263.             $valOperasi = strtolower(str_replace(' ', '', $value['operasi']));
  264.             $defineOperasiJantung = strtolower(str_replace(' ', '', $defineOperasiJantung));
  265.             $namaRuangan = strtolower(str_replace(' ', '', $value['nama_ruangan']));
  266.             $defineNamaRuanganJantung = strtolower(str_replace(' ', '', $defineNamaRuanganJantung));
  267.  
  268.             if ($valOperasi == $defineOperasiJantung) {
  269.                 if ($namaRuangan !== $defineNamaRuanganJantung) {
  270.                 $cekRuangaOperasi[$key] = $value;
  271.                 ?>
  272.                 <div class="errorna">
  273.                     <div class="alert alert-danger" style="margin-left:0">
  274.                         <button class="close" data-dismiss="alert">×</button>
  275.                         <center><strong><?= $value['operasi'] ?> harus dilakukan di Ruangan Operasi Jantung</strong></center>
  276.                     </div>
  277.                 </div>
  278.                 <?php
  279.                 }
  280.             }
  281.         }
  282.         // var_dump($generate);
  283.     }
  284.     ?>
  285.  
  286.     <?php if (!empty($jumlahOperasi)) {?>
  287.     <div class="row">
  288.         <div class="col-xs-12">
  289.             <div class="box">
  290.                 <div class="box-header">
  291.                     <h3 class="box-title">Input Durasi Operasi</h3>
  292.                 </div>
  293.                 <!-- /.box-header -->
  294.                 <div class="box-body">
  295.                     <form id="input-durasi" method="post" class="form-horizontal">
  296.                         <input type="hidden" name="jumlahOperasi" required value="<?php echo $jumlahOperasi ?>">
  297.                         <input type="hidden" name="inputDurasiOperasi" required value="true">
  298.                         <input type="hidden" name="max_iterasi" required value="<?php echo $maxIterasi ?>">
  299.                         <input type="hidden" name="suhu_sekarang" required value="<?php echo $suhuSekarang ?>">
  300.  
  301.                         <!-- input data -->
  302.                         <div class="table-responsive">
  303.                             <table class="table table-condensed table-striped">
  304.                                 <thead>
  305.                                     <th>Nama Ruangan</th>
  306.                                     <?php $a = 1;while ($a <= $jumlahOperasi) {?>
  307.                                     <th>
  308.                                         <div class="col-xs-12">
  309.                                             <?php $namaOperasi = 'operasi_' . $a;?>
  310.                                             <?php /*
  311.                                             <input type="text" name="<?php echo $namaOperasi ?>" placeholder="Nama Operasi <?php echo $a ?>" class="form-control" required
  312.                                                 value="<?php echo !empty($_POST[$namaOperasi]) ? $_POST[$namaOperasi] : null ?>">
  313.                                             */ ?>
  314.  
  315.                                             <input list="dataOperasi-<?php echo $a ?>" type="text" name="<?php echo $namaOperasi ?>" placeholder="Nama Operasi <?php echo $a ?>" class="form-control" required autocomplete=off value="<?php echo !empty($_POST[$namaOperasi]) ? $_POST[$namaOperasi] : null ?>">
  316.                                             <datalist id="dataOperasi-<?php echo $a ?>">
  317.                                                 <?php
  318.                                                     foreach($db->fetch_all('tbl_operasi') as $isi) {
  319.                                                         echo "<option data-value='$isi->id_operasi'>$isi->nama_operasi</option>";
  320.                                                     }
  321.                                                 ?>
  322.                                             </datalist>
  323.                                         </div>
  324.                                     </th>
  325.                                     <?php $a++;}?>
  326.                                 </thead>
  327.                                 <tbody>
  328.                                     <?php foreach ($db->fetch_all('tbl_ruangan WHERE id_status = 1 ORDER BY id_ruangan ASC') as $tbl_ruangan) {?>
  329.                                     <tr>
  330.                                         <td>
  331.                                             <?php echo $tbl_ruangan->nama_ruangan ?>
  332.                                         </td>
  333.                                         <?php $a = 1;while ($a <= $jumlahOperasi) {?>
  334.                                         <td>
  335.                                             <div class="col-xs-12">
  336.                                                 <?php $tanggal_masuk = 'tanggal_masuk_' . $tbl_ruangan->id_ruangan . '-' . $a?>
  337.                                                 <span style="font-size: 12px">Tanggal</span>
  338.                                                 <input type="date" name="<?php echo $tanggal_masuk ?>" class="form-control" value="<?php echo !empty($_POST[$tanggal_masuk]) ? $_POST[$tanggal_masuk] : null ?>">
  339.                                             </div>
  340.                                             <br>
  341.                                             <div class="col-xs-12">
  342.                                                 <?php $jam_masuk = 'jam_masuk_' . $tbl_ruangan->id_ruangan . '-' . $a?>
  343.                                                 <span style="font-size: 12px">Jam Masuk</span>
  344.                                                 <input type="time" name="<?php echo $jam_masuk ?>" class="form-control" value="<?php echo !empty($_POST[$jam_masuk]) ? $_POST[$jam_masuk] : null ?>">
  345.                                             </div>
  346.                                             <br>
  347.                                             <div class="col-xs-12">
  348.                                                 <?php $jam_keluar = 'jam_keluar_' . $tbl_ruangan->id_ruangan . '-' . $a?>
  349.                                                 <span style="font-size: 12px">Jam Keluar</span>
  350.                                                 <input type="time" name="<?php echo $jam_keluar ?>" class="form-control" value="<?php echo !empty($_POST[$jam_keluar]) ? $_POST[$jam_keluar] : null ?>">
  351.                                             </div>
  352.                                         </td>
  353.                                         <?php $a++;}?>
  354.                                     </tr>
  355.                                     <?php }?>
  356.                                 </tbody>
  357.                             </table>
  358.                         </div>
  359.                         <!-- /.input data -->
  360.  
  361.                         <div class="form-group">
  362.                             <label for="tags" class="control-label col-xs-12 ">&nbsp;</label>
  363.                             <div class="col-xs-12">
  364.                                 <button type="submit" class="btn btn-primary btn-flat" value="generate">Generate</button>&nbsp&nbsp&nbsp&nbsp
  365.                                 <button type="reset" class="btn btn-danger btn-flat" value="reset">Reset</button>
  366.                             </div>
  367.                         </div>
  368.                         <!-- /.form-group -->
  369.                     </form>
  370.                 </div>
  371.             </div>
  372.         </div>
  373.     </div>
  374.     <?php }?>
  375.  
  376.     <?php if (!empty($jumlahOperasi) && $inputDurasiOperasi === "true") {
  377.         // Solusi
  378.         // Generate Algoritma SA
  379.  
  380.         if (!empty($cekRuangaOperasi)) {
  381.             die;
  382.         }
  383.     ?>
  384.  
  385.         <!-- Hasil Perhitungan -->
  386.         <div class="row">
  387.             <div class="col-xs-12">
  388.                 <div class="box">
  389.                     <div class="box-header">
  390.                         <h3 class="box-title">Hasil Perhitungan</h3>
  391.                     </div>
  392.                     <!-- /.box-header -->
  393.                     <div class="box-body table-responsive">
  394.                         <b>
  395.                             <p>Total Iterasi
  396.                                 <?= $generate['totalIterasi'] ?>
  397.                             </p>
  398.                         </b>
  399.                         <table id="dtb_jadwal_ruangan" class="table table-bordered table-striped">
  400.                             <thead>
  401.                                 <tr>
  402.                                     <th>No</th>
  403.                                     <th>Nama Ruangan</th>
  404.                                     <th>Nama Operasi</th>
  405.                                     <th>Tanggal Masuk</th>
  406.                                     <th>Jam Masuk</th>
  407.                                     <th>Jam Keluar</th>
  408.                                     <th>Durasi</th>
  409.                                     <th>Total Harga</th>
  410.                                 </tr>
  411.                             </thead>
  412.                             <tbody>
  413.                                 <?php
  414.                                 $no = 1;
  415.                                     foreach ($generate['result'] as $dataTableJadwal) {
  416.                                         if (!empty($dataTableJadwal['tanggal_masuk']) && !empty($dataTableJadwal['jam_masuk']) && !empty($dataTableJadwal['jam_keluar'])) {
  417.                                         ?>
  418.  
  419.                                     <tr>
  420.                                         <td>
  421.                                             <?php echo $no ?> </td>
  422.                                         <td>
  423.                                             <?php echo $dataTableJadwal['nama_ruangan'] ?> </td>
  424.                                         <td>
  425.                                             <?php echo $dataTableJadwal['operasi'] ?> </td>
  426.                                         <td>
  427.                                             <?php echo $dataTableJadwal['tanggal_masuk'] ?> </td>
  428.                                         <td>
  429.                                             <?php echo $dataTableJadwal['jam_masuk'] ?> </td>
  430.                                         <td>
  431.                                             <?php echo $dataTableJadwal['jam_keluar'] ?> </td>
  432.                                         <td>
  433.                                             <?php echo getTimeDiff($dataTableJadwal['jam_masuk'], $dataTableJadwal['jam_keluar']) ?> menit </td>
  434.                                         <td>
  435.                                             Rp <?php echo number_format($dataTableJadwal['total_harga'], 0); ?>
  436.                                         </td>
  437.                                     </tr>
  438.  
  439.                                     <?php
  440.                                         $no++;
  441.                                         }
  442.                                     }
  443.                             ?>
  444.                             </tbody>
  445.                         </table>
  446.                     </div>
  447.                     <div class="box-body">
  448.                         <!-- Form when user click process button -->
  449.                         <form id="input-proses" method="post" class="form-horizontal">
  450.                             <input type="hidden" name="jumlahOperasi" value="<?php echo $jumlahOperasi ?>">
  451.                             <input type="hidden" name="inputDurasiOperasi" value="true">
  452.                             <input type="hidden" name="max_iterasi" value="<?php echo $maxIterasi ?>">
  453.                             <input type="hidden" name="suhu_sekarang" value="<?php echo $suhuSekarang ?>">
  454.                             <input type="hidden" name="generate" value="generate">
  455.                             <input type="hidden" name="dataJson" value='<?= json_encode($generate["result"]) ?>'>
  456.                             <input type="hidden" name="dataPost" value='<?= json_encode($_POST) ?>'>
  457.  
  458.                             <div class="form-group">
  459.                                 <label for="tags" class="control-label col-xs-12 ">&nbsp;</label>
  460.                                 <div class="col-xs-12">
  461.                                     <button type="submit" class="btn btn-primary btn-flat">Proses</button>
  462.                                 </div>
  463.                             </div>
  464.                             <!-- /.form-group -->
  465.                         </form>
  466.                     </div>
  467.                     <!-- /.box-body -->
  468.                 </div>
  469.                 <!-- /.box -->
  470.             </div>
  471.         </div>
  472.  
  473.         <?php } ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement