Anda di halaman 1dari 99

MEMAKSIMALKAN KEUNTUNGAN DALAM EKSPEDISI

PENGIRIMAN BARANG MENGGUNAKAN GREEDY


KNAPSACK DAN ALGORITMA DIJKSTRA

SKRIPSI

Oleh:

Achmad Ferry Ferdiansyah

11170910000034

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH


JAKARTA

1443 H/ 2021 M
PERNYATAAN PERSETUJUAN PUBLIKASI SKIPRSI
UNTUK KEPENTINGAN AKADEMIS

Sebagai sivitas akademik UIN Syarif Hidayatullah Jakarta, saya yang bertanda
tangan di bawah ini:

Nama : Achmad Ferry Ferdiansyah

NIM : 11170910000034

Program Studi : Teknik Informatika

Fakultas : Sains dan Teknologi

Jenis Karya : Skripsi

Demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada


UIN Syarif Hidayatullah Jakarta Hak Bebas Royalti Noneksklusif (Non-exclusive
Royalti Free Right) atas karya ilmiah yang berjudul Memaksimalkan
Keuntungan dalam Ekspedisi Pengiriman Barang Menggunakan Greedy
Knapsack dan Algoritma Djikstra beserta perangkat yang ada (jika diperlukan).
Dengan Hak Bebas Royalti Noneksklusif ini UIN Syarif Hidayatullah Jakarta
berhak menyimpan, mengalihmedia/formatkan, mengelola dalam bentuk pangkalan
data (database), merawat, dan mempublikasikan tugas akhir saya selama tetap
mencantumkan nama saya sebagai penulis / pencipta dan sebagai pemilik Hak
Cipta.

Demikian pernyataan ini saya buat dengan sebenarnya.

Dibuat Jakarta Barat

Pada Tanggal: 25 Januari 2021


Yang Menyatakan

(Achmad Ferry Ferdiansyah)

v
KATA PENGANTAR

Assalamu’alaikum Wr.Wb
Dengan menyebut nama Allah SWT yang Maha Pengasih lagi Maha
Penyayang, puji dan syukur penulis panjatkan kehadirat-Nya, yang telah
melimpahkan rahmat dan hidayat-Nya. Shalawat serta salam penulis panjatkan
kepada Nabi Muhammad SAW sehingga penulis bisa menyelesaikan Skripsi ini
yang berjudul “Memaksimalkan Keuntungan dalam Ekspedisi Pengiriman
Barang Menggunakan Greedy Knapsack dan Algoritma Djikstra”. Skripsi ini
disusun sebagai syarat untuk memperoleh gelar sarjana Komputer pada program
studi Teknik Informatika di Universitas Islam Negeri Syarif Hidayatullah Jakarta.
Penyusunan skrispi ini dapat terselesaikan atas kerjasama dan bantuan dari
berbagai pihak. Tidak lupa penyusun mengucapkan terimakasih kepada:
1. Prof. Dr. Hj. Amany Burhanuddin Umar Lubis, Lc., M.A Rektor
Universitas Islam Negeri Syarif Hidayatullah Jakarta.
2. Ir. Nashrul Hakiem, S.Si., M.T., Ph.D selaku Dekan Fakultas Sains dan
Teknologi Universitas Islam Negeri Syarif Hidayatullah Jakarta.
3. Dr. Imam M. Shofi, MT, selaku Ketua Program Studi Teknik Informatika
Fakultas Sains dan Teknologi UIN Syarif Hidayatullah Jakarta.
4. Ibu Anif Hanifa Setianingrum, M.Si selaku pembimbing I dan Ibu Arini,
S.T., M.T. selaku pembimbing II, terimakasih atas pengarahan dan saran
selama penulis mengerjakan skripsi.
5. Kedua orang tua dan adik, yang selalu memberikan dukungan, doa, dan
motivasi kepada penulis sehingga penulis dapat menyelesaikan skripsi ini.
6. Serta teman-teman terdekat yang selalu memberikan semangat dan selalu
membantu selama pembuatan skripsi.
Penulis menyadari bahwa proposal skripsi ini masih jauh dari kata sempurna.
Semoga skripsi ini dapat bermanfaat bagi penulis dan pembaca, dan rekan-rekan
mahasiswa dari Universitas Islam Negeri Syarif Hidayatullah Jakarta.
Jakarta, Januari 2022

Penulis

vi
ABSTRAK

Achmad Ferry Ferdiansyah, Memaksimalkan Keuntungan dalam Ekspedisi


Pengiriman Barang Menggunakan Greedy Knapsack dan Algoritma Dijkstra, di
bawah bimbingan Anif Hanifa Setianingrum M.Si, Arini, S.T., M.T.

Jasa pengiriman barang saat ini seperti rantai bisnis yang tidak dapat
dipisahkan dalam perkembangan bisnis online saat ini. Kegiatan dalam proses
pengiriman barang yaitu penginputan, pemuatan barang, dan pengiriman barang.
Banyak faktor permasalahan yang mempengaruhi pendapatan dalam pengiriman
barang, diantaranya dalam proses muat barang sering terjadi tidak optimalnya
jumlah barang yang dimuat masing masing kurir sebelum pengantaran dan
terhambatnya proses pengiriman barang dikarenakan tidak mengetahui jalan dan
alur pengiriman yang tidak terarah. Oleh karena itu dibutuhkan sistem untuk
mengoptimalkan proses muat barang dan meningkatkan efektifitas dalam
pengantaran pada ekspedisi pengiriman barang. Greedy knapsack adalah salah satu
metode pengoptimalan dalam proses penyelesaian knapsack, dalam hal ini greedy
knapsack digunakan dalam proses pengoptimalan muat barang. Serta Algoritma
dijkstra adalah metode yang digunakan untuk masalah pencarian rute terpendek,
dalam hal ini digunakan sebagai penentuan rute untuk permasalahan pada
pengantaran barang. Dengan perolehan pendapatan awal dalam uji coba yang
dilakukan sebesar Rp 250.000,00 dengan 20 alamat penerima pada sistem lama
mendapat hasil pendapatan sebesar Rp 112.300,00 dengan jarak tempuh pengiriman
250,27 Km sedangkan pada sistem usulan mendapatkan hasil pendapatan sebesar
Rp 135.250,00 dengan jarak tempuh pengiriman 196,884 Km. Hasil menunjukan
bahwa sistem usulan dapat membantu memaksimalkan keuntungan yang diperoleh
pada ekspedisi pengiriman barang.

Kata kunci: Greedy Knapsack, Algoritma Dijkstra, Ekspedisi Pengiriman


Barang.

vii
ABSTRACT

Achmad Ferry Ferdiansyah, Maximizing Profits in Freight Forwarding Using


Greedy Knapsack and Dijkstra's Algorithm, under the guidance of Anif Hanifa
Setianingrum M.Si, Arini, S.T., M.T.

Today's freight forwarding services are like a business chain that cannot be
separated in today's online business development. Activities in the process of
shipping goods, namely inputting, loading goods, and shipping goods. There are
many problem factors that affect revenue in the delivery of goods, including in the
process of loading goods, it often occurs that the number of goods loaded by each
courier is not optimal before delivery and the delay in the delivery of goods is due
to not knowing the path and the delivery flow that is not directed. Therefore, a
system is needed to optimize the process of loading goods and increase
effectiveness in delivery on freight forwarders. Greedy knapsack is one of the
optimization methods in the process of completing knapsack, in this case the greedy
knapsack is used in the optimization process of loading goods. And the dijkstra
algorithm is the method used for the problem of finding the shortest route, in this
case it is used as a route determination for problems in the delivery of goods. With
the initial revenue acquisition in the trial conducted of Rp. 250,000.00 with 20
recipient addresses on the old system, the income was Rp. 112.300.00 with a
delivery distance of 250.27 Km while in the proposed system, the income result is
Rp. 135,250.00 with a shipping distance of 196.884 Km. The results show that the
proposed system can help maximize the profits obtained on freight forwarding
expeditions.

Keywords: Greedy Knapsack, Dijkstra's Algorithm, Delivery Service.

viii
DAFTAR ISI

PERNYATAAN ORISINALITAS...................................................................................iv
PERNYATAAN PERSETUJUAN PUBLIKASI SKIPRSI UNTUK
KEPENTINGAN AKADEMIS ........................................................................................ v
KATA PENGANTAR .......................................................................................................vi
ABSTRAK ........................................................................................................................vii
ABSTRACT ..................................................................................................................... viii
DAFTAR ISI......................................................................................................................ix
DAFTAR TABEL ............................................................................................................ xii
DAFTAR GAMBAR ....................................................................................................... xiii
BAB I PENDAHULUAN .................................................................................................. 1
1.1 Latar Belakang .................................................................................................. 1
1.2 Rumusan Masalah ............................................................................................ 3
1.3 Tujuan Penelitian .............................................................................................. 3
1.4 Batasan Masalah ............................................................................................... 3
1.5 Manfaat Penelitian ............................................................................................ 4
1.6 Sistematika Penulisan ....................................................................................... 4
BAB II LANDASAN TEORI ........................................................................................... 6
1.1 Knapsack Problem ............................................................................................. 6
1.1.1 Pengertian Knapsack Problem .................................................................. 6
1.1.2 Jenis Knapsack Problems .......................................................................... 6
1.2 Algoritma Greedy .............................................................................................. 6
1.3 Greedy Knapsack................................................................................................ 7
1.4 Algoritma Dijkstra ........................................................................................... 10
1.5 Metode Pengembangan Perangkat Lunak (RAD) ....................................... 11
1.6 PHP (Hypertext Preprocessor) ........................................................................ 12
1.7 HTML (HyperText Markup Language) ......................................................... 12
1.8 JavaScript ........................................................................................................ 12
1.9 SQL (Structured Query Language)................................................................. 12
1.10 Google Maps API ............................................................................................. 13
BAB III METODE PENELITIAN ................................................................................ 14
3.1 Metode Pengumpulan Data ............................................................................ 14
3.1.1 Studi Pustaka ........................................................................................... 14

ix
3.1.2 Wawancara .............................................................................................. 15
3.2 Metode Penelitian............................................................................................ 15
3.2.1 Requirement Planning ............................................................................. 16
3.2.2 Workshop Design ..................................................................................... 16
3.2.3 Implementasi ........................................................................................... 16
3.3 Kerangka Berfikir ................................................................................................. 17
BAB IV ANALISIS DAN PERANCANGAN SISTEM ............................................... 18
4.1 Requirement Planning ..................................................................................... 18
4.1.1 Analisis Sistem Berjalan ................................................................................ 18
4.1.2 Identifikasi Masalah ............................................................................... 22
4.1.3 Usulan Sistem Baru........................................................................................ 22
4.2 Workshop Design ............................................................................................. 24
4.2.1 Identifikasi Penginputan Sistem ............................................................ 24
4.2.2 Perancangan Greedy Knapsack ............................................................ 31
4.2.3. Perancangan Algoritma Dijkstra ........................................................... 39
4.2.4 Penggunaan Library API Maps .............................................................. 42
4.2.5 Flowchart Model Sistem ......................................................................... 46
4.2.6 Perancangan Unified Modeling Language (UML) ...................................... 48
4.2.7 Perancangan Desain Basis Data (Database) ................................................. 55
4.2.8 Perancangan User Interface .......................................................................... 59
4.2.9 Pengkodean (Coding) ..................................................................................... 62
4.3 Implementasi ................................................................................................... 69
4.3.1 Pengujian (Testing) ........................................................................................ 69
BAB V HASIL DAN PEMBAHASAN .......................................................................... 73
5.1 Hasil Implementasi ............................................................................................... 73
5.2 Grafik ..................................................................................................................... 79
BAB VI KESIMPULAN DAN SARAN ........................................................................ 84
6.1 Kesimpulan ............................................................................................................ 84
6.2 Saran ...................................................................................................................... 84
DAFTAR PUSTAKA ...................................................................................................... 85
LAMPIRAN..................................................................................................................... 87
LAMPIRAN 1 DOKUMENTASI WAWANCARA ................................................. 87

x
xi
DAFTAR TABEL

Tabel 2.1 Perbandingan Algoritma Greedy Knapsack dan Dynamic Programming ......... 7
Tabel 2.2 Perbandingan Algoritma Dijkstra, Bellmand-Ford dan Dynamic Programming
.......................................................................................................................................... 10
Tabel 3.1 Studi Literatur .................................................................................................. 14
Tabel 4.2 Tabel Data Alamat Penerima ........................................................................... 24
Tabel 4.3 Tabel Daftar Pengiriman dengan Sistem Lama ................................................ 29
Tabel 4.4 Tabel Daftar Pengiriman dengan Sistem Baru ................................................. 29
Tabel 4.5 Daftar Estimasi Pengiriman Jarak dan Waktu Sistem Lama ............................ 30
Tabel 4.6 Daftar Estimasi Pengiriman Jarak dan Waktu Sistem Baru ............................. 30
Tabel 4.7 Data 10 Alamat Penerima ................................................................................ 31
Tabel 4.8 Tabel Bobot dan Profit. .................................................................................... 32
Tabel 4.9 Tabel Nilai Densitas / Dentity .......................................................................... 33
Tabel 4.10 Tabel Greedy by Profit ................................................................................... 34
Tabel 4.11 Tabel Greedy by Weight ................................................................................. 35
Tabel 4.12 Tabel Greedy by Density / Densitas ............................................................... 36
Tabel 4.13 Tabel Knapsack 0-1 ........................................................................................ 36
Tabel 4.14 Hasil Jarak Warehouse ke Alamat Penerima ................................................. 40
Tabel 4.15 Hasil Jarak lokasi 3 ke Alamat Penerima Lainnya ......................................... 40
Tabel 4.16 Hasil Jarak lokasi 1 ke Alamat Penerima Lainnya ......................................... 40
Tabel 4.17 Hasil Jarak lokasi 2 ke Alamat Penerima Lainnya ........................................ 40
Tabel 4.18 Identifikasi Use Case Diagram ....................................................................... 48
Tabel 4.19 Use Case Scenario input transaksi .................................................................. 49
Tabel 4.20 Use Case Scenario Detail Pengiriman ............................................................ 50
Tabel 4.21 Use Case Scenario rute pengiriman................................................................ 50
Tabel 4.22 Use Case Scenario menghitung keuntungan .................................................. 51
Tabel 4.23 Use Case Scenario mendownload data pengiriman........................................ 51
Tabel 4.24 Use Case Scenario melihat riwayat transaksi ................................................. 52
Tabel 4.25 Tabel Entity .................................................................................................... 56
Tabel 4.26 Tabel Identifikasi Relationship ...................................................................... 56
Tabel 4.27 Tabel Identifikasi Attribute ............................................................................ 57
Tabel 4.28 Hasil Black Box Testing ................................................................................. 70
Tabel 5.29 Hasil Implementasi Daftar Pengiriman .......................................................... 73

xii
DAFTAR GAMBAR

