• Tidak ada hasil yang ditemukan

Angga, C. & Munir, R. 2012. Pengembangan Algoritma Greedy Untuk Optimalisasi Penataan Peti Kemas Pada Kapal Pengangkut.

Basuki, A. & Nana. 2009. Grafik 3 Dimensi. Politeknik Elektronik Negeri Surabaya.

Boesch, F. 2013. Codeflow. (Online) http://codeflow.org/entries/2013/feb/02/why- you-should-use-webgl/#how-does-it-compare-to (diakses 25 Agustus 2014).

Chandrass, B. 2012. Metode Pencarian Heuristik. (Online)

http://www.slideshare.net/ceezabramovic/metode-pencarian-heuristik (diakses 25 Agustus 2014).

Demeuse, J. 2013. Introduction To Polygonal Modeling And Three.js. (Online). http://coding.smashingmagazine.com/2013/09/17/introduction-to-polygonal- modeling-and-three-js/ (diakses 25 Agustus 2014).

Diggins, C. 2011. The Status of WebGL in Relation to 3 Development. WebGL

Libraries. (Online)

http://area.autodesk.com/blogs/chris/the_status_of_webgl_in_relation_to_3d_ga me_development (diakses 25 Agustus 2014).

Fulton, S & Fulton, J. 2011. HTML5 Canvas Native Interactivity and Animation for

the Web. pp. 1-2. O’Reilly Media: United States of America.

Gunadi, K., Julistiono, I.K. & Haryanto, B. 2003. Optimasi pola penyusunan barang

dalam ruang tiga dimensi menggunakan metode genetic algorithms. Jurnal

Informatika Vol. 4, No.1, Mei 2003: 15-19.

Hambali, A. 2011. Sistem Alokasi Penyimpanan Barang Pada Gudang.

Hendry. 2011. Penerapan teknologi WebGL pada virtual aquarium berbasis tiga dimensi (3D). Jurnal Sistem Komputer – Vol.1, No.2, Oktober 2011, ISSN: 2087-4685.

Hudjudli, A.P. 2012. Grafika Komputer. (Online)

http://mahasiswa.ung.ac.id/531412102/home/2012/10/29/grafika_komputer.html (diakses 10 November 2013).

Internet Explorer Dev Center. 2013. Basic 3D graphics using Three.js. (Online) http://msdn.microsoft.com/en-us/library/ie/dn479430%28v=vs.85%29.aspx (24 Agustus 2014).

Kamus Besar Bahasa Indonesia (KBBI). 2012. Gudang. (Online) http://kbbi.web.id/ (6

April 2014).

Kamus Besar Bahasa Indonesia (KBBI). 2012. Visualisasi. (Online)

51

Kusumadewi, P. & Purnomo, H. 2005. Penyelesaian Masalah Optimasi dengan Teknik-Teknik Heuristik. Graha Ilmu:Yogyakarta.

Lim, R., Gunadi, K. & Gang, O.W. 2004. Optimasi pengambilan dan penataan ulang

barang di gudang dengan penerapan stack menggunakan metode genetic

algorithm. Jurnal. Universitas Kristen Petra. Jurnal Informatika Vol. 5, No.1,

Mei 2004: 39-52.

Mufarricha, A. 2010. Penyelesaian traveling salesman problem (TSP) dengan

menggunakan algoritma hill climbing. Skripsi. Universitas Negeri Malang.

Oxford Dictionaries Language Matters. 2014. Warehouse. (Online)

http://www.oxforddictionaries.com/definition/english/warehouse (24 Agustus 2014).

Putmawa, F. & Santosa, B. 2011. Pengembangan Algoritma Bee Swarm Optimization

Untuk Penyelesaian Container Stowage Problem.

Suhardiman, D., Kaunang, S.T.G., Sengkey, R & Rumagit, A.M. 2012. Pembuatan

simulasi pergerakan objek 3D (tiga dimensi) menggunakan OpenGL.

Wicaksono, G.W. 2012. WebGL. (Online) http://galih.staff.umm.ac.id/2012/12/webgl/

(10 Oktober 2013).

Yahya, B.N. 2013. Metode Penataan Palet di Gudang. (Online)

http://www.ali.web.id/detail_article.php?id=89# (25 Agustus 2014).

Zakas, N.C. 2012. Professional Javascript for Web Developers. Third Edition. pp.1. John Wiley & Sons, Inc., Indianapolis, Indiana.

Zakiah, A. 2012. Penyelesaian masalah 8 puzzle dengan algoritma hill climbing

steepest ascent loglist heuristik berbasis java. Seminar Nasional Teknologi

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; @$y_sekarang = $y_nol_ruangan;

53 @$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);

$panjang_ruangan_min = -$row_ruangan ['panjang'] / 2; $tinggi_ruangan_min = -$row_ruangan ['tinggi'] / 2;

$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

return 0; }

55 } 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());

return Array($x, $y, $z); break;

} 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) {

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

57 $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());

return Array($x, $y, $z); }

Dokumen terkait