load->model('M_pelayanan');
$this->load->helper('url');
$this->load->library('form_validation');
if ($this->session->userdata('status') != "login") {
redirect(base_url("Auth"));
}
}
public function index()
{
$data['data'] = $this->M_pelayanan->list_data()->result();
$data['alpha'] = $this->M_pelayanan->alpha()->row();
$this->load->view('ramal', $data);
}
public function alpha()
{
$alpha = $this->input->post('alpha');
$data = array(
'alpha' => $alpha
);
$where = array(
'id_alpha' => '1'
);
$this->session->set_flashdata('success', 'Anda Berhasil Mengubah alpha');
$this->M_pelayanan->update($where, $data, 'alpha');
redirect('ramal');
}
public function ramal_pengunjung($id_pelayanan)
{
$data['pelayanan'] = $this->M_pelayanan->get_detail($id_pelayanan)->row();
$awal = $this->db->query('SELECT tanggal FROM pengunjung order by tanggal asc')->row();
$akhir = $this->db->query('SELECT tanggal FROM pengunjung order by tanggal desc')->row();
$starter = 0;
$lb = 0;
$aktual = [];
$bulan = [];
// generate list bulan dan jumlah data aktual, dari awal hingga akhir kunjungan pada setiap pelayanan
for ($t = date("Y", strtotime($awal->tanggal)); $t <= date("Y", strtotime($akhir->tanggal)); $t++) {
if ($starter == 0) {
$lb = date("m", strtotime($awal->tanggal));
} else {
$lb = 1;
}
for ($b = $lb; $b <= 13; $b++) {
if ($b > 12) {
$starter = 1;
break;
} else {
$s_bln = sprintf("%02d", $b);
$s_thn = sprintf("%02d", $t);
$detail = $this->db->query("
SELECT pl.nama as nama_pelayanan, YEAR(tanggal) as tahun, MONTH(tanggal) as bulan, COUNT(p.id) as jumlah
FROM pengunjung p
JOIN pelayanan pl ON p.id_pelayanan= pl.id
WHERE p.id_pelayanan = '$id_pelayanan'
AND MONTH(p.tanggal) = '$s_bln'
AND YEAR(p.tanggal) = '$s_thn'
GROUP BY MONTH(p.tanggal), YEAR(p.tanggal)
")->row();
if ($t == date("Y", strtotime($akhir->tanggal)) && $b > date("m", strtotime($akhir->tanggal))) {
break;
} else {
if ($detail) {
$aktual[] = $detail->jumlah;
$bulan[] = sprintf("%02d", $b) . "-" . $t;
}
// else {
// //echo sprintf("%02d", $b)."-".$t."==".""."|"."0"."
";
// $aktual[]= 0;
// $bulan[] = sprintf("%02d",$b)." - ".$t;
// }
}
}
}
}
$data['alpha'] = $this->M_pelayanan->alpha()->row();
$alpha = $data['alpha']->alpha;
// mengkonversi nilai array menjadi number / int
$aktualInt = array_map('intval', $aktual);
// mengambil nilai awal pada data aktual
$nilaiAwal = array_slice($aktual, 0, 1);
$nilaiAwalInt = array_map('intval', $nilaiAwal);
//SMOOTHING 1
$s1[] = isset($nilaiAwalInt[0]) ? $nilaiAwalInt[0] : 0;
$s1Int = array_map('intval', $s1);
for ($i = 1; $i < count($aktualInt) + 1; $i++) {
$s1Int[$i] = round($alpha * $aktualInt[$i - 1] + (1 - $alpha) * $s1Int[$i - 1], 2);
}
//SMOOTHING 2
$s2[] = isset($nilaiAwalInt[0]) ? $nilaiAwalInt[0] : 0;
$s2Int = array_map('intval', $s2);
for ($i = 1; $i < count($s1Int); $i++) {
$s2Int[$i] = round($alpha * $s1Int[$i] + (1 - $alpha) * $s2Int[$i - 1], 2);
}
//SMOOTHING 3
$s3[] = isset($nilaiAwalInt[0]) ? $nilaiAwalInt[0] : 0;
$s3Int = array_map('intval', $s2);
for ($i = 1; $i < count($s2Int); $i++) {
$s3Int[$i] = round($alpha * $s2Int[$i] + (1 - $alpha) * $s3Int[$i - 1], 2);
}
//AT
$at = array();
$atInt = array_map('intval', $at);
for ($i = 1; $i < count($s1Int); $i++) {
$atInt[$i] = round(3 * $s1Int[$i] - 3 * $s2Int[$i] + $s3Int[$i], 2);
}
//BT
$bt = array();
$btInt = array_map('intval', $bt);
for ($i = 1; $i < count($s1Int); $i++) {
$btInt[$i] = round($alpha / 2 * pow(1 - $alpha, 2) * ((6 - 5 * $alpha) * $s1Int[$i] - (10 - 8 * $alpha) * $s2Int[$i] + (4 - 3 * $alpha) * $s3Int[$i]), 2);
}
//CT
$ct = array();
$ctInt = array_map('intval', $ct);
for ($i = 1; $i < count($s1Int); $i++) {
$ctInt[$i] = round(pow($alpha, 2) / pow(1 - $alpha, 2) * ($s1Int[$i] - 2 * $s2Int[$i] + $s3Int[$i]), 2);
}
//FT+M
$ft = array();
$ftInt = array_map('intval', $ft);
for ($i = 1; $i < count($atInt) + 1; $i++) {
$ftInt[$i] = round($atInt[$i] + $btInt[$i] * 1 + 1 / 2 * $ctInt[$i] * pow(1, 2), 0);
}
//at-ft
$selisih = array();
$selisihInt = array_map('intval', $selisih);
for ($i = 1; $i < count($aktualInt); $i++) {
$selisihInt[$i] = $aktualInt[$i] - $ftInt[$i];
}
//(at-ft)2
$selisihPangkat = array();
$selisihPangkatInt = array_map('intval', $selisihPangkat);
for ($i = 1; $i < count($selisihInt) + 1; $i++) {
$selisihPangkatInt[$i] = pow($selisihInt[$i], 2);
}
//abs((at-ft)/at)*100
$selisihSeratus = array();
$selisihSeratusInt = array_map('intval', $selisihSeratus);
for ($i = 1; $i < count($selisihInt) + 1; $i++) {
$selisihSeratusInt[$i] = abs($selisihInt[$i] / $aktualInt[$i]);
}
$jumlah = count(array_slice($aktualInt, 1));
$MAD = array_sum(array_map("abs", $selisihInt));
$MSE = array_sum($selisihPangkatInt);
$MAPE = round(array_sum($selisihSeratusInt), 3);
// echo "
"; // print_r($data['pengunjungBulan']); // echo ""; // echo "
"; // print_r($data['aktual']); // echo ""; // echo "
"; // print_r($data['ft']); // echo ""; // echo json_encode($data['bulan']); $this->load->view('ramalPengunjung', $data); } public function ramal_pengunjungAll($id_pelayanan) { $data['pelayanan'] = $this->M_pelayanan->get_detail($id_pelayanan)->row(); $awal = $this->db->query('SELECT tanggal FROM pengunjung order by tanggal asc')->row(); $akhir = $this->db->query('SELECT tanggal FROM pengunjung order by tanggal desc')->row(); $starter = 0; $lb = 0; $aktual = []; $bulan = []; for ($t = date("Y", strtotime($awal->tanggal)); $t <= date("Y", strtotime($akhir->tanggal)); $t++) { if ($starter == 0) { $lb = date("m", strtotime($awal->tanggal)); } else { $lb = 1; } for ($b = $lb; $b <= 13; $b++) { if ($b > 12) { $starter = 1; break; } else { $s_bln = sprintf("%02d", $b); $s_thn = sprintf("%02d", $t); $detail = $this->db->query(" SELECT pl.nama as nama_pelayanan, YEAR(tanggal) as tahun, MONTH(tanggal) as bulan, COUNT(p.id) as jumlah FROM pengunjung p JOIN pelayanan pl ON p.id_pelayanan= pl.id WHERE p.id_pelayanan = '$id_pelayanan' AND MONTH(p.tanggal) = '$s_bln' AND YEAR(p.tanggal) = '$s_thn' GROUP BY MONTH(p.tanggal), YEAR(p.tanggal) ")->row(); if ($t == date("Y", strtotime($akhir->tanggal)) && $b > date("m", strtotime($akhir->tanggal))) { break; } else { if ($detail) { $aktual[] = $detail->jumlah; $bulan[] = sprintf("%02d", $b) . " - " . $t; } // else { // //echo sprintf("%02d", $b)."-".$t."==".""."|"."0"."
"; // print_r($data['pengunjungBulan']); // echo ""; // echo "
"; // print_r($data['aktual']); // echo ""; // echo "
"; // print_r($data['ft']); // echo ""; // echo json_encode($data['bulan']); $this->load->view('ramalPengunjungAll', $data); } }