• Tidak ada hasil yang ditemukan

LAMPIRAN KODE PROGRAM 1. proses.php

N/A
N/A
Protected

Academic year: 2019

Membagikan "LAMPIRAN KODE PROGRAM 1. proses.php"

Copied!
6
0
0

Teks penuh

(1)

LAMPIRAN KODE PROGRAM

1. proses.php

function rotasi_operator($array_nilai) { $temp = 0;

$counter_index = 0;

for ($i = 0; $i < count($array_nilai); $i++) { $array_nilai_temp = $array_nilai;

if (($counter_index) < count($array_nilai) - 1) { $temp = $array_nilai_temp[$counter_index];

$array_nilai_temp[$counter_index] = $array_nilai_temp[$counter_index + 1];

$array_nilai_temp[$counter_index + 1] = $temp; $hasil[] = $array_nilai_temp;

} else {

$temp = $array_nilai_temp[0];

$array_nilai_temp[0] = $array_nilai_temp[count($array_nilai) - 1];

$array_nilai_temp[count($array_nilai) - 1] = $temp; $hasil[] = $array_nilai_temp;

}

$counter_index++; }

return $hasil; }

2. database.php

function konfigurasi_item($id_user) {

//kosongkan tabel_temp_barang, karena isinya harus dinamis mysql_query("DELETE FROM tabel_temp_barang WHERE

id_user=$id_user") or die("Kosongkan tabel_temp_barang : " . mysql_error());

mysql_query("DELETE FROM tabel_barang_sisa WHERE

id_user=$id_user") or die("Kosongkan tabel_temp_barang : " . mysql_error());

// mysql_query(" TRUNCATE TABLE tabel_temp_barang") or die("Kosongkan Temp : " . mysql_error());

//untuk ruangan

$q_ruangan = mysql_query("SELECT * FROM tabel_ukuran_ruangan WHERE id_user=$id_user") or die(mysql_error());

$row_ruangan = mysql_fetch_array($q_ruangan); $panjang_ruangan = $row_ruangan ['panjang']; $tinggi_ruangan = $row_ruangan ['tinggi']; $lebar_ruangan = $row_ruangan ['lebar']; $x_nol_ruangan = -$panjang_ruangan / 2; $y_nol_ruangan = -$tinggi_ruangan / 2; $z_nol_ruangan = -$lebar_ruangan / 2; $x_max_ruangan = $panjang_ruangan / 2; $y_max_ruangan = $tinggi_ruangan / 2; $z_max_ruangan = $lebar_ruangan / 2; @$x_sekarang = $x_nol_ruangan;

(2)

@$z_sekarang = $z_nol_ruangan; $hc = hill_climbing($id_user); // print_r($hc);

for ($i = 0; $i < count($hc); $i++) { $id = $hc[$i][0];

$q_kotak = mysql_query("SELECT * FROM tabel_barang WHERE id_barang=$id") or die("tampil tabel_barang : " .

mysql_error());

while ($row = mysql_fetch_array($q_kotak)) { $id_barang = $row['id_barang'];

$panjang = $row['panjang']; $tinggi = $row['tinggi']; $lebar = $row['lebar']; $berat = $row['berat'];

$id_kotak = $row['id_barang']; //informasi barang saat ini yang diproses

$informasi_barang = pengaturan_barang($id_user, $panjang, $tinggi, $lebar, $berat, $id_kotak);

if ($informasi_barang != 0) { @$kotak[] = array(

id => $id_barang,

sp_size => $panjang . " x " . $tinggi . " x " . $lebar, sp_size_1 => $panjang,

sp_size_2 => $tinggi, sp_size_3 => $lebar,

x_origin_in_bin => $informasi_barang[0], y_origin_in_bin => $informasi_barang[1], z_origin_in_bin => $informasi_barang[2], constraints => 0

); } }

}

// echo json_encode(@$kotak); return json_encode(@$kotak); }

function konfigurasi_ruangan($id_user) {

$q_ruangan = mysql_query("SELECT * FROM tabel_ukuran_ruangan WHERE id_user=$id_user") or die(mysql_error());

$row_ruangan = mysql_fetch_array($q_ruangan); return json_encode(array($row_ruangan['panjang'], $row_ruangan['tinggi'], $row_ruangan['lebar'])); }

function pengaturan_barang($id_user, $panjang, $tinggi, $lebar, $berat, $id_kotak) {

$q_ruangan = mysql_query("SELECT * FROM tabel_ukuran_ruangan WHERE id_user=$id_user") or die(mysql_error());

$row_ruangan = mysql_fetch_array($q_ruangan);

(3)

$lebar_ruangan_min = -$row_ruangan ['lebar'] / 2; $panjang_ruangan_max = $row_ruangan ['panjang'] / 2; $tinggi_ruangan_max = $row_ruangan ['tinggi'] / 2; $lebar_ruangan_max = $row_ruangan ['lebar'] / 2;

if ($panjang <= $panjang_ruangan_max - ($panjang_ruangan_min) && $tinggi <= ($tinggi_ruangan_max - ($tinggi_ruangan_min)) && $lebar <= ($lebar_ruangan_max - ($lebar_ruangan_min))) {

$q_cek_temp = mysql_query("SELECT * FROM tabel_temp_barang WHERE id_user=$id_user") or die("cek temp kotak : " .

mysql_error());

if (mysql_num_rows($q_cek_temp) > 0) {

$hasil = keatas($id_user, $panjang, $tinggi, $lebar, $berat, $panjang_ruangan_max, $tinggi_ruangan_max, $lebar_ruangan_max, $id_kotak);

if (is_array($hasil)) {

$x = $hasil[0]; $y = $hasil[1]; $z = $hasil[2];

} else {

$hasil = kesamping($id_user, $panjang, $tinggi, $lebar, $berat, $panjang_ruangan_max, $tinggi_ruangan_max, $lebar_ruangan_max, $id_kotak);

if (is_array($hasil)) { $x = $hasil[0]; $y = $hasil[1]; $z = $hasil[2]; } else {

$hasil = kedalam($id_user, $panjang, $tinggi, $lebar, $berat, $panjang_ruangan_max, $tinggi_ruangan_max, $lebar_ruangan_max, $id_kotak);

if (is_array($hasil)) { $x = $hasil[0]; $y = $hasil[1]; $z = $hasil[2]; } else {

//jika sudah penuh

mysql_query("INSERT INTO tabel_barang_sisa(id_barang, id_user, panjang, tinggi, lebar, berat) VALUES($id_kotak, $id_user, $panjang, $tinggi, $lebar, $berat)") or die("Error Insert Kotak sisa :" . mysql_error());

// break; }

} } } else {

$hasil = kotak_pertama($id_user, $panjang, $tinggi, $lebar, $panjang_ruangan_min, $tinggi_ruangan_min, $lebar_ruangan_min, $berat, $id_kotak);

$x = $hasil[0]; $y = $hasil[1]; $z = $hasil[2]; }

if (isset($x) && isset($y) && isset($z)) { return Array($x, $y, $z);

} else {

//kembalikan 0 untuk dicek, agara tidak ditambah pada array posisi kotak

(4)

} else {

mysql_query("INSERT INTO tabel_barang_sisa(id_user, panjang, tinggi, lebar, berat) VALUES($id_user, $panjang, $tinggi, $lebar, $berat)") or die("Error Insert Kotak sisa :" . mysql_error()); }

} /*

* panjang <= panjang sebelumnya * lebar <= lebar sebelumnya * total panjang <= l

* total tinggi <= tinggi ruang * total lebar <= lebar ruang *

* update atas sebelumnya F * y tambah

* x tetap * z tetap */

function keatas($id_user, $panjang, $tinggi, $lebar, $berat, $panjang_ruangan_max, $tinggi_ruangan_max, $lebar_ruangan_max, $id_kotak) {

$q_cek_atas = mysql_query("SELECT * FROM tabel_temp_barang WHERE id_user=$id_user AND $panjang<=panjang AND $lebar<=lebar AND $berat<=max_tumpukan AND atas='T' ORDER BY id_barang ASC") or die("Tampil 1: " . mysql_error());

while ($temp = mysql_fetch_array($q_cek_atas)) { $id_temp = $temp['id_barang'];

$x_temp = $temp['x']; $y_temp = $temp['y']; $z_temp = $temp['z'];

$panjang_temp = $temp['panjang']; $tinggi_temp = $temp['tinggi']; $lebar_temp = $temp['lebar']; $berat_temp = $temp['berat']; $index_x = $temp['index_x']; $index_y = $temp['index_y']; $index_z = $temp['index_z'];

$max_tumpukan = $berat_temp - $berat;

if ($y_temp + $tinggi_temp / 2 + $tinggi <= $tinggi_ruangan_max) {

$x = $x_temp;

$y = $y_temp + $tinggi_temp / 2 + $tinggi / 2;

$z = $z_temp;

mysql_query("UPDATE tabel_temp_barang SET atas='F' WHEREid_barang=$id_temp") or die("Update 1" . mysql_error());

mysql_query("INSERT INTO tabel_temp_barang

(id_user, id_barang, x,y,z,panjang,tinggi,lebar, berat, atas,kanan,dalam, index_x, index_y, index_z, max_tumpukan) VALUES($id_user, $id_kotak, $x,$y,$z, $panjang,$tinggi,$lebar, $berat, 'T', 'F', 'F', $index_x, $index_y+1, $index_z,$max_tumpukan)") or die("Insert 1" . mysql_error());

(5)

} else { continue; }

} }

function kesamping($id_user, $panjang, $tinggi, $lebar, $berat, $panjang_ruangan_max, $tinggi_ruangan_max, $lebar_ruangan_max, $id_kotak) {

// $q_cek_atas = mysql_query("SELECT * FROM tabel_temp_barang WHERE id_user=$id_user AND $panjang<=panjang AND $lebar<=lebar AND $berat<=max_tumpukan

//AND kanan='T' ORDER BY id_barang ASC ") or die("Tampil 1: " . mysql_error()); $q_cek_atas = mysql_query("SELECT * FROM

tabel_temp_barang WHERE id_user=$id_user AND $lebar<=lebar AND $berat<=max_tumpukan AND kanan='T' ORDER BY id_barang ASC ") or die("Tampil 1: " . mysql_error());

while ($temp = mysql_fetch_array($q_cek_atas)) { $id_temp = $temp['id_barang'];

$x_temp = $temp['x']; $y_temp = $temp['y']; $z_temp = $temp['z'];

$panjang_temp = $temp['panjang']; $tinggi_temp = $temp['tinggi']; $lebar_temp = $temp['lebar']; $index_x = $temp['index_x']; $index_y = $temp['index_y']; $index_z = $temp['index_z']; $max_tumpukan = $berat;

if ($x_temp + $panjang_temp / 2 + $panjang <= $panjang_ruangan_max) {

$x = $x_temp + $panjang_temp / 2 + $panjang / 2; $y = $y_temp - $tinggi_temp / 2 + $tinggi / 2; $z = $z_temp - $lebar_temp / 2 + $lebar / 2;

mysql_query("UPDATE tabel_temp_barang SET kanan='F' WHERE id_barang=$id_temp") or die("Update 1" . mysql_error()); mysql_query("INSERT INTO tabel_temp_barang (id_user, id_barang,x,y,z,panjang,tinggi,lebar, berat,

atas,kanan,dalam, index_x, index_y, index_z, max_tumpukan) VALUES($id_user, $id_kotak,$x,$y,$z, $panjang,$tinggi,$lebar, $berat, 'T', 'T', 'T', $index_x+1, $index_y, $index_z,

$max_tumpukan)") or die("Insert 1" . mysql_error()); return Array($x, $y, $z);

} else { continue; }

} }

function kedalam($id_user, $panjang, $tinggi, $lebar, $berat, $panjang_ruangan_max, $tinggi_ruangan_max, $lebar_ruangan_max, $id_kotak) {

(6)

$berat<=max_tumpukan AND dalam='T' ORDER BY index_x ASC, id_barang ASC LIMIT 1") or die("Tampil 1: " . mysql_error()); while ($temp = mysql_fetch_array($q_cek_atas)) {

$id_temp = $temp['id_barang']; $x_temp = $temp['x'];

$y_temp = $temp['y']; $z_temp = $temp['z'];

$panjang_temp = $temp['panjang']; $tinggi_temp = $temp['tinggi']; $lebar_temp = $temp['lebar']; $index_x = $temp['index_x']; $index_y = $temp['index_y']; $index_z = $temp['index_z']; $max_tumpukan = $berat;

if ($z_temp + $lebar_temp / 2 + $lebar <= $lebar_ruangan_max && $panjang <=$panjang_temp) {

$x = $x_temp - $panjang_temp / 2 + $panjang / 2; $y = $y_temp - $tinggi_temp / 2 + $tinggi / 2; $z = $z_temp + $lebar_temp / 2 + $lebar / 2;

mysql_query("UPDATE tabel_temp_barang SET dalam='F' WHERE id_barang=$id_temp") or die("Update 1" . mysql_error()); mysql_query("INSERT INTO tabel_temp_barang (id_user, id_barang, x,y,z,panjang,tinggi,lebar, berat,

atas,kanan,dalam, index_x, index_y, index_z, max_tumpukan) VALUES($id_user, $id_kotak,$x,$y,$z, $panjang,$tinggi,$lebar, $berat, 'T', 'F', 'T', $index_x+1, $index_y, $index_z+1, $max_tumpukan)") or die("Insert 1" . mysql_error()); return Array($x, $y, $z);

} else { continue; }

} }

//jika tabel_temp_barang masih kosong

function kotak_pertama($id_user, $panjang, $tinggi, $lebar, $panjang_ruangan_min, $tinggi_ruangan_min, $lebar_ruangan_min, $berat, $id_kotak) {

$x = $panjang_ruangan_min + $panjang / 2; $y = $tinggi_ruangan_min + $tinggi / 2; $z = $lebar_ruangan_min + $lebar / 2; $max_tumpukan = $berat;

mysql_query("INSERT INTO tabel_temp_barang (id_user, id_barang, x,y,z,panjang,tinggi,lebar, berat, atas,kanan,dalam, index_x, index_y, index_z, max_tumpukan) VALUES($id_user, $id_kotak, $x,$y,$z, $panjang,$tinggi,$lebar, $berat, 'T', 'T', 'T', 0,0,0, $max_tumpukan)") or die("Insert 1" . mysql_error());

Referensi

Dokumen terkait