Gambar 3.1 Tahapan Model RAD. (Sumber:(Kendall & Kendall, 2003)) .................... 16
Gambar 3.2 Kerangka Berfikir ....................................................................................... 17
Gambar 4.3 Proses Wawancara ...................................................................................... 19
Gambar 4.4 Alur Proses Kegiatan Pengiriman Barang Sistem Lama ............................. 20
Gambar 4.5 Skema Proses kegiatan pengiriman pada Sistem Lama .............................. 20
Gambar 4.6 Alur Proses kegiatan Pengiriman pada Sistem Baru ................................... 23
Gambar 4.7 Skema Proses kegiatan pengiriman pada Sistem Baru ................................ 23
Gambar 4.8 Daftar Pengiriman Ke-1 Sistem lama .......................................................... 28
Gambar 4.9 Daftar Pengiriman Ke-2 Sistem lama .......................................................... 29
Gambar 4.10 Daftar Pengiriman Ke-3 Sistem lama ........................................................ 29
Gambar 4.11 Hasil Perhitungan Jarak dan Waktu Sistem Lama ..................................... 30
Gambar 4.12 Flowchart Greedy Knapsack ..................................................................... 37
Gambar 4.13 Flowchart Algoritma Dijkstra ................................................................... 41
Gambar 4.14 Gambar Contoh Direction API .................................................................. 42
Gambar 4.15 Gambar Contoh Maps JavaScript API ...................................................... 44
Gambar 4.16 Gambar Contoh Geocoding API ................................................................ 46
Gambar 4.17 Gambar Contoh Distance Matrix API ....................................................... 46
Gambar 4.18 Flowchart ................................................................................................... 47
Gambar 4.19 Use Case Diagram ..................................................................................... 49
Gambar 4.20 Activity Diagram Input Transaksi .............................................................. 53
Gambar 4.21 Activity Diagram Detail Pengiriman .......................................................... 53
Gambar 4.22 Activity Diagram Rute Pengiriman ............................................................ 54
Gambar 4.23 Activity Diagram Menghitung Keuntungan ............................................... 54
Gambar 4.24 Activity Diagram Mendownload Data Pengiriman .................................... 55
Gambar 4.25 Activity Diagram Melihat Riwayat Transaksi ............................................ 55
Gambar 4.26 Tampilan Desain Basis Data...................................................................... 59
Gambar 4.27 Tampilan menu User Interface .................................................................. 60
Gambar 4.28 Halaman awal user interface ..................................................................... 60
Gambar 4.29 Halaman Daftar Detail Pengiriman ........................................................... 61
Gambar 4.30 Halaman Pengeluaran dan Pendapatan pada Detail Pengiriman ............... 61
Gambar 4.31 Halaman Rute Pengiriman ......................................................................... 62
Gambar 4.32 Halaman Maps pada Rute Pengiriman ...................................................... 62
Gambar 4.33 Halaman Data Transaksi ............................................................................ 62
Gambar 5.34 Hasil greedy knapsack .............................................................................. 73
Gambar 5.35 Hasil runtime greedy knapsack................................................................. 74
Gambar 5.36 Maps Hasil Penentuan Rute Pengirima Ke-1 ........................................... 74
Gambar 5.37 Hasil Runtime Algoritma Djikstra Pengiriman Ke-1 ................................ 75
Gambar 5.38 Maps Hasil Penentuan Rute Pengirima Ke-2 ............................................ 76
Gambar 5.39 Hasil Runtime Algoritma Djikstra Pengiriman Ke-2................................. 76
Gambar 5.40 Maps Hasil Penentuan Rute Pengirima Ke-3 ............................................ 77
Gambar 5.41 Hasil Runtime Algoritma Djikstra Pengiriman Ke-3................................. 77
Gambar 5.42 Maps Hasil Penentuan Rute Pengirima Ke-4 ............................................ 78
Gambar 5.43 Hasil Runtime Algoritma Djikstra Pengiriman Ke-4................................. 78

xiii
Gambar 5.44 Perbandingan Jumlah Barang Pengiriman ................................................. 79
Gambar 5.45 Perbandingan Bobot Pengiriman ............................................................... 80
Gambar 5.46 Perbandingan Jarak Tempuh Pengiriman .................................................. 80
Gambar 5.47 Perbandingan Waktu Tempuh Pengiriman ................................................ 81
Gambar 5.48 Gambar Perbandingan Penggunaan Bahan Bakar Minyak ........................ 81
Gambar 5.49 Gambar Perbandingan Biaya Bahan Bakar Minyak .................................. 82
Gambar 5.50 Gambar Perbandingan Pendapatan ............................................................ 83

xiv
BAB I
PENDAHULUAN
1.1 Latar Belakang
Saat ini perkembangan teknologi semakin canggih, terutama dalam bidang
pengiriman. Saat ini bisnis pada bidang pengiriman barang tidak lagi menjadi hal
asing, karena para pelaku bisnis ini sudah banyak dalam hal proses transaksi melalui
internet. Banyak pengusaha yang tertarik dalam bisnis pada bidang pengiriman
barang, karena hasil dari pertumbuhan online shop, sehingga jasa pengiriman
barang saat ini seperti rantai bisnis yang tidak dapat dipisahkan.

Berdasarkan hasil wawancara dan observasi pada salah satu ekspedisi


pengiriman barang, kegiatan dalam proses pengiriman barang yaitu penginputan,
pemuatan barang, dan pengiriman barang. Keterbatasan kurir serta banyaknya paket
yang harus segera dikirimkan merupakan permasalahan utama pada ekspedisi
pengiriman barang yang mempengaruhi tingkat pendapatan.

Banyak faktor yang mempengaruhi perhitungan keuntungan pada ekspedisi


pengiriman barang seperti halnya biaya pengiriman pada banyaknya paket yang
diantar, oleh karena itu perusahaan dibidang pengiriman memberikan pelayanan
secara cepat, efektif dan efisien untuk memenuhi kepuasan pelanggan. Tetapi sering
sekali banyaknya kesalahan-kesalahan yang dihadapi sehingga mengurangi hasil
pendapatan, salah satunya seperti pengiriman barang yang tidak tepat
waktu(Vikaliana, 2018). Itu terjadi karena faktor tidak optimalnya proses memuat
barang sebelum diantar atau waktu proses pengiriman yang kurang cepat.

Seperti yang diuraikan pada penelitian yang dilakukan oleh (Agus


Ambarwari, 2016) dimana dalam menyelesaikan permasalahan dalam proses muat
barang adalah dengan menggunakan strategi algoritma greedy. Selain itu dalam
proses muat barang dibutuhkan waktu yang secepat mungkin, seperti halnya yang
dijelaskan pada penelitian (Awasthi & Sharma, 2020) menyatakan bahwa dalam
memecahkan persoalan knapsack algoritma greedy membutuhkan waktu lebih
sedikit dibandingkan dynamic programming.

1
Dari hasil penelitian tersebut, menyatakan bahwa algoritma greedy adalah
metode salah satu alternatif dalam mengatasi masalah pada proses muat barang.
Dengan optimalnya proses muat barang dapat membuat jumlah pengantaran paket
semakin lebih baik dan meningkatkan hasil pada saat pengiriman barang.

Faktor lainnya dalam proses pengiriman barang yang mempengaruhi


pendapatan adalah banyaknya hasil paket yang berhasil diantarkan. banyaknya
permasalahan pada pengiriman paket yang berhasil dikirimkan dihari yang sama
yaitu, proses pengantaran yang tidak terarah. Hal ini menyebabkan adanya paket
yang tidak bisa diantar dihari yang sama karena perbedaan rute dalam pengiriman
paket atau kesalahan tujuan pada alamat pengiriman, daerah tujuan berada di
pelosok sehingga sulit dijangkau atau tidak bisa ditempuh dihari yang sama dengan
pengiriman lainnya sehingga ditunda menyebabkan terhambatnya pengiriman
barang(Vikaliana, 2018).

Hal itu menunjukan penentuan jalur pengiriman akan dapat mengatasi


permasalahan dalam proses pengiriman. Oleh sebab itu seperti yang dinyatakan
dalam penelitian (Budihartono, 2016) salah satu metode yang tepat dalam
penentuan jalur pengiriman adalah dengan menggunakan algoritma dijkstra. Serta
dalam proses penentuan rute dibutuhkan waktu secepat mungkin. Oleh karena itu
seperti yang dijelaskan pada penelitian (Abusalim et al., 2020) menunjukkan bahwa
dalam hal optimasi jalur terpendek algoritma dijkstra jauh lebih cepat daripada
algoritma bellman ford.

Dalam hasil penelitian tersebut menunjukan bahwa algoritma dijkstra adalah


metode yang tepat dalam mengatasi proses pengiriman barang dengan menentukan
rute-rute terpendek dalam pengiriman barang. Dengan adanya petunjuk arah yang
menuntun kurir dalam mengirim barang akan mempermudah dan mempercepat
pengiriman barang. Hal ini juga dapat mengurang biaya pengeluaran pada
penggunaan bahan bakar minyak sehingga biaya pembelian bahan bakar minyak
lebih efisien, sehingga mempengaruhi nilai optimal pada perhitungan pendapatan
jasa pengiriman. Namun pada hasil penelitian tersebut tidak menjelaskan mengenai
pengeluaran biaya bahan bakar minyak.

2
Walaupun dengan banyaknya jumlah paket yang berhasil diantarkan itu juga
akan dihitung sebagai pendapatan kurir sehingga akan mempengaruhi nilai
pendapatan pada jasa pengiriman.

Dalam manajemen risiko juga banyak hal-hal yang akan mengurangi hasil
pendapatan dalam proses pengiriman barang, seperti halnya pengeluaran pada
pengembangan sistem(Vikaliana, 2018). Dalam pengembangan sistem pastinya ada
biaya yang harus dikeluarkan seperti halnya maintance system, pengembangan
sistem ataupun biaya-biaya penggunaan API.

Sehingga perhitungan pendapatan yang optimal didapatkan dari banyaknya


paket yang diantar, serta pengeluaran biaya dalam penggunaan bahan bakar,
pendapatan kurir dalam pengiriman barang dan biaya-biaya pengembangan sistem.

Oleh karena itu dalam mengatasi permasalahan utama yang mempengaruhi


tingkat pendapatan pada ekspedisi pengiriman barang, penulis mengusulkan
penggunaan metode greedy knapsack dan algoritma Dijkstra dalam proses
pengoptimalan pendapatan pada ekspedisi pengiriman barang. Untuk itu disusunlah
penelitian ini dengan judul “Memaksimalkan Keuntungan dalam Ekspedisi
Pengiriman Barang Menggunakan Greedy Knapsack dan Algoritma Dijkstra”.

1.2 Rumusan Masalah


Rumusan masalah dalam penelitian ini berdasarkan pada identifikasi masalah
dan latar belakang adalah bagaimana membangun sistem untuk memaksimalkan
pendapatan pada ekspedisi pengiriman barang menggunakan Greedy Knapsack dan
Algoritma Dijkstra?
1.3 Tujuan Penelitian
Tujuan dari penelitian ini sesuai dengan latar belakang dan rumusan masalah,
yaitu menghasilkan rancangan sistem untuk memaksimalkan pendapatan untuk
ekspedisi pengiriman barang dengan menerapkan Greedy Knapsack dan Algoritma
Dijkstra.
1.4 Batasan Masalah
Batasan Masalah dari penelitian ini yaitu:
1. Data mengenai detail outlet retail pengiriman barang AnterAja berdasarkan
hasil wawancara dengan narasumber salah satu kepala kurir ekspedisi.

3
2. Tools yang digunakan:
1. Google Maps API untuk proses konversi alamat menjadi koordinat dan
mendapatkan rute dengan jarak terdekat.
2. Visual Studio Code dalam pembuatan sistem berbasis web.

1.5 Manfaat Penelitian


Manfaat yang dapat diambil dari penelitian berikut ini:
1. Manfaat Bagi Penulis
Mengimplementasikan kemampuan dalam memahami perkembangan-
perkembangan sistem yang dibutuhkan saat ini.
2. Manfaat Bagi Pengguna
Membantu dalam proses pengiriman barang, meningkatkan kecepatan
dalam pengiriman barang dan mengetahui keuntungan yang diperoleh dalam
pengiriman barang.
3. Manfaat Bagi Universitas
Mengetahui kemampuan mahasiswa dalam mengimplementasikan
kemampuannya yang telah diperoleh dalam perkuliahan.
4. Manfaat Bagi Mahasiswa atau Pelajar
Menjadi referensi dalam pembelajaran untuk membangun sistem optimasi
menggunakan greedy knapsack dan algoritma dijskra.

1.6 Sistematika Penulisan


Sistematika penulisan memberikan gambaran dan kerangka mengenai pokok
bahasan di setiap bab dalam penelitian ini. Berikut adalah penjelasan sistematika
penulisan:
BAB I PENDAHULUAN
Pada bab ini berisi uraian tentang latar belakang, rumusan masalah, batasan
masalah, tujuan, manfaat, serta sistematika penulisan.
BAB II LANDASAN TEORI
Pada bab ini akan diuraikan dasar-dasar teori yang akan digunakan dalam
permasalahan penelitian ini.
BAB III METODOLOGI PENELITIAN
Bab ini membahas tentang metodologi yang digunakan yaitu metode
pengumpulan data, metode pengembangan sistem, dan kerangka berpikir.

4
BAB IV ANALISIS DAN PERANCANGAN
Dalam bab ini akan membahas Analisa kebutuhan sistem, use case dan
design user interface aplikasi.
BAB V HASIL DAN PEMBAHASAN
Dalam bab ini akan diuraikan implementasi perancangan pada penelitian ini
dan membahas pengujian aplikasi.
BAB VI KESIMPULAN DAN SARAN
Dalam bab ini akan disimpulkan dari hasil dan pembahasan serta saran
untuk penelitian selanjutnya.

5
BAB II
LANDASAN TEORI

1.1 Knapsack Problem


1.1.1 Pengertian Knapsack Problem
Knapsack problem atau rucksack problem adalah masalah optimasi
kombinatorial(Ammar, 2019). Knapsack problem merupakan masalah
maksimasi untuk pilihan paling tepat dari barang-barang yang akan
dibawa dalam sebuah knapsack pada sebuah perjalanan.
1.1.2 Jenis Knapsack Problems
Terdapat beberapa variasi Knapsack problem:
• 0/1 Knapsack problem
Sebuah objek ditentukan untuk dimasukan ke dalam knapsack
atau tidak.
• Fractional Knapsack problem
Sebuah objek yang dibawa dapat berupa pecahan dari objek
tersebut.Permasalahan ini menjadi masuk akal apabila barang
yang tersedia dapat dibagi-bagi misalnya gula, tepung, dan
sebagainya(KW et al., 2010).
• Bounded Knapsack problem
Generalisasi 0/1 knapsack problem dimana jumlah objek yang
tersedia terbatas.
• Unbounded Knapsack problem
Setiap objek tersedia lebih dari 1 unit, jumlahnya tidak terbatas.
1.2 Algoritma Greedy
Algoritma greedy digunakan sebagai penyelesaian dari permasalahan optimasi.
Algoritma greedy merupakan solusi pada banyak pilihan yang dieksplorasi, pada
setiap langkahnya terdapat keputusan terbaik untuk menentukan pilihan(Devita &
Wibawa, 2020).

6
1.3 Greedy Knapsack
Greedy knapsack merupakan penerapan algoritma greedy dalam pemecahan
persoalan 0/1 knapsack problem. Terdapat berbagai pendekatan dan strategi
untuk menyelesaikan persoalan ini menggunakan algoritma greedy, dan masing-
masing mempunyai efektifitas tersendiri, terutama dalam hal kemampuan untuk
mencapai solusi optimum.
Pada penelitian ini alasan penggunaan greedy knapsack ialah memiliki strategi
yang dapat memberikan satu rangkaian keputusan yang dapat mendekati solusi
optimum atau bahkan menghasilkan solusi optimum.
Berikut ini perbandingan greedy knapsack dan dynamic programming dalam
penyelesaiian persoalan 0/1 knapsack problem.
Tabel 2.1 Perbandingan Algoritma Greedy Knapsack dan Dynamic Programming
No Greedy Knapsack Dynamic Programming
Terdapat berbagai pendekatan Pada algoritma dynamic
dan strategi untuk programming untuk penyelesaian 1/0
1
menyelesaikan persoalan 0/1 knapsack problem ini, persoalan
knapsack problem. dibagi ke dalam tahap-tahap.
2 Membutuhkan waktu lebih cepat Membutuhkan waktu proses terlama
Hanya memiliki 1 rangkaian Dapat memiliki lebih dari satu
3 keputusan sebagai solusi rangkaian keputusan sebagai solusi
optimum optimum

Berikut ini implementasi strategi greedy knapsack dalam sebuah penyelesaian


