LAMPIRAN KODE PROGRAM 1. proses.php

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;

  @$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; }

  } 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

  $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); }