1/0 knapsack problem, memiliki rumus variabel sebagai berikut :
i = Barang / Objek.
Wi = Bobot setiap barang / objek.
Pi = Profit setiap barang / objek.
M = Kapasitas knapsack (10000g).
Pi/Wi = Densitas / Density / Perbandingan Profit dan Bobot.
1 = Diambil / Dimasukan ke dalam knapsack.
0 = Tidak diambil / Dimasukan ke dalam knapsack.
Pada penyelesaian Knapsack Problem terdapat 3 strategi algoritma Greedy
yang dapat digunakan yaitu :

• Greedy By Weight

7
Pada setiap langkah di knapsack problem dipilih objek yang memiliki berat
teringan. Bertujuan memaksimalkan keuntungan dengan memasukan
sebanyak mungkin objek pada knapsack(Hapidah & Muhtarulloh, n.d.).
Tahapan yang dilakukan adalah memilah objek berdasarkan berat teringan
secara menurun. Kemudian diambil satu persatu yang dapat ditampung
knapsack sampai kapasitas knapsack penuh atau sudah tidak dapat
dimasukan kembali.
Dalam implementasinya greedy by weight akan dilakukan pengurutan data
berdasarkan bobot teringan sehingga menghasilkan Wi, Wi+1, Wn… .
Setelah pengurutan akan dimasukan kedalam sebuah knapsack.
Jika jumlah Wi <= M maka diberi nilai 1, Jika jumlah Wi > M diberi nilai
0.
Wi <= M, nilai = 1.
(Wi + Wi+1) <= M, nilai 1.
(Wi + Wi+1 + Wi+2) <= M, nilai 1.
(Wi + Wi+1 + Wi+2 +Wi+3) > M, nilai 0.
(Wi + Wi+1 + Wi+2 +Wn) > M, nilai 0.
Maka hasil barang yang akan dibawa dari sebuah knapsack M adalah Wi,
Wi+1, Wi+2.
• Greedy by profit
Pada setiap langkah di knapsack problem dipilih objek yang memiliki
keuntungan terbesar(Hapidah & Muhtarulloh, n.d.).
Tahapan yang dilakukan adalah memilah objek berdasarkan keuntungan
secara menurun. Kemudian diambil satu persatu sampai kapasitas
knapsack penuh atau sudah tidak dapat dimasukan kembali.
Dalam implementasinya greedy by profit akan dilakukan pengurutan data
berdasarkan keuntungan terbesar sehingga menghasilkan Wi, Wi+1,
Wn… . Setelah pengurutan akan dimasukan kedalam sebuah knapsack.
Jika jumlah Wi <= M maka diberi nilai 1, Jika jumlah Wi > M diberi nilai
0.
Wi <= M, nilai = 1.
(Wi + Wi+1) <= M, nilai 1.

8
(Wi + Wi+1 + Wi+2) > M, nilai 0.
(Wi + Wi+1 + Wn) > M, nilai 0.
Maka hasil barang yang akan dibawa dari sebuah knapsack M adalah Wi,
Wi+1.
• Greedy By Density
Pada setiap langkah di knapsack problem diisi dengan objek yang
𝑃𝑖
mempunyai dimana 𝑃𝑖 adalah keuntungan, 𝑤𝑖 adalah berat dan 𝑖 =
𝑤𝑖

(1,2,3, … , 𝑛). Langkah ini bertujuan memaksimalkan keuntungan dengan


𝑃𝑖
memilih objek yang memiliki (𝑑𝑒𝑛𝑠𝑖𝑡𝑦) terbesar(Hapidah &
𝑤𝑖

Muhtarulloh, n.d.).
𝑃𝑖
Tahapan yang dilakukan adalah memilah objek berdasarkan secara
𝑤𝑖

menurun. Kemudian diambil satu persatu sampai kapasitas knapsack


penuh atau sudah tidak dapat dimasukan kembali.
Dalam implementasinya greedy by density akan dilakukan pengurutan data
𝑃𝑖
berdasarkan densitas (𝑑𝑒𝑛𝑠𝑖𝑡𝑦) terbesar sehingga menghasilkan Wi,
𝑤𝑖

Wi+1, Wn… . Setelah pengurutan akan dimasukan kedalam sebuah


knapsack.
Jika jumlah Wi <= M maka diberi nilai 1, Jika jumlah Wi > M diberi nilai
0.
Wi <= M, nilai = 1.
(Wi + Wi+1) <= M, nilai 1.
(Wi + Wi+1 + Wi+2) > M, nilai 0.
(Wi + Wi+1 + Wi+3) <= M, nilai 1.
(Wi + Wi+1 + Wi+3 + Wn) > M, nilai 0.
Maka hasil barang yang akan dibawa dari sebuah knapsack M adalah Wi,
Wi+1, Wi+3.
Pada penelitian ini, perhitungan greedy knapsack dilakukan pada bab Analisis
dan Perancangan Sistem di sub bab Workshop Design dalam Perancangan Greedy
Knapsack. Perhitungan ini dilakukan menggunakan semua penyelesaian knapsack
problem untuk menentukan pengimplementasian yang akan digunakan dalam
penerapan sistem pada penelitian ini.

9
1.4 Algoritma Dijkstra
Algoritma Dijkstra digunakan untuk masalah pencarian rute terpendek pada
sebuah graph terarah(Cantona & Kasyfi, 2020). Graph terarah ialah graph yang
sisinya memiliki arah yang jelas. Jalur lintasan terpendek (Shortest Path)
merupakan sebuah lintasan yang diminimalisasikan bobot pada sebuah lintasan
graph(Harahap, 2019).
Pada penelitian ini alasan penggunaan algoritma dijkstra ialah pada algoritma
dijkstra proses dengan satu sumber dan mencari lintasan terpendek dari satu node
ke node lainnya tanpa mempertimbangkan bobot negatif.
Perbandingan algoritma dijkstra dengan algoritma bellmand ford dan dynamic
programming berikut ini.
Tabel 2.2 Perbandingan Algoritma Dijkstra, Bellmand-Ford dan Dynamic
Programming
No Algoritma Dijkstra Bellmand Ford Dynamic Programming
Hanya memiliki satu Hanya memiliki Setiap node dapat
1
sumber satu sumber menjadi sumber
Pada algoritma dijkstra Menangani proses Gagal jika ada bobot
2 tidak menangani proses bobot negatif negative
bobot negatif
Waktu proses lebih cepat Waktu proses Waktu proses lebih cepat
penentuan rute
3
terpendek lebih
lama

Dalam implementasi algoritma dijkstra memiliki nilai awal berupa hasil node awal
{0} dan node awal {1,2,3, .., n}.
Langkah pertama dalam proses dijkstra menentukan rute selanjutnya berdasarkan
jarak dari hasil node awal dengan node lainnya.
0 – 1 = 3 km
0 – 2 = 4 km
0 – 3 = 5 km
0 – n = x km
Hasil node {0, 1} dan node berikutnya {2, 3, .. n}.
Berikutnya untuk langkah selanjutnya dan seterusnya akan ditentukan berdasarkan
jarak terdekat dari hasil node dengan node lainnya.
1 – 2 = 5 km
1 – 3 = 1 km

10
1 – n = x km
Hasil node {0, 1, 3} dan node berikutnya {2, .. n}.
Maka hasil node akhir {0, 1, 3, 2, .. n}, sehingga urutan rutenya 0 – 1 – 3 – 2 – .. n.
Pada penelitian ini, perhitungan algoritma dijkstra dilakukan pada bab Analisis
dan perancangan sistem di sub bab Worksop Design pada Perancangan Algoritma
Dijkstra. Perhitungan ini dilakukan untuk penerapan implementasi sistem pada
penelitian ini.
1.5 Metode Pengembangan Perangkat Lunak (RAD)
Metode Pengembangan yang dipakai dalam penulisan ini adalah Rapid
Application Development (RAD). RAD adalah model proses pengembangan
perangkat lunak dengan waktu pengerjaan yang pendek(Kendall & Kendall, 2003).
Dalam metode pengembangan sistem tersusun menjadi beberapa bagian yaitu:
a. Tahap Rencana Kebutuhan (Requirement Planning)
Tahap Rencana Kebutuhan juga dilakukan pengumpulan dan analisis alat,
bahan, sumber daya, biaya dan data terkait dengan sistem yang diusulkan
melalui komunikasi antara pengguna dengan analis(Kendall & Kendall,
2003). Pada tahap ini penulis melakukan Analisis Persyaratan dan
Identifikasi Masalah
b. Tahap Desain Sistem (Workshop Design)
Tahap Desain Sistem secara rinci dengan membuat rancangan dengan use
case diagram, activity diagram, class diagram, sequence diagram,
collaboration diagram dan statechart diagram, perancangan input dan
output melalui komunikasi antara user dengan desainer sistem(Kendall &
Kendall, 2003). Pada tahap ini penulis membuat Perancangan Model
Sistem, Perancangan Desain Basis Data, Perancangan Greedy Knapsack,
Perancangan Algoritma Dijkstra, Perancangan UML, Perancangan User
Interface, dan Pengkodean.
c. Tahap Implementasi
Tahap Implementasi merupakan tugas dari programmer meneruskan dalam
bentuk coding melalui tinjauan pemrograman berdasarkan rancangan
sistem yang telah dibuat oleh desainer sistem(Kendall & Kendall, 2003).
Pada tahap ini penulis membuat Penerapan Greedy Knapsack dan
Algoritma Dijkstra pada sistem yang akan dibuat. Sistem tersebut akan

11
diuji menggunakan pengujian Black Box Testing untuk mengetahui apakah
sistem berjalan dengan baik.
1.6 PHP (Hypertext Preprocessor)
PHP atau Hypertext Preprocessor adalah salah satu bahasa pemrograman open
source yang dikhususkan dalam pengembangan web(Haryana, 2008). PHP dapat
disisipkan diantara skrip-skrip bahasa HTML dan bahasa server side lainnya,
karena itu PHP akan dieksekusi langsung oleh server.
Pada penelitian ini, alur proses penggunaan PHP dilakukan pada bab Analisis
dan perancangan sistem di sub bab Worksop Design pada Perancangan Pengkodean.
1.7 HTML (HyperText Markup Language)
HTML atau HyperText Markup Language adalah adalah bahasa markup yang
umum digunakan untuk membuat halaman web(Nugroho & Anwar, 2008).
Sebenarnya HTML bukanlah sebuah bahasa pemrograman. Apabila di tinjau dari
namanya, HTML merupakan bahasa markup atau penandaan terhadap sebuah
dokumen teks.
Pada penelitian ini, alur proses penggunaan HTML dilakukan pada bab
Analisis dan perancangan sistem di sub bab Worksop Design pada Perancangan
Pengkodean.
1.8 JavaScript
JavaScript adalah bahasa skrip yang dikembangkan oleh Netscape untuk
membuat dokumen yang dinamis(Nugroho & Anwar, 2008). JavaScript
menggunakan pola bahasa yang sama seperti Java. Bahasa ini terkenal karena
penggunaannya di website.
Pada penelitian ini, alur proses penggunaan JavaScript dilakukan pada bab
Analisis dan perancangan sistem di sub bab Worksop Design pada Perancangan
Pengkodean.
1.9 SQL (Structured Query Language)
Structured Query Language (SQL) adalah bahasa pemrograman khusus yang
dimanfaatkan dalam pengelolaan data pada Relatinal Database Management
System (RDBMS)(Setiyadi & Herlawati, 2019). SQL terdiri dari sintaks sederhana
dalam bentuk perintah-perintah yang disebut query. Perintah SQL adalah perintah
untuk mengolah, menampilkan dan memanipulasi data yang tersimpan dalam
sebuah database.
Pada penelitian ini, alur proses penggunaan SQL dilakukan pada bab Analisis
dan perancangan sistem di sub bab Worksop Design pada Perancangan Desain Basis
Data (Database).

12
1.10 Google Maps API
Google maps api adalah kumpulan library api untuk menggunakan fitur atau
memprogram maps. Pada penelitian ini digunakan library api google maps antara
lain:
1. Direction API
Direction API pada library api google maps merupakan sebuah API untuk
menerima penunjuk arah mengemudi. Ini digunakan pada saat menampilkan
rute diantara 2 titik pada sebuah maps. API ini saling keterkaitan dengan
library Maps JavaScript API. Library ini digunakan dalam menampilkan
sebuah maps.
2. Maps JavaScript API
Maps JavaScript API pada library api google maps merupakan sebuah API
untuk menampilkan sebuah peta atau maps dengan bentuk dan titik yang
kita inginkan pada halaman sebuah web. Library ini digunakan dalam
menampilkan sebuah maps.
3. Geocoding API
Geocoding API pada library api google maps merupakan sebuah API untuk
menerima hasil konversi dari sebuah alamat menjadi sebuah titik koordinat
berupa latitude dan longitude. Library ini digunakan pada fungsi konversi
alamat menjadi koordinat.
4. Distance Matrix API
Distance Matrix API pada library api google maps merupakan sebuah API
untuk menerima hasil jarak dan waktu tempuh pada 2 titik koordinat yang
ditentukan. Hasil tersebut berupa jarak meter dan waktu menit. Library ini
digunakan pada fungsi Distance Matrix

13
BAB III
METODE PENELITIAN

3.1 Metode Pengumpulan Data


3.1.1 Studi Pustaka

Peneliti melakukan pengumpulan data dengan menelaah beberapa


jurnal dan buku yang terkait dengan penelitian ini. Peneliti membuat tabel
mengenai isi pada jurnal tertentu yang lebih banyak terkait dengan penelitian
ini. Berikut tabel dari beberapa jurnal terkait.
Tabel 3.1 Studi Literatur
No Peneliti Tahun Judul Kelebihan Kekurangan
Agus 2016 Penerapan Permasalahan Solusi yang
Ambarw Algoritma knapsack dihasilkan tidak
ari, Nur Greedy pada diselesaikan selalu optimal
Witdi Permasalaha dengan algoritma untuk kasus-
Yanto n Untuk greedy kasus tertentu
1
Optimasi memberikan
Pengangkuta solusi optimal
n Peti Kemas dan memperoleh
keuntungan yang
lebih besar
Eko 2016 Penerapan Dalam proses Proses algoritma
Budihart Algoritma penentuan rute dijkstra
ono Dijkstra algoritma dilakukan
untuk Sistem dijkstra dengan waktu
Pendukung merupakan salah lebih cepat jika
Keputusan satu medote hanya
2 Bagi yang tepat dalam menggunakan 1
Penentuan menghasilkan sumbu
Jalur rute yang efektif
Terpendek dalam
Pengiriman pengiriman
Paket Barang barang
pada Travel.
San Lin 2019 Comparative Menghasilkan Metode greedy
Aung Study of solusi optimal bekerja secara
Dynamic dari penggunaan efisien untuk
3 Programmin kedua metode beberapa
g and Greedy greedy dan masalah.
Method dynamic Metode dynamic
programming selalu

14
menghasilkan
solusi optimal
tetapi kurang
efisien daripada
Algoritma
greedy.
Jitendra 2018 Investigation Mendapatkan Algoritma
Bahadur of Bellman– solusi optimal Bellman Ford
Singh, Ford dengan kedua menangani lebih
R.C.Trip Algorithm, metode dijkstra efektif
athi Dijkstra's dan bellman ford dengan sejumlah
4 Algorithm kecil node, dan
for suitability algoritma
of SPP dijkstra lebih
Jitendra efisien dengan
satu sumbu

3.1.2 Wawancara

Peneliti melakukan pengumpulan data dengan melakukan wawancara


dengan salah satu pakar dalam ekspedisi pengiriman. Pada wawancara ini
peneliti menanyakan hal hal apa saja yang mengenai ekspedisi pengiriman.

3.2 Metode Penelitian


Metode pada penelitian ini adalah Rapid Application Development (RAD).
Pada umumnya model RAD dijabarkan dalam 3 tahapan yaitu planning, design dan
implementasi(Kendall & Kendall, 2003). Pada penelitian ini alasan penggunaan
metode RAD adalah karena proses pembuatannya yang singkat dan kebutuhan
proses pembuatan yang tidak terlalu banyak.

15
Gambar 3.1 Tahapan Model RAD. (Sumber:(Kendall & Kendall, 2003))

3.2.1 Requirement Planning

Pada fase ini akan diidentifikasi dalam mempersiapkan tools,


batasan dan kebutuhan yang akan diperlukan dalam membangun proses
sistem ini.
3.2.2 Workshop Design

Setelah tahap perencanaan, tahap selanjutnya adalah membuat


workshop design agar sistem dapat diimplementasi dengan baik.

Terdapat fase dalam tahapan ini, antara lain :

1. Identifikasi Penginputan Sistem


2. Perancangan Greedy Knapsack
3. Perancangan Algoritma Dijkstra
4. Penggunaan Library API Maps
5. Flowchart Model Sistem
6. Perancangan UML (use case diagram)
7. Perancangan Desain Basis Data
8. Perancangan User Interface
9. Coding

3.2.3 Implementasi

16
Tahap implementasi dilakukan setelah program aplikasi selesai
dibuat kemudian dilakukan pengujian dengan menggunakan Black Box
Testing.

3.3 Kerangka Berfikir


Berikut ini kerangka berfikir pada penulisan ini.

Gambar 3.2 Kerangka Berfikir

17
BAB IV
ANALISIS DAN PERANCANGAN SISTEM

4.1 Requirement Planning


Tahap Requirement planning adalah tahap perencanaan kebutuhan system dengan
diawali dengan menganalisa sistem berjalan terlebih dahulu, mengidentifikasi
masalah dan kemudian merencanakan adanya solusi masalah dengan mengusulkan
system baru adapun tahapnya sebagai berikut
4.1.1 Analisis Sistem Berjalan
Tahap ini menganalisa sistem yang berjalan pada perusahaan distibusi tersebut,
untuk mengetahui adanya permasalahan dalam meningkatkan pendapatan dan
mengatur sistem distribusinya apabila ada penyempurnaan dalam usulan system
baru.
Pengumpulan data diperlukan dengan cara melakukan wawancara dan observasi.
Proses wawancara untuk mengetahui kebutuhan operasional dan kesulitan
dilapangan yang terjadi dan mengetahui alur kegiatan yang terjadi pada ekspedisi
pengiriman barang.
a. Wawancara
Wawancara dilakukan pada:
Hari / Tanggal : 24 September 2021
Tempat : AnterAja Stagging Store
Narasumber : Andriansyah (Kepala Tim Kurir)
Hasil wawancara dapat dilihat dilampiran ke 1.

18
Gambar 4.3 Proses Wawancara
b. Observasi
Dalam observasi ini peneliti melakukan pengamatan langsung di AnterAja
Stagging Store yang beralamat pada Rukan Sentra Niaga Blok G No 24
Green Lake City Duri Kosambi, Cengkareng Jakarta Barat DKI Jakarta.

Dalam hasil observasi alur kegiatan proses pengiriman barang pada sistem lama
ialah:
• Penginputan data
• Memilah barang yang dapat diangkut per kurir
• Membuat daftar pengiriman
• Melakukan pengiriman

19
Gambar 4.4 Alur Proses Kegiatan Pengiriman Barang Sistem Lama

Gambar 4.5 Skema Proses kegiatan pengiriman pada Sistem Lama


Berikut penjelasan skema proses kegiatan pengiriman yang
berlangsung:
1. Customer dating membawa barang yang akan dikirim
2. Barang diserahkan ke admin
3. Admin menginput barang ke dalam data pengiriman
4. Kurir memilah paket yang akan dia bawa

20
5. Paket yang dibawa akan diinput sebagai daftar pengiriman yang dia
bawa
6. Kurir akan mengirim paket sesuai daftar pengiriman

Dari skema diatas banyak faktor yang menghambat dan menjadi


masalah dalam proses pengiriman barang antara lain :
• Dalam proses memilah paket jumlah paket yang dibawa
ditentukan oleh kurir sehingga paket yang dibawa tidak sama
rata dan membuat bonus yang diterima berbeda beda setiap
kurir.
• Pada proses memilah barang waktu yang dibutuhkan menurut
Andriansyah “Biasanya untuk jam 8-10 kita memilah barang
yang akan diangkut dan mulai mengirim di jam 10”
(Andriansyah, 24 September 2021). Dari hasil tersebut
membuktikan bahwa waktu yang dibutuhkan dalam proses
memilah dan penginputan daftar pengiriman adalah 2 jam dan
proses pengiriman hanya 8 jam.
• Dalam sistem lama proses pengiriman barang sering terlambat
sehingga mengurangi jumlah pendapatan dikarenakan dalam
pengantaran rute yang dilalui berdasarkan ingatan kurir paket
mana yang terdekat sehingga waktu yang diperlukan tidak sama
setiap harinya dan sering terjadi keterlambatan pengiriman atau
pengiriman yang ditunda esok hari karena sudah melewati jam
kerja. Ini membuat hasil pendapatan yang diperoleh berkurang.
• Dari hasil wawancara biaya operasional kurir pada pengantaran
menurut Andriansyah “Rp 50.000, 00” (Andriansyah, 24
September 2021).
• Hasil pendapatan bonus yang diterima kurir dipengaruhi
banyak jumlah paket yang berhasil dikirimkan, dan bonus yang
didapatkan menurut Andriansyah “Rp 1000,00 per paket”
(Andriansyah, 24 September 2021).

21
4.1.2 Identifikasi Masalah
Hasil wawancara pada Analisa system yang berjalan peneliti menemukan
beberapa masalah dalam memuat barang dan mengirim barang ke alamat penerima
merupakan faktor yang mempengaruhi pendapatan dalam ekspedisi pengiriman
barang. Proses memilah barang yang memakan waktu 2 jam sangat mengurangi
waktu pengiriman dan permasalahan rute yang berbeda saat pengiriman juga
mengurangi jumlah barang yang bisa diantar.
Dalam proses sistem yang berjalan pada pengiriman barang jam kerja
menurut Andriansyah “Jam kerja mulai dari jam 8 pagi - 6 sore” (Andriansyah, 24
September 2021). Dan jadwal pengiriman menurut Andriansyah “Biasanya untuk
jam 8-10 kita memilah barang yang akan diangkut dan mulai mengirim di jam 10”
(Andriansyah, 24 September 2021) dan permasalahan yang sering terjadi menurut
Andriansyah “Kadang ada paket yang tidak bisa diantar dihari itu karena jarak yg
terlalu jauh berlawanan sehingga kita kirim keesokan harinya” (Andriansyah, 24
September 2021).
Dalam hal ini berikut masalah yang ditimbulkan, antara lain:
1. Waktu proses pemilahan dan pembuatan daftar pengiriman
berlangsung selama 2 jam.
2. Proses pengiriman tidak terarah sehingga sering terjadinya
keterlambatan pengiriman.
3. Dalam pembuatan daftar pengiriman terjadi masalah dalam jumlah
bobot dan banyak barang yang diangkut sering tidak seimbang
sehingga bonus per masing masing kurir tidak sama.
4.1.3 Usulan Sistem Baru
Setelah melakukan Analisis sistem berjalan kemudian menemukan beberapa
permasalahan pada tahap identifikasi masalah, kemudian penulis melakukan
perencanaan usulan sistem barunya.
Berikut ini proses kegiatan pengiriman barang menggunakan sistem baru:
• Penginputan Data
• Pemilihan Barang Menggunakan Greedy Knapsack
• Pembuatan Rute Menggunakan Algoritma Djikstra
• Melakukan Pengiriman

22
Gambar 4.6 Alur Proses kegiatan Pengiriman pada Sistem Baru

Gambar 4.7 Skema Proses kegiatan pengiriman pada Sistem Baru


Berikut penjelasan skema proses kegiatan pengiriman yang
berlangsung:
1. Customer dating membawa barang yang akan dikirim
2. Barang diserahkan ke admin
3. Admin menginput barang ke dalam data pengiriman
4. Admin membuat daftar pengiriman dan rute pengiriman secara sistem

23
5. Kurir akan mengirim paket sesuai daftar pengiriman

Pada sistem baru untuk mengatasi masalah-masalah yang ada pada


sistem lama antara lain:
• Pada sistem baru pemilahan paket tidak dilakukan secara manual
melainkan cukup dilakukan oleh sistem sehingga mempercepat
proses waktu memilah barang.
• Dalam proses pengantaran rute pengiriman akan ditentukan
berdasarkan sistem sehingga mempermudah kurir dalam melakukan
pengiriman dan mengefisiensikan penggunaan bahan bakar minyak
sehingga dapat menurunkan jumlah biaya operasional yang
digunakan. Dan dari rute ini terdapat estimasi waktu proses
pengiriman sehingga tidak ada barang yang terlambat dalam proses
pengantaran. Hal ini membuat meningkatnya pendapatan.

4.2 Workshop Design


Proses perancangan system diawali denga identifikasi Data Input kemudian
membuat model sistem Knapsack dan Djistra.
4.2.1 Identifikasi Penginputan Sistem
Berikut ini identifikasi penginputan pada sistem lama dan sistem usulan.
Tabel 4.2 Tabel Data Alamat Penerima
No Penerima Alamat Ongkir Berat (g)
Puri Beta 2, Kiara Payung
Boulevard No 10, KOTA
1 Abdilla 9000 0.6
TANGERANG, CILEDUG,
BANTEN, ID, 15154

24
Jalan Al Munawarah No.62
Abdul Rt1/Rw1 belendung, benda
2 Aziz (Kntrkn Hj yayah dkt tk 9000 0.55
Alfikri asudaisia), KOTA TANGERANG,
BENDA, BANTEN, ID, 15123
Jl. Kincir raya rt 10 rw 06 no 59,
Abdullah KOTA JAKARTA BARAT,
3 9000 0.3
akbar CENGKARENG, DKI
JAKARTA, ID, 11730
Perumahan Kresek Indah Blok
T21 Rt 003/012
4 aBe aL Cengkareng, Kota Administrasi 20000 2
Jakarta Barat, 11750
DKI Jakarta
PUMP CAR WASH, Sukabumi
Utara, Kec. Kb. Jeruk, Kota
Jakarta Barat, Daerah Khusus
Ibukota Jakarta, 11540 [Tokopedia
5 Abi 10000 1
Note: jl. salam raya]
Kebon Jeruk, Kota Administrasi
Jakarta Barat, 11540
DKI Jakarta
jl. palem xv blok b14 no.29
ackto uwungjaya, cibodas
6 10000 1
priyandi Cibodas, Kota Tangerang, 15138
Banten
Jl. Bukit Golf VIII QG2 No.20,
Cluster Garcia, Modernland,
7 Acun 9000 1.2
KOTA TANGERANG, PINANG
(PENANG), BANTEN, ID, 15142

25
Jln. Cempaka II Kavling DKI blok
Fardhani 94 no.22, Meruya Utara
8 Ramadha Jakarta Barat, Kota Administrasi 15000 1
na Jakarta Barat, 11620
DKI Jakarta
Jl duta buntu no 13a warung ayah
wawan,masuk gang H Siab
Ade
samping mushola al istiqomah,
9 giska 9000 1.3
KOTA JAKARTA BARAT,
arifin
KEBON JERUK, DKI
JAKARTA, ID, 11510
Jl. H. Shohib Abdul Aziz No. 05
Ade RT. 001/002 Sukaasih Tangerang,
10 Rachma KOTA TANGERANG, 18000 1.9
wati TANGERANG, BANTEN, ID,
15111
Green Lake City Cluster Australia,
Jalan Australia III, Petir, Cipondoh
11 Adel (Australia III No.33), KOTA 9000 0.9
TANGERANG, CIPONDOH,
BANTEN, ID, 15147
Komplek ciledug indah 2, Blok
Adelia E43 no 18, jl. Nirwana rt 008 rw
12 Widyorin 008, dekat masjid darussalam, 9000 1.3
i KOTA TANGERANG, KARANG
TENGAH, BANTEN, ID, 15158
jl murni dalam no 3D Rt.016/002,
Adhi kelurahan joglo, kecamatan
13 Hidayatul kembangan, Jakarta barat 11640 20000 2
lah (rumah depan dr tri mulyati)
Kembangan, Kota Administrasi

26
Jakarta Barat, 11640
DKI Jakarta
Jln HH no 51 Kebon Jeruk (Jalan
berada di samping Kantor
Kecamatan Kebon jeruk dan
Adhiguna
14 Polsek Kebon Jeruk) 10000 1
Wijaya
Kebon Jeruk, Kota Administrasi
Jakarta Barat, 11530
DKI Jakarta
Taman Semanan Indah Jalan
Dharma Sentosa blok E9 no 18 Rt
013 rw 012
15 Ris Na 30000 3
Kalideres, Kota Administrasi
Jakarta Barat, 11850
DKI Jakarta
Jln kali anyar IX RT 014 RW 01
no.18 ketua RT 014 mulyati,
16 Adi/Bule KOTA JAKARTA BARAT, 9000 0.15
TAMBORA, DKI JAKARTA, ID,
11310
Jl. Hanoman 4, Kec. Grogol
petamburan, Kota Jakarta Barat,
Daerah Khusus Ibukota Jakarta,
11460 [Tokopedia Note: jalan
Denny
17 hanoman 4 Blok E no 57 . kode 10000 1
Samjaya
pos 11460]
Grogol, Kota Administrasi Jakarta
Barat, 11460
DKI Jakarta
Kondominium Taman Anggrek
Adriana
18 Twr4-24A Jl. Let. Jen S.Parman 10000 1
Neysa
Kav. 21

27
Grogol, Kota Administrasi Jakarta
Barat, 11470
DKI Jakarta
Jl. Patrakomala No. 50
RT 02/RW 01
Adythia
Kel. Jatipulo
19 Soendjoj 10000 1
Palmerah, Kota Administrasi
o
Jakarta Barat, 11430
DKI Jakarta
Tri Jl. Keagungan No. 56, RT.002,
Karina RW.006 (pagar hitam, pencet
Agustina belnya aja)
20 15000 1
uli Taman Sari, Kota Administrasi
Aritonan Jakarta Barat, 11130
g DKI Jakarta
Dalam 20 alamat penerima diubah menjadi daftar pengiriman
dengan maksimum berat 10kg setiap pengiriman. Berikut hasil
daftar pengiriman sistem lama dan sistem baru.
Dalam perhitungan sistem lama tidak terdapat perhitungan jarak
sehingga dilakukan perhitungan jarak menggunakan jupyter
notebook menghasilkan daftar pengiriman sebagai berikut.

Gambar 4.8 Daftar Pengiriman Ke-1 Sistem lama

28
Gambar 4.9 Daftar Pengiriman Ke-2 Sistem lama

Gambar 4.10 Daftar Pengiriman Ke-3 Sistem lama


Pada perhitungan sistem baru dijelaskan secara lengkap pada Sub bab
implementasi pada Penerapan greedy knapsack.
Dari hasil tersebut di bentuklah daftar pengiriman sistem lama dan
sistem baru sebagai berikut.
Tabel 4.3 Tabel Daftar Pengiriman dengan Sistem Lama
Nama Bonus per Total Berat
Total Barang
Pengiriman Paket Barang
Pengiriman 1 8 8000 8.95
Pengiriman 2 5 5000 7.1
Pengiriman 3 6 6000 7.15

Tabel 4.4 Tabel Daftar Pengiriman dengan Sistem Baru


Nama Bonus per Total Berat
Total Barang
Pengiriman Paket Barang
Pengiriman 1 7 7000 7.05
Pengiriman 2 7 7000 9.29
Pengiriman 3 6 6000 6.85

Dari kedua tabel, tabel dengan sistem baru jumlah barang lebih
sebanding sehingga masing-masing kurir mendapat bonus yang imbang
dan dengan berat yang dibawa lebih ringan dibandingkan tabel dengan
sistem lama.
4. Berdasarkan daftar pengiriman diatas peneliti melakukan analisi
estimasi jarak dan waktu yang dibutuhkan dalam setiap pengiriman
dan dibandingkan dengan sistem baru yang akan dibuat.

29
Pada proses perhitungan jarak sistem lama, dilakukan rute secara urutan
daftar alamat penerima pada daftar pengiriman menghasilkan jarak dan
waktu sebagai berikut:

Gambar 4.11 Hasil Perhitungan Jarak dan Waktu Sistem Lama


Pada perhitungan sistem baru dijelaskan secara lengkap pada sub bab
Implementasi pada penerapan algoritma dijkstra. Berikut ini hasil
pengiriman jarak dan waktu sistem lama dan sistem baru.
Tabel 4.5 Daftar Estimasi Pengiriman Jarak dan Waktu Sistem Lama
Nama Pengiriman Total Jarak (Km) Total Waktu (m)
Pengiriman 1 139.43 261.96
Pengiriman 2 67.45 122.01
Pengiriman 3 43.39 108.05

Tabel 4.6 Daftar Estimasi Pengiriman Jarak dan Waktu Sistem Baru
Nama Pengiriman Total Jarak (Km) Total Waktu (m)
Pengiriman 1 70.76 153.23
Pengiriman 2 61.67 129.41

30
Pengiriman 3 64.45 126.49

Dari kedua tabel diatas perbandingan jarak tempuh dan waktu yang
dibutuhkan lebih cepat menggunakan sistem baru. Pada tabel sistem lama
jarak tempuh yang dilalui lebih besar dan waktu tempuhnya lebih lambat,
sehingga jika pengiriman banyak akan ada beberapa paket yang akan
dikirim dihari selanjutnya.
4.2.2 Perancangan Greedy Knapsack

1. Proses Perhitungan Manual


Pada perancangan greedy knapsack ini peneliti menggunakan data dummy
sebagai contoh. Terdapat 10 alamat penerima yang terdaftar dalam 1 hari
transaki dan maksimum barang yang dapat dibawa 10.000g, maka
diketahui:
Keterangan :
n = 10 Jumlah barang.
M = 10.000g Kapasitas knapsack.
i = Barang / Objek.
Wi = Bobot setiap barang / objek.
Pi = Profit setiap barang / objek.
Pi/Wi = Densitas / Density / Perbandingan Profit dan Bobot.
1 = Diambil / Dimasukan ke dalam knapsack.
0 = Tidak diambil / Dimasukan ke dalam knapsack.

Tabel 4.7 Data 10 Alamat Penerima


No Penerim Alamat Ongkir Berat (g)
a
Puri Beta 2, Kiara Payung
Boulevard No 10, KOTA
1 Abdilla 15000 1300
TANGERANG, CILEDUG,
BANTEN, ID, 15154
Jalan Al Munawarah No.62
Rt1/Rw1 belendung, benda
Abdul
(Kntrkn Hj yayah dkt tk
2 Aziz 15000 1400
asudaisia), KOTA
Alfikri
TANGERANG, BENDA,
BANTEN, ID, 15123

31
Jl. Kincir raya rt 10 rw 06 no 59,
Abdulla KOTA JAKARTA BARAT,
3 20000 2300
h akbar CENGKARENG, DKI
JAKARTA, ID, 11730
Perumahan Kresek Indah Blok
T21 Rt 003/012
4 aBe aL Cengkareng, Kota Administrasi 20000 2000
Jakarta Barat, 11750
DKI Jakarta
PUMP CAR WASH, Sukabumi
Utara, Kec. Kb. Jeruk, Kota
Jakarta Barat, Daerah Khusus
Ibukota Jakarta, 11540
5 Abi 20000 2100
[Tokopedia Note: jl. salam raya]
Kebon Jeruk, Kota Administrasi
Jakarta Barat, 11540
DKI Jakarta
jl. palem xv blok b14 no.29
ackto uwungjaya, cibodas
6 15000 1700
priyandi Cibodas, Kota Tangerang, 15138
Banten
Jl. Bukit Golf VIII QG2 No.20,
Cluster Garcia, Modernland,
7 Acun 20000 2200
KOTA TANGERANG, PINANG
(PENANG), BANTEN, ID, 15142
Jln. Cempaka II Kavling DKI
Fardhan
blok 94 no.22, Meruya Utara
i
8 Jakarta Barat, Kota Administrasi 15000 1500
Ramadh
Jakarta Barat, 11620
ana
DKI Jakarta
Jl duta buntu no 13a warung ayah
wawan,masuk gang H Siab
Ade
samping mushola al istiqomah,
9 giska 20000 2500
KOTA JAKARTA BARAT,
arifin
KEBON JERUK, DKI
JAKARTA, ID, 11510
Jl. H. Shohib Abdul Aziz No. 05
Ade RT. 001/002 Sukaasih
10 Rachma Tangerang, KOTA 30000 3000
wati TANGERANG, TANGERANG,
BANTEN, ID, 15111

Setelah diketahui data alamat pengiriman maka dibentuklah tabel bobot dan
profit:
Tabel 4.8 Tabel Bobot dan Profit.

32
Barang (i) Bobot (Wi) Profit (Pi)
1 1300 15000
2 1400 15000
3 2300 20000
4 2000 20000
5 2100 20000
6 1700 15000
7 2200 20000
8 1500 15000
9 2500 20000
10 3000 30000

Dari hasil pembentukan tabel profit dan bobot lalu ditentukan nilai densitas
/ density sebagai berikut:
Pada kolom densitas (Pi/Wi) merupakan hasil profit (Pi) dibagi dengan
bobot (Wi).
(Pi1 : Wi1) = 15000 : 1300 = 11.54
(Pi1 : Wi1) = 15000 : 1400 = 10.71
(Pi1 : Wi1) = 20000 : 2300 = 8.70
(Pi1 : Wi1) = 20000 : 2000 = 10
(Pi1 : Wi1) = 20000 : 2100 = 9.52
(Pi1 : Wi1) = 15000 : 1700 = 8.82
(Pi1 : Wi1) = 20000 : 2200 = 9.09
(Pi1 : Wi1) = 15000 : 1500 = 10
(Pi1 : Wi1) = 20000 : 2500 = 8
(Pi1 : Wi1) = 30000 : 3000 = 10
Tabel 4.9 Tabel Nilai Densitas / Dentity
Densitas
Barang (i) Bobot (Wi) Profit (Pi)
(Pi/Wi)
1 1300 15000 11.54
2 1400 15000 10.71
3 2300 20000 8.70
4 2000 20000 10
5 2100 20000 9.52
6 1700 15000 8.82
7 2200 20000 9.09
8 1500 15000 10
9 2500 20000 8

33
10 3000 30000 10

Dari hasil tabel diatas lalu dilakukan perhitungan penyelesaian 1/0 knapsack
problem menggunakan strategi greedy sebagai berikut:
1. Menentukan Greedy by Profit
Langkah pertama yaitu mengurutkan data berdasarkan profit tertinggi:
(P10, P3, P4, P5, P7, P9, P1, P2, P6, P8) = (30000, 20000, 20000, 20000,
20000, 20000, 15000, 15000, 15000, 15000).
Mengisi nilai knapsack 0-1:
M = 10.000 gram ( maksimal kapasitas knapsack)
Jika jumlah Wi <= M maka diberi nilai 1, Jika jumlah Wi > M diberi
nilai 0.
W10 = 3000, nilai = 1.
(W10 + W3) = 5300, nilai 1.
(W10 + W3 + W4) = 7300, nilai 1.
(W10 + W3 + W4 + W5) = 9400, nilai 1.
(W10 + W3 + W4 + W5 + W7) = 11.600, nilai 0.
(W10 + W3 + W4 + W5 + W9) = 11.900, nilai 0.
(W10 + W3 + W4 + W5 + W1) = 10.700, nilai 0.
(W10 + W3 + W4 + W5 + W2) = 10.800, nilai 0.
(W10 + W3 + W4 + W5 + W6) = 11.100, nilai 0.
(W10 + W3 + W4 + W5 + W8) = 10.900, nilai 0.
Sehingga tabel greedy by profit adalah:
Tabel 4.10 Tabel Greedy by Profit
Bobot Densitas Knapsack
Barang (i) Profit (Pi)
(Wi) (Pi/Wi) 0-1
10 3000 30000 10 1
3 2300 20000 8.70 1
4 2000 20000 10 1
5 2100 20000 9.52 1
7 2200 20000 9.09 0
9 2500 20000 8 0
1 1300 1500 11.54 0
2 1400 15000 10.71 0
6 1700 15000 8.82 0
8 1500 15000 10 0

34
2. Menentukan Greedy by Weight
Langkah pertama yaitu mengurutkan data berdasarkan bobot tertinggi:
(W10, W9, W3, W7, W5, W4, W6, W8, W2, W1) = (3000, 2500, 2300,
2200, 2100, 2000, 1700, 1500, 1400, 1300).
Jika jumlah Wi <= M maka diberi nilai 1, Jika jumlah Wi > M diberi
nilai 0.
W10 = 3000, nilai = 1.
(W10 + W9) = 5500, nilai 1.
(W10 + W9 + W3) = 7800, nilai 1.
(W10 + W9 + W3 + W7) = 10.000, nilai 1.
(W10 + W9 + W3 + W7 + W5) = 12.100, nilai 0.
(W10 + W9 + W3 + W7 + W4) = 12.000, nilai 0.
(W10 + W9 + W3 + W7 + W6) = 11.700, nilai 0.
(W10 + W9 + W3 + W7 + W8) = 11.500, nilai 0.
(W10 + W9 + W3 + W7 + W2) = 11.400, nilai 0.
(W10 + W9 + W3 + W7 + W1) = 11.300, nilai 0.
Sehingga tabel greedy by weight adalah:
Tabel 4.11 Tabel Greedy by Weight
Bobot Densitas Knapsack
Barang (i) Profit (Pi)
(Wi) (Pi/Wi) 0-1
10 3000 30000 10 1
9 2500 20000 8 1
3 2300 20000 8.70 1
7 2200 20000 9.09 1
5 2100 20000 9.52 0
4 2000 20000 10 0
6 1700 15000 8.82 0
8 1500 15000 10 0
2 1400 15000 10.71 0
1 1300 1500 11.54 0

3. Menentukan Greedy by Density


Langkah pertama yaitu mengurutkan data berdasarkan densitas / density
tertinggi:

35
(P1/W1, P2/W2, P4/W4, P8/W8, P10/W10, P5/W5, P7/W7, P6/W6,
P3/W3, P9/W9) = (11.54, 10.71, 10, 10, 10, 9.52, 9.09, 8,82, 8.70, 8).
Jika jumlah Wi <= M maka diberi nilai 1, Jika jumlah Wi > M diberi
nilai 0.
W1 = 1300, nilai = 1.
(W1 + W2) = 2700, nilai 1.
(W1 + W2 + W4) = 4700, nilai 1.
(W1 + W2 + W4 + W8) = 6200, nilai 1.
(W1 + W2 + W4 + W8 + W10) = 9200, nilai 1.
(W1 + W2 + W4 + W8 + W10 + W5) = 11.300, nilai 0.
(W1 + W2 + W4 + W8 + W10 + W7) = 11.400, nilai 0.
(W1 + W2 + W4 + W8 + W10 + W6) = 10.900, nilai 0.
(W1 + W2 + W4 + W8 + W10 + W3) = 11.500, nilai 0.
(W1 + W2 + W4 + W8 + W10 + W9) = 11.700, nilai 0.
Sehingga tabel greedy by density / densitas adalah:
Tabel 4.12 Tabel Greedy by Density / Densitas
Bobot Densitas Knapsack
Barang (i) Profit (Pi)
(Wi) (Pi/Wi) 0-1
1 1300 1500 11.54 1
2 1400 15000 10.71 1
4 2000 20000 10 1
8 1500 15000 10 1
10 3000 30000 10 1
5 2100 20000 9.52 1
7 2200 20000 9.09 0
6 1700 15000 8.82 0
3 2300 20000 8.70 0
9 2500 20000 8 0

Sehingga hasil tabel knapsack 0-1 adalah:


Tabel 4.13 Tabel Knapsack 0-1
Barang Bobot Profit Greedy by Greedy by Greedy by
(i) (Wi) (Pi) Profit Weight Density
1 1300 15000 0 0 1
2 1400 15000 0 0 1
3 2300 20000 1 1 0
4 2000 20000 1 0 1
5 2100 20000 1 0 0

36
6 1700 15000 0 0 0
7 2200 20000 0 1 0
8 1500 15000 0 0 1
9 2500 20000 0 1 0
10 3000 30000 1 1 1
Total Bobot 9400 10000 9200
Total Profit 90000 90000 95000

Dari hasil perancangan sistem greedy knapsack penerapan yang cocok


untuk diimplementasikan ialah greedy by density.
2. Flowchart
Berikut ini adalah flowchart dari rancangan greedy knapsack.

Gambar 4.12 Flowchart Greedy Knapsack

37
3. Pseudocode
Berikut ini adalah pseudocode dari rancangan greedy knapsack.
n = [profit, weight, density]
max = max_knapsack
total_bobot = [byProfit, byWeight, byDensity]
total_profit = [byProfit, byWeight, byDensity]

//Greedy by Profit
n = sortMaxProfit(n[0])
i=0
for i to n.length do
if total_bobot[0] <= max && (total_bobot[0]+n[‘weight’]) <= max
total_bobot[0] += n[‘weight’]
total_profit[0] += n[‘profit’]
print “1”
else
print “0”
break

//Greedy by Weight
n = sortMaxWeight(n[1])
i=0
for i to n.length do
if total_bobot[1] <= max && (total_bobot[1]+n[‘weight’]) <= max
total_bobot[1] += n[‘weight’]
total_profit[1] += n[‘profit’]
print “1”
else
print “0”
break
//Greedy by Density
n = sortMaxProfit(n[2])

38
i=0
for i to n.length do
if total_bobot[2] <= max && (total_bobot[2]+n[‘weight’]) <= max
total_bobot[2] += n[‘weight’]
total_profit[2] += n[‘profit’]
print “1”
else
print “0”
break
print “Total Bobot Greedy By Profit = total_bobot[0]”
print “Total Profit Greedy By Profit = total_profit[0]”

print “Total Bobot Greedy By Weight = total_bobot[1]”


print “Total Profit Greedy By Weight = total_profit[1]”

print “Total Bobot Greedy By Density = total_bobot[2]”


print “Total Profit Greedy By Density = total_profit[2]”

4.2.3. Perancangan Algoritma Dijkstra


Berikut ini proses perancangan yang dilakukan dalam algoritma dijkstra.
1. Proses Perhitungan Manual
Pada perancangan ini peneliti menggunakan data dummy sebagai contoh.
Terdapat 4 alamat penerima dan 1 lokasi warehouse ditandai dengan
angka ke-0.
Keterangan :
Angka ke-0 = Warehouse.
Angka 1-n = Nomor urut tabel alamat penerima.
Node = Lokasi yang ditentukan.
Hasil Node = Lokasi yang dikunjungi.
Diketahui hasil node awal {0} dan node awal {1,2,3,4} dikarenakan awal
mula pengiriman dimulai dari warehouse.

39
1. Pencarian rute ke-1
Diketahui jika jarak dari warehouse ke masing-masing alama penerima
adalah:
Tabel 4.14 Hasil Jarak Warehouse ke Alamat Penerima
Lokasi Awal Lokasi Tujuan Jarak (km)
0 1 6.3
0 2 7.2
0 3 3.3
0 4 8.4
Dari tabel berikut maka menghasil rute terdekat ialah 0 ke 3 maka
menghasilkan node {1,2,4} dan hasil node {0,3}.
2. Pencarian rute ke-2
Diketahui jarak dari lokasi 3 menuju ke alamat penerima lainnya ialah:
Tabel 4.15 Hasil Jarak lokasi 3 ke Alamat Penerima Lainnya
Lokasi Awal Lokasi Tujuan Jarak (km)
3 1 4.3
3 2 5.2
3 4 7.3
Dari tabel berikut maka menghasil rute terdekat ialah 4 ke 1 maka
menghasilkan node {2,4} dan hasil node {0,3,1}.
3. Pencarian rute ke-3
Diketahui jarak dari lokasi 1 menuju ke alamat penerima lainnya ialah:
Tabel 4.16 Hasil Jarak lokasi 1 ke Alamat Penerima Lainnya
Lokasi Awal Lokasi Tujuan Jarak (km)
1 2 2.7
1 4 3.6
Dari tabel berikut maka menghasil rute terdekat ialah 1 ke 2 maka
menghasilkan node {4} dan hasil node {0,3,1,2}.
4. Pencarian rute ke-4
Diketahui jarak dari lokasi 2 menuju ke alamat penerima lainnya ialah:
Tabel 4.17 Hasil Jarak lokasi 2 ke Alamat Penerima Lainnya
Lokasi Awal Lokasi Tujuan Jarak (km)

40
2 4 1.7
Dari tabel berikut maka menghasil rute terdekat ialah 2 ke 4 maka
menghasilkan node { } dan hasil node {0,3,1,2,4}.
Dan hasil perhitungan rute terdekat ialah 0 – 3 – 1 – 2 – 4.

2. Flowchart
Berikut ini adalah flowchart dari rancangan algoritma dijkstra.

Gambar 4.13 Flowchart Algoritma Dijkstra


3. Pseudocode
Berikut ini adalah pseudocode dari rancangan algoritma dijkstra.
n = data
i=0
jarak = []
for row in n.itterows() do
for i to n.length do

41
jarak.append(getDistanceMatrix(row[‘latitude’],
row[‘longitude’], n[i+1][‘latitude’], n[i+1][‘longitude’]
n = array_multisort(array_column(jarak, ‘distance’), SORT_ASC,
jarak)
END

4.2.4 Penggunaan Library API Maps


Berikut ini proses penggunaan library API Maps, antara lain:
1. Direction API
Berikut ini contoh penggunaan direction API.

Gambar 4.14 Gambar Contoh Direction API


function InitMap(locations) {

var map = new


google.maps.Map(document.getElementById('map'), {
zoom: 13,
center: new google.maps.LatLng(-6.179558, 106.712952),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var directionsService = new google.maps.DirectionsService();
var rendererOptions = {

42
preserveViewport: true,
map: map,
polylineOptions: {
strokeColor: '#FF3300',
strokeWeight: 10
},
suppressMarkers: true,
routeIndex: 0
};
var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 0; i < locations.length; i++) {
// console.log(locations[i][0]);
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1],
locations[i][2]),
map: map,
label: locations[i][0].toString()
});
google.maps.event.addListener(marker, 'click',
(function(marker, i) {
return function() {
infowindow.setContent("urutan ke " + locations[i][0] + "
");
infowindow.open(map, marker);
}
})(marker, i));
if (i < (locations.length - 1)) {
var directionsDisplay = new
google.maps.DirectionsRenderer(rendererOptions);
calculateAndDisplayRoute(directionsService,
directionsDisplay, new google.maps.LatLng(locations[i][1],

43
locations[i][2]), new google.maps.LatLng(locations[i + 1][1],
locations[i + 1][2]));
}
}
}

2. Maps JavaScript API


Berikut ini contoh penggunaan Maps JavaScript API.

Gambar 4.15 Gambar Contoh Maps JavaScript API

<script
src="https://maps.googleapis.com/maps/api/js?key=**********"></scri
pt>
function InitMap(locations) {

var map = new


google.maps.Map(document.getElementById('map'), {
zoom: 13,
center: new google.maps.LatLng(-6.179558,
106.712952),

44
mapTypeId:
google.maps.MapTypeId.ROADMAP
});
var directionsService = new
google.maps.DirectionsService();
var rendererOptions = {
preserveViewport: true,
map: map,
polylineOptions: {
strokeColor: '#FF3300',
strokeWeight: 10
},
suppressMarkers: true,
routeIndex: 0
};
}

3. Geocoding API
Berikut ini contoh penggunaan Geocoding API.

45
Gambar 4.16 Gambar Contoh Geocoding API

4. Distance Matrix API


Berikut ini contoh penggunaan distance matrix API.

Gambar 4.17 Gambar Contoh Distance Matrix API


4.2.5 Flowchart Model Sistem

Flowchart ini menampilkan proses model sistem yang akan diterapkan pada
sistem ini.

46
Gambar 4.18 Flowchart

47
4.2.6 Perancangan Unified Modeling Language (UML)
4.2.6.1 Use Case Diagram
Dalam perancangan UML dibuat dalam bentuk use case. Use case
diagram ini menggambarkan proses interaksi yang dilakukan dalam
penggunaan sistem ini.
Berikut identifikasi komponen use case diagram dalam sistem ini.
Tabel 4.18 Identifikasi Use Case Diagram

No Nama Komponen Deskripsi


Pihak yang memiliki akses dalam
melakukan proses penginputan,
1 Admin Aktor
pengambilan dan melihat hasil data
pengiriman yang telah diproses.
Kegiatan untuk menginput transaksi
Input
2 Use Case untuk dimasukan ke dalam
Transaksi
pengiriman yang akan dilakukan
Melihat Detail Melihat detail jumlah pengiriman
3 Use Case
Pengiriman yang dapat dilakukan
Melihat rute pengiriman yang akan
Melihat rute dilakukan dalam bentuk maps dengan
4 Use Case
pengiriman arah yg telah ditentukan berdasarkan
jarak terdekat
Menghitung keuntungan yang didapat
Menghitung berdasarkan total paket dan biaya
5 Use Case
Keuntungan ongkir serta pengeluaran yg telah
ditentukan
Mendownload
Mendownload data pengiriman untuk
6 data Use Case
dibagikan pada kurir yang ditentukan
Pengiriman
Melihat Kegiatan untuk melihat daftar
7 Riwayat Use Case transaksi yang telah terinput
Transaksi sebelumnya

Setelah diidentifikasi kegiatan yang akan terjadi pada sistem, tahap


selanjutnya menampilkan kegiatan tersebut kedalam sebuah diagram.
Berikut adalah hasil dari Use Case Diagram yang dibuat.

48
Gambar 4.19 Use Case Diagram
Setelah membuat Use Case Diagram maka selanjutnya
mendefinisikan scenario interaksi antara aktor dan use case secara detil
pada sistem ini.

Tabel 4.19 Use Case Scenario input transaksi

Use Case name Input Transaksi


Use Case ID 1
Actor Admin
Use Case ini mendeskripsikan kegiatan penginputan data
Description
transaksi yang dilakukan admin.
Precondition Data tersebut harus berbentuk xlsx atau csv.
Actor Action System Response
Aktor membuka halaman Sistem akan menampilkan
awal halaman form input file dan
Typical course of
banyak kurir, file tersebut
event
harus berisikan transaksi
Aktor akan menginput file Sistem akan memvalidasi
berbentuk xlsx atau csv dan melakukan pemilihan

49
yang berisikan transaksi pengiriman barang pada
dan menginput banyaknya banyaknya kurir
kurir lalu mensubmitnya
Sistem akan menyimpan
hasil pemilihan pengiriman
ke dalam database
Sistem akan menampilkan
detail pengiriman-
pengiriman yang terdaftar
Jika penginputan gagal, sistem akan menampikan error
Alternate courses
tergantung dari data penginputan yang salah
Conclusion Aktor berhasil menerima detail pengiriman
Post Condition Aktor berhasil masuk ke halaman detail pengiriman

Tabel 4.20 Use Case Scenario Detail Pengiriman

Use Case name Melihat Detail Pengiriman


Use Case ID 2
Actor Admin
Use Case ini mendeskripsikan tentang kegiatan admin
Description dalam melihat pengiriman-pengiriman yang terdaftar untuk
pengiriman.
Precondition Aktor harus sudah menginput data transaksi.
Actor Action System Response
Sistem akan menampilkan
Typical course of
halaman detail pengiriman
event
mulai dari 1 hingga
pengiriman terakhir
Jika gagal maka akan muncul error status data tidak bisa
Alternate courses
ditampilkan
Conclusion Aktor berhasil melihat daftar detail pengiriman
Post Condition Aktor berhasil melihat daftar halaman detail pengiriman

Tabel 4.21 Use Case Scenario rute pengiriman

Use Case name Melihat Rute Pengiriman


Use Case ID 3
Actor Admin
Use Case ini mendeskripsikan tentang kegiatan admin
Description
dalam melihat rute dari salah satu pengiriman yang dipilih.
Precondition Aktor harus memilih salah satu dari daftar pengiriman
Actor Action System Response
Typical course of Memilih salah satu daftar Sistem akan menampilkan
event pengiriman halaman rute pengiriman
yang dipilih oleh aktor

50
Jika gagal maka akan muncul error status data tidak bisa
Alternate courses
ditampilkan
Conclusion Aktor berhasil melihat rute pengiriman
Post Condition Aktor berhasil masuk ke dalam halaman rute pengiriman

Tabel 4.22 Use Case Scenario menghitung keuntungan

Use Case name Menghitung keuntungan


Use Case ID 4
Actor Admin
Use Case ini mendeskripsikan tentang kegiatan admin
Description dalam menghitung keuntungan dalam semua daftar
pengiriman.
Precondition Aktor harus masuk ke dalam halaman detail pengiriman
Actor Action System Response
Masuk ke halaman daftar Sistem akan menampilkan
detail pengiriman halaman detail pengiriman
Menginput data biaya Sistem akan menghitung
bonus per 1 paket, biaya keuntungan dari pemasukan
bensin per pengiriman, ongkir pengiriman dan
Typical course of biaya penggunaan api, lalu pengeluaran dari biaya per
event mensubmit paket, biaya bensin dan biaya
penggunaan api
Sistem akan menampilkan
table pengeluaran dan
pemasukan serta total hasil
pemasukan diambil
pengeluaran
Jika gagal maka akan muncul error status data tidak bisa
Alternate courses
ditampilkan
Conclusion Aktor berhasil melihat total keuntungan yang diperoleh
Aktor berhasil mendapatkan hasil keuntungan yang
Post Condition
diperoleh

Tabel 4.23 Use Case Scenario mendownload data pengiriman

Use Case name Mendownload data pengiriman


Use Case ID 5
Actor Admin
Use Case ini mendeskripsikan tentang kegiatan admin
Description dalam mendownload data pengiriman yang dipilih untuk
diserahkan kepada kurir yang akan mengantar.
Precondition Aktor harus masuk ke dalam halaman rute pengiriman
Actor Action System Response

51
Masuk ke halaman daftar Sistem akan menampilkan
detail pengiriman halaman detail pengiriman
Memilih pengiriman yang Sistem akan menampilkan
diinginkan rute dan data alamat
Typical course of pengiriman yang akan
event digunakan sesuai urutan
pengiriman.
Tekan tombol download Sistem akan mendownload
file hasil dari pengiriman dan
rute yang dipilih
Jika gagal maka akan muncul error status data tidak bisa
Alternate courses
ditampilkan
Conclusion Aktor berhasil mendapatkan data pengiriman berupa xlsx
Post Condition Aktor berhasil mendapatkan data pengiriman

Tabel 4.24 Use Case Scenario melihat riwayat transaksi

Use Case name Melihat riwayat transaksi


Use Case ID 6
Actor Admin
Use Case ini mendeskripsikan tentang kegiatan admin
Description dalam melihat riwayat transaksi pengiriman sebelumnya
yang telah terinput.
Precondition Aktor sudah pernah menginput pengiriman
Actor Action System Response
Typical course of Masuk ke halaman data Sistem akan menampilkan
event transaksi halaman riwayat transaksi
pada pengiriman sebelumnya
Jika gagal maka akan muncul error status data tidak bisa
Alternate courses
ditampilkan
Conclusion Aktor berhasil mendapatkan data transaksi sebelumnya
Post Condition Aktor berhasil mendapatkan data transaksi

4.2.6.2 Activity Diagram


Activity Diagram menggambarkan workflow (aliran kerja) atau
aktivitas dari sebuah sistem atau proses bisnis(Hendini, 2016). Berikut ini
adalah activity diagram dari aktifitas use case pada sistem ini.
a. Input Transaksi
Aktivitas ini menggambarkan alur kegiatan dalam
penginputan data transaksi yang dilakukan oleh aktor.

52
Gambar 4.20 Activity Diagram Input Transaksi

b. Detail Pengiriman
Aktivitas ini menggambarkan alur kegiatan menampilkan
daftar pengiriman yang ditunjukan kepada aktor.

Gambar 4.21 Activity Diagram Detail Pengiriman

53
c. Rute Pengiriman
Aktivitas ini menggambarkan alur kegiatan memunculkan
rute pengiriman yang dipilih oleh aktor pada daftar pengiriman.

Gambar 4.22 Activity Diagram Rute Pengiriman


d. Menghitung Keuntungan
Aktivitas ini menggambarkan alur kegiatan menghitung
keuntungan yang dilakukan aktor dalam daftar pengiriman.

Gambar 4.23 Activity Diagram Menghitung Keuntungan

54
e. Mendownload daftar alamat pengiriman
Aktivitas ini menggambarkan alur kegiatan mendownload
data pengiriman yang diinginkan oleh aktor.

Gambar 4.24 Activity Diagram Mendownload Data


Pengiriman
f. Melihat Riwayat Transaksi
Aktivitas ini menggambarkan alur kegiatan melihat riwayat
transaksi yang telah dibuat sebelumnya.

Gambar 4.25 Activity Diagram Melihat Riwayat Transaksi

4.2.7 Perancangan Desain Basis Data (Database)

55
Dalam perancangan desain basis data dalam membangun model data yang
digunakan didalam suatu sistem bersifat independen dari semua
pertimbangan fisikal(Gat, 2015).
4.2.7.1 Identifikasi Tipe Entitiy
Berdasarkan analisis kebutuhan sistem, dapat ditentukan data entity
seperi pada tabel berikut:
Tabel 4.25 Tabel Entity
Entity Name Description Aliases Occurrence
Data detail
Merupakan
transaksi dalam
entitas yang
transaksi Transaksi 1 hari yang
berisi data-data
diinput oleh
detail transaksi
admin
Data detail
Merupakan
pengiriman
entitas yang
yang terdaftar
berisi data-data Daftar
pengiriman dalam sebuah
pengiriman Pengiriman
transaksi yang
dalam sebuah
telah diinput
transaksi
oleh admin
Merupakan Data detail
entitas yang alamat
berisi data-data pengiriman
alamat Data yang terdaftar
data_pengiriman
pengiriman Pengiriman dalam sebuah
dalam sebuah pengiriman
data yang telah
pengiriman dibuat

4.2.7.2 Identifikasi Tipe Relationship


Setelah mengindetifikasi tipe entity maka selanjutnya akan
mengidentifikasi tipe relationship. Tujuan identifikasi tipe relationship
untuk mengetahui hubungan antar entity yang telah ditentukan.
Tabel 4.26 Tabel Identifikasi Relationship
Entity
Multiplicity Relationship Entity Name Multiplicity
Name
transaksi 1..* Mendasari pengiriman 1..1
pengiriman 1..* Mendasari data_pengiriman 1..1

4.2.7.3 Identifikasi Attribute dengan Tipe Entity

56
Setelah mengidentifikasi tipe relationship maka selanjutnya
membuat attributes dari data entity. Berikut attributes yang terdaftar:
Tabel 4.27 Tabel Identifikasi Attribute
Entity Name Attributes Description Data Nu Mult Prima
Length & ll i ry Key
Type Valu
e
transaksi Berisikan
id transaksi
id int(255) No No Yes
secara auto
increments
Berisikan
data banyak
kurir kurir dalam int(10) No No No
transaksi
pengiriman
Berisikan
data
tanggal date No No No
tanggal
transaksi
Berisikan
id
id pengiriman int(255) No No Yes
secara auto
increments
Berisikan
id transaksi
pengiriman transaksi_id int(255) No No No
yang
terdaftar
Berisikan
nama
nama_pengir varchar(100
pengiriman No No No
iman )
yang
terdaftar
Berisikan
id data
id pengiriman int(255) No No Yes
secara auto
increments
data_pengiri Berisikan
man data id
id_pengirima
pengiriman int(255) No No No
n
yang
terdaftar
nama_peneri Berisikan varchar(100
No No No
ma nama )

57
penerima
dari data
pengiriman
Berisikan
alamat
Varchar(10
alamat penerima No No No
00)
dari data
pengiriman
Berisikan
data nama
varchar(100
kurir kurir dari Ya No No
)
data
pengiriman
Berisikan
data biaya
ongkir int(200) No No No
ongkos
kirim
Berisikan
varchar(100
resi data resi No No No
)
pengiriman
Berisikan
berat data berat float No No No
pengiriman
Berisikan
data
varchar(255
latitude latitude dari Ya No No
)
data
pengiriman
Berisikan
data
varchar(255
longitude longitude Ya No No
)
dari data
pengiriman
Berisi
urutan rute
urutan yang dilalu int(100) Ya No No
dari data
pengiriman
Berisi jarak
yang dilalui
distance float Ya No No
dari data
pengiriman
Berisi
waktu yang
time dilalui dari float Ya No No
data
pengiriman

58
Berisi graf
graf dari data mediumtext Ya No No
pengiriman
Berisi
banyak
iterasi graf
i_graf yang int(255) Ya No No
dilakukan
dari data
pengiriman

4.2.7.4 Desain Basis Data


Berikut desain tampilan basis data sesuai yang telah ditentukan:

Gambar 4.26 Tampilan Desain Basis Data


4.2.8 Perancangan User Interface
User interface merupakan saat sistem dan pengguna dapat saling
berinteraksi satu dengan lainnya melalui perintah seperti halnya menggunakan
konten dan memasukan data(Multazam, 2020). Berikut ini adalah perancangan user
interface pada sistem ini.
4.2.8.1 Struktur Tampilan User Interface
Berikut ini adalah rancangan tampilan user interface yang akan
dibuat.

59
Gambar 4.27 Tampilan menu User Interface

4.2.8.2 Desain Tampilan User Interface


Berikut ini adalah rancangan desain tampilan pada user interface
yang akan dibuat.
1. Halaman Awal
Halaman awal akan menampilkan gambar dan form
penginputan data transaksi dan banyak kurir.

Gambar 4.28 Halaman awal user interface


2. Halaman Daftar Detail Pengiriman

60
Halaman daftar detail pengiriman akan menampilkan daftar
seluruh pengiriman dan form pengisian biaya pengeluaran serta
tabel pemasukan dan pengeluaran.

Gambar 4.29 Halaman Daftar Detail Pengiriman

Gambar 4.30 Halaman Pengeluaran dan Pendapatan pada Detail Pengiriman


3. Halaman Rute Pengiriman
Halaman rute pengiriman menampilkan daftar alamat dan
rute yang akan diambil oleh kurir sesuai urutan terdekat dengan
menampilkan maps.

61
Gambar 4.31 Halaman Rute Pengiriman

Gambar 4.32 Halaman Maps pada Rute Pengiriman


4. Halaman Data Transaksi
Halaman data transaksi menampilkan daftar detail data
transaksi sebelumnya yang telah diinput oleh admin.

Gambar 4.33 Halaman Data Transaksi


4.2.9 Pengkodean (Coding)

62
Pada tahap ini peneliti membuat sistem ini berbasis web. Pada sistem
ini peneliti menggunakan Visual Studio Code sebagai tools pembuatan
sistem ini dan library Google API Maps dalam proses pembuatan sistem ini.
Library tersebut digunakan sebagai proses penentuan rute yang akan
diambil dalam pengiriman barang.
4.2.9.1 Pengkodean Greedy Knapsack
Berikut pengkodean greedy knapsack dalam penginputan data.
<?php

function get_shortest_berat($arr)
{
$distance = array_column($arr, 'berat');
array_multisort($distance, SORT_ASC, $arr);
return $arr;
}
move_uploaded_file($_FILES['berkas_excel']['tmp_name'], 'excel/' .
$_FILES['berkas_excel']['name']);
require 'vendor/autoload.php';
include "mysqli.php";

use ParseCsv\Csv;

$file_mimes = array('application/octet-stream', 'application/vnd.ms-


excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv',
'application/excel', 'application/vnd.msexcel',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

$banyak_kurir = $_POST['kurir'];
$tanggal = $_POST['tanggal'];
$result = array();
$data = array();
if (isset($_FILES['berkas_excel']['name']) &&
in_array($_FILES['berkas_excel']['type'], $file_mimes)) {
$csv = new \ParseCsv\Csv();

$csv->auto('excel/' . $_FILES['berkas_excel']['name']);
$sum_berat = 0;
//$alamat_kantor = 'Ruko Sentra Niaga J10, Jl. Green Lake City
Boulevard No.RT.7, RT.6/RW.8, Duri Kosambi, Cengkareng';
for ($i = 0; $i < count($csv->data); $i++) {
$nama_penerima = $csv->data[$i]['Nama Penerima'];
$alamat = $csv->data[$i]['Alamat'];
$kurir = $csv->data[$i]['Kurir'];
$ongkir = $csv->data[$i]['Ongkir'];
$resi = $csv->data[$i]['Resi'];

63
$berat = $csv->data[$i]['Berat'];
$sum_berat += $csv->data[$i]['Berat'];
array_push($data, array('nama_penerima' => $nama_penerima,
'alamat' => $alamat, 'kurir' => $kurir, "ongkir" => $ongkir, "resi" =>
$resi, "berat" => $berat));
}
$total = ceil($sum_berat / 100);
if ($total < $banyak_kurir) {
$total = $banyak_kurir;
}
$data = get_shortest_berat($data);
$j = 0;
$berat_total = array();
for ($i = 0; $i < $total; $i++) {
$berat_total[$i] = 100;
$result[$i] = array();
}
for ($i = 0; $i < count($data); $i++) {
if ($j == $total) $j = 0;

if ($berat_total[$j] < $data[$i]["berat"]) {


if ($j == $total) {
$j = 0;
} else {
$j++;
}
}
array_push($result[$j], $data[$i]);
$berat_total[$j] -= $data[$i]["berat"];
$j++;
}

mysqli_begin_transaction($con);
try {
$insert_sql = "INSERT INTO transaksi (kurir,tanggal)
VALUES('$banyak_kurir','$tanggal')";
if (mysqli_query($con, $insert_sql)) {
$last_id = mysqli_insert_id($con);
for ($i = 0; $i < $total; $i++) {
$nama_pengiriman = 'Pengiriman ke-' . ($i + 1);
$insert_sql_2 = "INSERT INTO pengiriman
(transaksi_id,nama_pengiriman)
VALUES('$last_id','$nama_pengiriman')";
if (mysqli_query($con, $insert_sql_2)) {
$last_id_pengiriman = mysqli_insert_id($con);
for ($j = 0; $j < count($result[$i]); $j++) {
$columns = implode(", ", array_keys($result[$i][$j]));

64
$escaped_values = array_map(array($con,
'real_escape_string'), array_values($result[$i][$j]));
$values = implode("', '", $escaped_values);
$sql = "INSERT INTO
`data_pengiriman`(id_pengiriman,$columns) VALUES
($last_id_pengiriman,'$values')";
if (!mysqli_query($con, $sql)) {
echo json_encode(array("status_code" => 1,
"id_transaksi" => mysqli_error($con)));
mysqli_rollback($con);
return;
}
}
}
}
}
mysqli_commit($con);
unlink('excel/' . $_FILES['berkas_excel']['name']);
echo json_encode(array("status_code" => 0, "id_transaksi" =>
$last_id));
return;
} catch (mysqli_sql_exception $exception) {
mysqli_rollback($con);
echo json_encode(array("status_code" => 1, "id_transaksi" =>
$exception));
return;
}
} else {
echo json_encode(array("status_code" => 1, "id_transaksi" => 'file
not found'));
return;
}

4.2.9.2 Pengkodean Algoritma Dijkstra


Berikut pengkodean algoritma dijkstra dalam penentuan rute.
<?php
include "mysqli.php";

function GetDrivingDistance($lat1, $lat2, $long1, $long2)


{
$distance_data = file_get_contents(
'https://maps.googleapis.com/maps/api/distancematrix/json?&origi
ns='.$lat1.','.$long1.'&destinations='.$lat2.','.$long2.'&mode=driving&la

65
nguage=en-EN&key=AIzaSyDgEjLRyp2Q-
dGP_VN234gMVL_kJtFry8U'
);
$response_a = json_decode($distance_data, true);
$dist =
floatval($response_a['rows'][0]['elements'][0]['distance']['value']/1000);
$time =
floatval($response_a['rows'][0]['elements'][0]['duration']['value']/60);
return array('distance' => $dist, "time" => $time);
}

function get_shortest_path($arr)
{
$distance = array_column($arr, 'distance');
array_multisort($distance, SORT_ASC, $arr);
return $arr;
}
function get_distance_path($arr)
{
$arr = get_shortest_path($arr);
//$arr[0]["urutan"] = 0;
$arr_d = "";
$i_graf = 0;
for ($i = 0; $i < count($arr); $i++) {
$arr[$i]["urutan"] = $i;
$dist = null;
$arr_d .= "<br/>";
for ($j = (1 + $i); $j < count($arr); $j++) {
$dist = GetDrivingDistance($arr[$i]["latitude"],
$arr[$j]["latitude"], $arr[$i]["longitude"], $arr[$j]["longitude"]);
if ($dist['distance'] >= 0) {
$distan = $dist['distance'];
$arr[$j]["distance"] = $distan;
$time = $dist['time'];
$arr[$j]["time"] = $time;
$arr_d .= "[" . $i . "][" . $j . "] : " . $distan . ", ";
$arr[$j]["graf"] = $arr_d;
$i_graf++;
$arr[$j]["i_graf"] = $i_graf;
}
}
if ($i < count($arr) - 1) {
$arr2 = array_slice($arr, (1 + $i));
$arr1 = array_slice($arr, 0, (1 + $i));
$arr2 = get_shortest_path($arr2);
$arr = array_merge($arr1, $arr2);
}

66
}
return $arr;
}

function get_coordinates($street)
{
$address = urlencode($street);
$url =
"https://maps.google.com/maps/api/geocode/json?address=$address&se
nsor=false&region=Indonesia&key=AIzaSyDgEjLRyp2Q-
dGP_VN234gMVL_kJtFry8U";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
$response_a = json_decode($response);
$status = $response_a->status;

if ($status == 'ZERO_RESULTS') {
return FALSE;
} else {
$return = array('lat' => $response_a->results[0]->geometry-
>location->lat, 'long' => $response_a->results[0]->geometry->location-
>lng);
return $return;
}
}
function set_data($arr, $id)
{
include "mysqli.php";
mysqli_begin_transaction($con);
$delete = "DELETE FROM data_pengiriman WHERE id_pengiriman
= '$id'";
mysqli_query($con, $delete);
if (mysqli_affected_rows($con) <= 0) {
mysqli_rollback($con);
} else {
for ($j = 0; $j < count($arr); $j++) {
$columns = implode(", ", array_keys($arr[$j]));
$escaped_values = array_map(array($con, 'real_escape_string'),
array_values($arr[$j]));
$values = implode("', '", $escaped_values);

67
$sql = "INSERT INTO
`data_pengiriman`(id_pengiriman,$columns) VALUES ($id,'$values')";
if (!mysqli_query($con, $sql)) {
mysqli_rollback($con);
}
}
}
mysqli_commit($con);
}

if (isset($_POST['id'])) {
$id = $_POST['id'];
$query = "SELECT nama_pengiriman FROM pengiriman WHERE id
= '$id'";
$result = mysqli_query($con, $query);
$row = mysqli_fetch_row($result);
$nama_pengiriman = $row[0];
$alamat_kantor = 'Ruko Sentra Niaga J10, Jl. Green Lake City
Boulevard No.RT.7, RT.6/RW.8, Duri Kosambi, Cengkareng';
$status = 0;
$result = array();
$sql = "SELECT * FROM data_pengiriman WHERE id_pengiriman
= '$id'";
$hasil = mysqli_query($con, $sql);
$i = 0;
while ($buff = mysqli_fetch_array($hasil)) {
$nama_penerima = $buff['nama_penerima'];
$alamat = $buff['alamat'];
$kurir = $buff['kurir'];
$ongkir = $buff['ongkir'];
$resi = $buff['resi'];
$berat = $buff['berat'];
$lat = $buff['latitude'];
$long = $buff['longitude'];
if ($buff['urutan'] != null) {
$status = 1;
$urutan = $buff['urutan'];
$distance = $buff['distance'];
$time = $buff['time'];
$graf_data = $buff['graf'];
$i_graf = $buff['i_graf'];
array_push($result, array('nama_penerima' => $nama_penerima,
'alamat' => $alamat, 'kurir' => $kurir, "ongkir" => $ongkir, "resi" =>
$resi, "berat" => $berat, 'latitude' => $lat, "longitude" => $long, 'urutan'
=> $urutan, 'distance' => $distance, 'time' => $time, "graf" =>
$graf_data, 'i_graf' => $i_graf));
} else {

68
$coordinates1 = get_coordinates($alamat_kantor);
$lat1 = $coordinates1['lat'];
$long1 = $coordinates1['long'];
if ($i == 0) {
array_push($result, array('nama_penerima' => "Kantor",
'alamat' => $alamat_kantor, 'kurir' => "", "ongkir" => "0", "resi" => "",
'berat' => "0", 'latitude' => $lat1, "longitude" => $long1, 'urutan' => "0",
'distance' => "0", "time" => "0", "graf" => "0", "i_graf" => "0"));
}
$dist = GetDrivingDistance($lat1, $lat, $long1, $long);
//echo 'Distance: <b>' . $dist['distance'] . '</b><br>Travel time
duration: <b>' . $dist['time'] . '</b>';
$distan = str_replace(' km', '', $dist['distance']);
$time = str_replace(' mins', '', $dist['time']);
array_push($result, array('nama_penerima' => $nama_penerima,
'alamat' => $alamat, 'kurir' => $kurir, "ongkir" => $ongkir, "resi" =>
$resi, 'berat' => $berat, 'latitude' => $lat, "longitude" => $long, 'urutan'
=> "0", 'distance' => $distan, 'time' => $time, "time" => "$time", "graf"
=> "0", "i_graf" => "0"));
}
$i++;
}
if ($status == 0) {
$result = get_distance_path($result);
set_data($result, $id);
}
echo json_encode(array("status_code" => 0,"nama_pengiriman" =>
$nama_pengiriman, "result" => $result));
} else {
echo json_encode(array("status_code" => 1, "result" => $result));
return;
}

4.3 Implementasi
Tahap implementasi dilakukan setelah aplikasi dibuat, dalam tahap ini
dilakukan pengujian aplikasi.
4.3.1 Pengujian (Testing)
Berikut pengujian aplikasi setelah dibuat menggunakan metode
black box testing.
4.3.1.1 Black Box Testing

69
Pengujian ini digunakan untuk mengetahui apakah sistem yang
dibangun sudah sesuai dengan kebutuhan yang telah didefinisikan. Berikut
ini hasil pengujian black box testing.
Tabel 4.28 Hasil Black Box Testing
Nama Kasus Ekspektasi Hasil Hasil Stastus
No
Penggujian Penggujian Penggujian Penggujian
Menginput Pengujian Sistem Sistem Valid
data transaksi menginput mengecek data berhasil
dan banyak data transaksi transaksi dan membuat
kurir dan banyak membuat daftar daftar
1
kurir pengiriman pengiriman
sesuai banyak sesuai
kurir atau lebih banyak kurir
atau lebih
Memproses Pengujian Sistem akan Sistem Valid
pengiriman memproses memproses berhasil
pengiriman pengiriman menghitung
dengan dengan total jarak
mengklik menghitung dan total
tombol proses total jarak dan waktu yang
2 pada total waktu dibutuhkan
pengiriman yang dalam
yang dipilih dibutuhkan dan pengiriman
menampilkan dan
kedalam tabel menampilka
nnya dalam
tabel
Melihat rute Pengujian Sistem akan Sistem Valid
melihat rute memproses berhasil
3 pada pengiriman menampilka
pengiriman dengan n rute pada
yang dipilih membuat maps maps dan

70
dan rute menampilka
pengiriman n daftar
terdekat alamat
berdasarkan sesuai
alamat pada urutan rute
daftar yang di
pengiriman tentukan
Mendownloa Pengujian Sistem akan Sistem Valid
d data alamat mendownload menampilkan berhasil
pengiriman data alamat hasil xlsx dari menampilka
pada daftar n hasil xlsx
pengiriman pengiriman daftar
4
yang dipilih yang telah alamat yang
dengan ditentukan telah
menekan rutenya ditentukan
tombol rutenya
download
Menghitung Pengujian Sistem Sistem Valid
Pendapatan penghitungan menghitung berhasil
maksimal pendapatan pendapatan menghitung
maksimal maksimal pendapatan
berdasarkan dengan maksimal
pemasukan menghitung dengan
ongkir dan total pemasukan menghitung
5
pengeluaran dari ongkir dan total
biaya bonus total pemasukan
per paket, pengeluaran dan
biaya bensin dari biaya pengeluaran
per bonus per paket,
pengiriman biaya bensin per
dan biaya pengiriman dan

71
penggunaan biaya
api penggunaan api

72
BAB V
HASIL DAN PEMBAHASAN

5.1 Hasil Implementasi


Berikut ini hasil implementasi sistem dengan pengiriman 20 alamat
penerima dengan 2 kurir menggunakan greedy knapsack dan algoritma dijkstra.
Tabel 5.29 Hasil Implementasi Daftar Pengiriman
Total
Pengiriman Rute Banyak Weight Profit Jarak Waktu
barang (kg) (Rp) (km) (m)
0–2–4–
1 3–1–5– 7 7.05 77000 70.763 153.233
6–7
0–5–6–
2 1–3–7– 7 9.29 100000 61.671 129.416
4–2
0–4–2–
3 3–5–6– 6 6.85 73000 64.45 126.499
1
Total 20 23.19 250000 196.884 409.148

Berikut ini uji coba pengiriman barang menggunakan 300 data dan hasil runtime
atau waktu proses berjalannya sistem dalam proses pengiriman barang
menggunakan 3 kurir dan 300 data alamat penerima:
1. Hasil Daftar Pengiriman menggunakan Greedy Knapsack
Berikut ini hasil daftar pengiriman menggunakan greedy knapsack.

Gambar 5.34 Hasil greedy knapsack

73
2. Hasil Runtime Greedy Knapsack
Berikut ini hasil runtime pada proses pembuatan daftar pengiriman
menggunakan greedy knapsack.

Gambar 5.35 Hasil runtime greedy knapsack


3. Hasil Rute Pengiriman Algoritma Dijkstra pada Pengiriman Ke-1
Berikut hasil penentuan rute pengiriman ke-1 menggunakan Algoritma
Djikstra.

Gambar 5.36 Maps Hasil Penentuan Rute Pengirima Ke-1

74
4. Hasil Runtime Algoritma Dijkstra pada Pengiriman Ke-1
Berikut ini hasil runtime penggunaan algoritma dijkstra pada pengiriman
ke-1.

Gambar 5.37 Hasil Runtime Algoritma Djikstra Pengiriman Ke-1


5. Hasil Rute Pengiriman Algoritma Dijkstra pada Pengiriman Ke-2
Berikut hasil penentuan rute pengiriman ke-2 menggunakan Algoritma
Djikstra.

75
Gambar 5.38 Maps Hasil Penentuan Rute Pengirima Ke-2

6. Hasil Runtime Algoritma Dijkstra pada Pengiriman Ke-2


Berikut ini hasil runtime penggunaan algoritma dijkstra pada pengiriman
ke-2.

Gambar 5.39 Hasil Runtime Algoritma Djikstra Pengiriman Ke-2

76
7. Hasil Rute Pengiriman Algoritma Dijkstra pada Pengiriman Ke-3
Berikut hasil penentuan rute pengiriman ke-3 menggunakan Algoritma
Djikstra.

Gambar 5.40 Maps Hasil Penentuan Rute Pengirima Ke-3


8. Hasil Runtime Algoritma Dijkstra pada Pengiriman Ke-3
Berikut ini hasil runtime penggunaan algoritma dijkstra pada pengiriman
ke-3.

Gambar 5.41 Hasil Runtime Algoritma Djikstra Pengiriman Ke-3

77
9. Hasil Rute Pengiriman Algoritma Dijkstra pada Pengiriman Ke-4
Berikut hasil penentuan rute pengiriman ke-4 menggunakan Algoritma
Djikstra.

Gambar 5.42 Maps Hasil Penentuan Rute Pengirima Ke-4


10. Hasil Runtime Algoritma Dijkstra pada Pengiriman Ke-4
Berikut ini hasil runtime penggunaan algoritma dijkstra pada pengiriman
ke-4.

Gambar 5.43 Hasil Runtime Algoritma Djikstra Pengiriman Ke-4

78
5.2 Grafik
Berikut hasil grafik antar perbandingan sistem lama dengan baru:
1. Grafik Perbandingan Jumlah Barang Pengiriman
Hasil perbandingan jumlah barang pengirman sistem baru dan sistem lama.

Gambar 5.44 Perbandingan Jumlah Barang Pengiriman


Gambar diatas menunjukan jumlah barang sistem baru lebih optimal
dibandingkan jumlah barang pada sistem lama.

2. Grafik Perbandingan Bobot Pengiriman


Hasil perbandingan grafik bobot pengirman sistem baru dan sistem lama.

79
Gambar 5.45 Perbandingan Bobot Pengiriman
Gambar diatas menunjukan bobot pengiriman sistem baru lebih optimal
dibandingkan bobot pengiriman sistem lama.

3. Grafik Perbandingan Jarak Tempuh Pengiriman


Hasil perbandingan grafik jarak tempuh pengirman sistem baru dan sistem
lama.

Gambar 5.46 Perbandingan Jarak Tempuh Pengiriman


Gambar diatas menunjukan jarak tempuh sistem baru lebih pendek
dibandingkan jarak tempuh sistem lama.

80
4. Grafik Perbandingan Waktu Tempuh Pengiriman
Hasil perbandingan grafik waktu tempuh pengirman sistem baru dan sistem
lama.

Gambar 5.47 Perbandingan Waktu Tempuh Pengiriman


Gambar diatas menunjukan waktu tempuh sistem baru lebih cepat
dibandingkan waktu tempuh sistem lama.
5. Grafik Perbandingan Penggunaan Bahan Bakar Minyak
Jika diketahui penggunaan bahan bakar minyak 15km / liter maka berikut
hasil perbandingan penggunaan bahan bakar sistem lama dengan sistem
baru.

Gambar 5.48 Gambar Perbandingan Penggunaan Bahan Bakar Minyak

81
Dari Gambar berikut perbandingan penggunaan bahan bakar minyak pada
sistem baru lebih sedikit dibanding sistem lama sehinnga sistem baru lebih
efisien dibandingkan sistem lama.

6. Grafik Perbandingan Biaya Bahan Bakar Minyak


Perbandingan biaya bahan bakar minyak disesuaikan dengan pembulatan ke
atas pada penggunaan bahan bakar minyak yang telah dihitung sebelumnya,
dengan biaya bensin Rp 7650,00 per liter.

Gambar 5.49 Gambar Perbandingan Biaya Bahan Bakar Minyak


Dari hasil perbandingan biaya bahan bakar minyak, pada sistem baru total
biaya penggunaan bahan bakar minyak adalah Rp 114.750,00 sedangkan
pada sistem lama Rp 137.700,00 sehingga pada sistem baru lebih efisien
dibandingkan dengan sistem lama.

7. Grafik Perbandingan Total Pendapatan


Perbandingan hasil pendapatan yang diperoleh setelah perhitungan
pengeluaran serta pendapatan yang diterima.

82
Gambar 5.50 Gambar Perbandingan Pendapatan
Dari hasil perbandingan total pendapatan, dengan 20 alamat penerima dan
jumlah pendapatan biaya ongkos kirim sebesar Rp 250.000,00, pada sistem
baru total pendapatan yang diperoleh Rp 135.250,00 sedangkan pada sistem
lama Rp 112.300,00 sehingga perolehan pendapatan pada sistem baru lebih
tinggi dibandingkan dengan sistem lama.

83
BAB VI
KESIMPULAN DAN SARAN

6.1 Kesimpulan
Sistem Pemaksimalan Pendapatan Pengiriman Barang dengan Metode
Knapsack dan Algoritma Dijkstra yang dibangun dapat membantu ekspedisi
pengiriman barang dalam memaksimalkan pendapatan. Berikut ini kesimpulan
berdasarkan hasil uji coba sistem yang dilakukan, sebagai berikut.
1. Dari hasil dan pembahasan diatas proses muat barang dapat dilakukan lebih
cepat dibanding dengan sistem lama yang membutuhkan waktu 2 jam.
Sehingga lebih efektif dalam proses muat barang dan dapat digunakan untuk
menambah waktu proses pengantaran.
2. Sistem yang dibangun dapat menentukan estimasi waktu proses
pengantaran yang dapat mengatasi keterlambatan dalam proses pengiriman.
Dengan waktu estimasi yang ditentukan dan penentuan rute yang
didapatkan membuat pengiriman lebih cepat. Hal ini dapat meningkatkan
hasil pendapatan pada pengiriman barang.
3. Sistem yang dibangun memperoleh hasil efisiensi dalam penggunaan bahan
bakar sehingga mengurangi biaya pengeluaran operasional dalam
pengiriman. Hal ini dapat mengurangi total biaya pengeluaran.
Berdasarkan kesimpulan hasil rancangan sistem diatas bagaimana membuat sistem
untuk memaksimalkan pendapatan pada ekspedisi pegiriman barang ialah dengan
meningkatkan efektifitas proses muat barang dan meningkatkan efektifitas proses
pengiriman barang maka dapat serta mengefesiensikan pengeluaran dalam
penggunaan bahan bakar dan meningkatkan jumlah pendapatan berdasarkan jumlah
pengantaran yang berhasil dilakukan.
6.2 Saran
Setelah pembuatan rancangan Sistem Pemaksimalan Pendapatan
Pengiriman Barang dengan Metode Knapsack dan Algoritma Dijkstra, berikut
terdapat saran untuk pengembangan selanjutnya.
1. Penambahan parameter biaya pengeluaran sesuai kebutuhan.
2. Penentuan penanggung jawab pengiriman oleh kurir yang ditentukan.
3. Membuat aplikasi untuk kurir dalam menerima daftar pengiriman.

84
DAFTAR PUSTAKA
Abusalim, S. W. G., Ibrahim, R., Zainuri Saringat, M., Jamel, S., & Abdul
Wahab, J. (2020). Comparative Analysis between Dijkstra and Bellman-Ford
Algorithms in Shortest Path Optimization. IOP Conference Series: Materials
Science and Engineering, 917(1). https://doi.org/10.1088/1757-
899X/917/1/012077
Agus Ambarwari, N. W. Y. (2016). Penerapan Algoritma Greedy Pada
Permasalahan Knapsack Untuk Optimasi Pengangkutan Peti Kemas. Iya,
12(January), 44. https://doi.org/10.13140/RG.2.1.2775.6569
Ammar, M. (2019). Implementasi Algoritma Greedy Dalam Menyelesaikan
Knapsack Problem Pada Jasa Pengiriman PT. Citra Van Titipan Kilat (TIKI)
Kota Makassar. Axiomath : Jurnal Matematika Dan Aplikasinya,
1(September), 26–32.
Awasthi, Y., & Sharma, A. (2020). Contrasting of various algorithmic techniques
to solve knapsack 0-1 problem. International Journal on Informatics
Visualization, 4(1), 16–21. https://doi.org/10.30630/joiv.4.1.333
Budihartono, E. (2016). Penerapan Algoritma Dijkstra Untuk Sistem Pendukung
Keputusan Bagi Penentuan Jalur Terpendek Pengiriman Paket Barang Pada
Travel. Senit, 69–78.
https://ejournal.poltektegal.ac.id/index.php/prosiding/article/viewFile/360/34
4
Cantona, A., & Kasyfi, F. (2020). Implementasi Algoritma Dijkstra Pada
Pencarian Rute Terpendek ke Museum Jurnal Teknologi dan Manajemen
Informatika. June. https://doi.org/10.26905/jtmi.v6i1.3837
Devita, R. N., & Wibawa, A. P. (2020). Teknik-teknik Optimasi Knapsack
Problem. Sains, Aplikasi, Komputasi Dan Teknologi Informasi, 2(1), 35.
https://doi.org/10.30872/jsakti.v2i1.3299
Gat. (2015). Perancangan Basis Data Perputakaan Sekolah dengan Menerapkan
Model Data Relasional. Citec Journal, 2(4), 305–3015.
Hapidah, E., & Muhtarulloh, F. (n.d.). ID : 39 Penyelesaian Masalah Knapsack (
0-1 ) Menggunakan Algoritma Greedy Knapsack Problem Solving ( 0-1 )
Using Greedy Algorithms. November 2020, 306–313.
Harahap, M. K. (2019). Pencarian Jalur Terpendek dengan Algoritma Dijkstra. 2,
18–23.
Haryana, K. S. (2008). Pengembangan Perangkat Lunak Dengan Menggunakan
Php. Jurnal Computech & Bisnis, 2(1), 14–21. http://jurnal.stmik-
mi.ac.id/index.php/jcb/article/view/74
Hendini, A. (2016). Pemodelan Uml Sistem Informasi Monitoring Penjualan Dan
Stok Barang. Jurnal Khatulistiwa Informatika, 2(9), 107–116.
https://doi.org/10.1017/CBO9781107415324.004

85
Kendall, kenmeth E., & Kendall, J. E. (2003). Analisis Dan Perancangan Sistem
(5th ed.). PT Intan Sejati.
Kosasi, S. (2013). PENYELESAIAN BOUNDED KNAPSACK PROBLEM
MENGGUNAKAN DYNAMIC PROGRAMMING (Studi Kasus: CV.
Mulia Abadi). Jurnal Informatika Mulawarman Edisi Juli, 8(2), 35–43.
KW, K. D., Fadhli, M., & Sutanto, C. (2010). Penyelesaian Knapsack Problem
Menggunakan Algoritma Genetika. Seminar Nasional Informatika 2010
(SemnasIF 2010), 1(4), 28–33.
Multazam, M. (2020). Perancangan User Interface dan User Experience pada
Placeplus menggunakan pendekatan User Centered Design. Universitas
Islam Indonesia, 1, 8.
Nugroho, N. B., & Anwar, B. (2008). Desain web menggunakan html dan
javascript. Jurnal SAINTIKOM, 4(1), 96–110.
https://lppm.trigunadharma.ac.id/public/fileJurnal/DBEF1-OK-Jurnal10-
Cahyo-BY-DesainWeb1.pdf
Setiyadi, D., & Herlawati. (2019). Structured Query Language ( SQL ) Untuk
Purchase Order ( PO ) Menggunakan SQL Server 2008. Bina Insani ICT
Journal, 6(1), 75–88. http://www.ejournal-
binainsani.ac.id/index.php/BIICT/article/view/1102
Vikaliana, R. (2018). Faktor-Faktor Risiko Risiko Dalam Perusahaan Jasa
Pengiriman. Jurnal Logistik Indonesia, 1(1), 68–76.
https://doi.org/10.31334/jli.v1i1.128

86
LAMPIRAN

LAMPIRAN 1
DOKUMENTASI WAWANCARA

87

Anda mungkin juga menyukai