• Tidak ada hasil yang ditemukan

BAB 2 LANDASAN TEORI

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 2 LANDASAN TEORI"

Copied!
20
0
0

Teks penuh

(1)

LANDASAN TEORI

2.1 Model Cutting Stock Problem 2.1.1 Integer Knapsack

Cutting-stock problem merupakan salah satu satu contoh persoalan dalam Integer Knapsack. Dalam persoalan integer knapsack, diberikan n buah objek yang

masing-masing memiliki nilai bobot dan keuntungan. Akan dipilih objek-objek yang akan dimasukkan ke dalam knapsack (karung) yang memiliki bobot maksimum W sehingga didapat keuntungan yang maksimum. Persoalan ini disebut

Integer Knapsack karena tiap objek hanya memiliki dua status, yaitu terpilih atau

tidak.

Permasalahan tersebut dapat dinyatakan dalam bentuk formal sebagai berikut.

Diberikan n buah objek dengan bobot masing–masing w1, w2, ..., wn dan keuntungan p1, p2, ..., pn. Lalu terdapat sebuah knapsack dengan bobot maksimum K. Solusi dari persoalan diatas dinyatakan dalam vektor n-tupel:

X = {x1, x2, ..., xn}

di mana xi bernilai 1 jika objek ke-i dipilh dan bernilai 0 jika objek ke-i tidak dipilih. Misalnya X = {1, 0, 0} merupakan solusi di mana objek yang dipilih ialah objek ke-1, sedangkan objek ke-2 dan ke-3 tidak dipilih.

(2)

Solusi dihasilkan dengan batasan: maksimumkan

Dengan kendala:

2.1.2 Knapsack 2D

Masalah knapsack 2D merupakan masalah pengisian daerah berdimensi (L,W) dengan n buah persegi dengan ukuran (li, wi) di mana i = 1, 2, ..., n. Profit

adalah suatu nilai yang positif, π1, π1, ..., πn yang berkaitan dengan tiap persegi.

Dengan parameter ini, keuntungan maksimum dari π1z1, π1z2, ..., πnzn dihitung.

Adapun zi adalah suatu nilai positif di mana knapsack dibagi dalam zi bentuk

persegi i, yang mempunyai ukuran (li, wi).

Masalah pemotongan ini hanya mengijinkan terjadinya proses rekursi sisi per sisi, sehingga semua pemotongan dibuat tegak lurus dari satu sisi persegi terhadap yang lainnya. Objek benda dapat mempunyai orientasi yang sudah tepat atau dapat diputar 90o. Tambahan n objek dengan dimensi (wi, li) dengan

keuntungan π1 ditambahkan ketika proses rotasi memungkinkan. Salah satu

algoritma untuk menyelesaikan masalah ini adalah dengan menerapkan dynamic

(3)

Fungsi knapsack F(x, y), didapatkan dari teknik dynamic programming, dengan proses perhitungan, sehingga untuk lokasi (x, y), F(x, y) adalah keuntungan terbesar yang diperoleh dari persegi yang dibuat dari sisi X dan Y dan titik (x, y).

Hal ini memenuhi pertidaksamaan matematis berikut ini yang berhubungan dengan batasan pemotongan yang dapat dilakukan.

0 ≤ x ≤ L, 0 ≤ y ≤ W, F(x, y) ≥ 0, F(x1 + x2, y) ≥ F(x1, y) + F(x2, y), F(x, y1 + y2) ≥ F(x, y1) + F(x, y2), F(li, wi) ≥ πi, (i = 1, 2, …, n)

2.1.3 Metode Sequential Dynamic Programming

Sequential Dynamic Programming adalah suatu teknik matematis yang

biasanya digunakan untuk membuat suatu keputusan dari serangkaian keputusan yang saling berkaitan. Tujuan utama model ini adalah untuk mempermudah penyelesaian persoalan optimasi yang mempunyai karakteristik tertentu.

Ide dasar dynamic programming ini adalah membagi persoalan menjadi beberapa bagian yang lebih kecil sehingga memudahkan penyelesaiannya. Akan tetapi, berbeda dengan linear programming, pada persoalan dynamic programming ini tidak ada formulasi matematis yang standar.

(4)

Karena itu, persamaan-persamaan yang terpilih untuk digunakan harus dikembangkan agar dapat memenuhi masing-masing situasi yang dihadapi. Dengan demikian, antara persoalan yang satu dengan persoalan lainnya dapat mempunyai struktur penyelesaian persoalan yang berbeda.

Keuntungan dari penggunaan dynamic programming adalah dapat memperoleh solusi dari suatu masalah tanpa adanya exponential running time. Setiap objek berbentuk kotak akan diatur posisinya, dan sebuah tabel akan mencatat pemotongan terbaik untuk tiap lokasi. Setelah itu, semua isi tabel akan dibaca untuk menghitung jumlah panjang dan lebar dari objek untuk membuat konfigurasi dari objek yang menghasilkan keuntungan maksimum. Algoritma dari

sequential dynamic programming dapat dilihat pada diagram 2.1. Berikut ini

adalah persamaan matematis relasi yang digunakan untuk mendapatkan algoritma

sequential.

F0 (x, y) = max {0, πj | lj ≤ x Λ wj ≤ y}

Fk (x, y) = max { Fk-1 (x, y), Fk-1 (x1, y) + Fk-1 (x2, y), Fk-1 (x, y1) + Fk-1 (x, y2) }

0 < x1 ≤ x2, x1 + x2 ≤ x, 0 < y1 ≤ y2, y1 + y2 ≤ y.

Pada step 1 algoritma, semua lokasi dalam knapsack diinisialisasi dengan nilai 0. Pada step 2, setiap objek mulai diperhatikan, nilai keuntungan tertinggi diletakkan pada semua lokasi yang memungkinkan. Pada step 3, dilakukan pembacaan isi tabel 2D dari baris yang paling rendah sampai ke baris yang paling tinggi, menjumlahkan semua kemungkinan kombinasi yang dapat dilakukan baik secara vertikal atau horisontal dan menyimpan dua objek yang mempunyai jumlah

(5)

keuntungan tertinggi. Pada diagram 2.1 ditunjukkan bagaimana nilai F(x, y) dihitung secara iterasi. Karena hanya potongan persegi yang digunakan, solusi parsial pada posisi (i, j) dipotong secara paralel menjadi dua bagian, x dan y. Karena simetris, hanya potongan x, mulai dari x = 0 sampai i/2, dan potongan y mulai dari 0 sampai j/2 yang dipertimbangkan untuk setiap (i, j). Algoritma

sequential ini mempunyai waktu proses O(LW(n+L+W)), di mana n adalah jumlah

objek, dan L, W menyatakan dimensi knapsack yaitu panjang dan lebar.

for i = 0 to L // Step 1 for j = 0 to W Fi, j = 0 for i = 0 to n // Step 2 for j = 0 to L for j = 0 to W

if (Ik ≤ i dan wk ≤ j dan πk > Fi, j) Fi, j = πk

for i = 0 to L // Step 3

for j = 0 to W { for k = 0 to

{ sum = Fk, j + Fi-k, j if (sum> Fi, j) Fi, j = sum} for k = 0 to

{ sum = Fk, i + Fi, j-k

if (sum> Fi, j) Fi, j = sum}}

(6)

Program Dinamis (dynamic programming) adalah pemecahan masalah dengan cara menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage), sedemikian sehingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan.

Pada penyelesaian persoalan dengan metode ini: (1) terdapat sejumlah berhingga pilihan yang mungkin,

(2) solusi pada setiap tahap dibangun dari hasil solusi tahap sebelumnya,

(3) menggunakan persyaratan optimasi dan kendala untuk membatasi sejumlah pilihan yang harus dipertimbangkan pada suatu tahap.

Dua pendekatan yang digunakan dalam Dynamic Progamming adalah maju (forward atau up-down) dan mundur (backward atau bottom-up).

Misalkan x1, x2, …, xn menyatakan peubah (variable) keputusan yang harus dibuat masing-masing untuk tahap 1, 2, …, n. Terdapat dua cara gerak dynamic

programming:

a. Program dinamis maju: program dinamis bergerak mulai dari tahap 1, terus maju ke tahap 2, 3, dan seterusnya sampai tahap n. Runtunan peubah keputusan adalah x1, x2, …, xn.

b. Program dinamis mundur: program dinamis bergerak mulai dari tahap n, terus mundur ke tahap n – 1, n – 2, dan seterusnya sampai tahap 1. Runtunan peubah keputusan adalah xn, xn-1, …, x1.

(7)

Secara umum, ada empat langkah yang dilakukan dalam mengembangkan algoritma program dinamis:

1. Karakteristikkan struktur solusi optimal. 2. Definisikan secara rekursif nilai solusi optimal. 3. Hitung nilai solusi optimal secara maju atau mundur. 4. Konstruksi solusi optimal.

Pada penerapan algoritma Dynamic Programming maju (forward) untuk memecahkan persoalan Integer Knapsack,

1. Tahap (k) adalah proses memasukkan barang ke dalam karung (ada 3 tahap). 2. Status (y) menyatakan kapasitas muat karung yang tersisa setelah memasukkan barang pada tahap sebelumnya.

• Dari tahap ke-1, objek ke-1 dimasukkan ke dalam karung untuk setiap satuan kapasitas karung sampai batas kapasitas maksimumnya. Karena kapasitas karung adalah bilangan bulat, maka pendekatan ini praktis.

• Misalkan ketika memasukkan objek pada tahap k, kapasitas muat karung sekarang adalah kapasitas muat karung dikurangi bobot objek k yang dimasukkan: y – wk.

• Untuk mengisi kapasitas sisanya, diterapkan prinsip optimalitas dengan mengacu pada nilai optimum dari tahap sebelumnya untuk kapasitas sisa y – wk ( yaitu fk-1(y – wk)).

(8)

• Selanjutnya, dibandingkan nilai keuntungan dari objek pada tahap k (yaitu pk) plus nilai fk-1(y – wk) dengan keuntungan pengisian hanya k – 1 macam objek,

fk-1(y).

• Jika pk + fk-1(y – wk) lebih kecil dari fk-1(y), maka objek yang ke-k tidak dimasukkan ke dalam karung, tetapi jika lebih besar, maka objek yang ke-k dimasukkan.

Relasi perulangan untuk persoalan ini adalah

f0(y) = 0, y = 0, 1, 2, …, M (basis)

fk(y) = -∞, y < 0 (basis)

fk(y) = max{fk-1(y), pk + fk-1(y – wk)}, (perulangan)

k = 1, 2, …, n

yang dalam hal ini,

• fk(y) adalah keuntungan optimum dari persoalan Integer Knapsack pada tahap k untuk kapasitas karung sebesar y.

• f0(y) = 0 adalah nilai dari persoalan knapsack kosong (tidak ada persoalan

knapsack) dengan kapasitas y,

• fk(y) = -∞ adalah nilai dari persoalan knapsack untuk kapasitas negatif. Solusi optimum dari persoalan Integer Knapsack adalah fn(M).

(9)

Contoh: n = 3

M = 5

Tabel 1. Bobot dan keuntungan barang (n=3)

Sumber: http://fportfolio.petra.ac.id/user_files/03-023/Optimasi.pdf

Tahap 1:

f1(y) = max{f0(y), p1 + f0(y – w1)} = max{f0(y), 65 + f0(y – 2)}

Tabel 2. Tahap 1 solusi Integer Knapsack secara Dynamic Programming Sumber: http://fportfolio.petra.ac.id/user_files/03-023/Optimasi.pdf

Tahap 2:

f2(y) = max{f1(y), p2 + f1(y – w2)} = max{f1(y), 80 + f1(y – 3)}

(10)

Tabel 3. Tahap 2 solusi Integer Knapsack secara Dynamic Programming Sumber: http://fportfolio.petra.ac.id/user_files/03-023/Optimasi.pdf

Tahap 3:

f3(y) = max{f2(y), p3 + f2(y – w3)} = max{f2(y), 30 + f2(y – 1)}

Tabel 4. Tahap 3 solusi Integer Knapsack secara Dynamic Programming Sumber: http://fportfolio.petra.ac.id/user_files/03-023/Optimasi.pdf

(11)

2.2 Perancangan Program Aplikasi 2.2.1 Bentuk Program

Suatu program dapat dibuat dengan dua cara yaitu secara OOP (Object

Oriented Programming) atau secara procedural.

Object Oriented Programming adalah sebuah paradigma pemrograman

yang menggunakan “objek” dan interaksinya untuk mendesain aplikasi dan program komputer. Keunggulan yang membuat OOP semakin banyak digunakan adalah karena sifatnya yang reusable, sehingga sangat cocok untuk membuat aplikasi atau program yang besar. Untuk aplikasi dengan struktur yang sederhana,

OOP akan mempersulit pembuatan program karena programmer harus merancang

objek satu per satu.

Sedangkan procedural programming atau yang juga dikenal dengan

imperative programming adalah pemrograman berdasarkan konsep pemanggilan procedures atau yang sering dikenal sebagai routines, subroutines, methods, dan functions. Setiap procedure mengandung sederetan langkah perhitungan yang

harus dijalankan. Procedures dapat dipanggil kapan saja dalam program, termasuk di dalam procedure itu sendiri. Jika dibandingkan dengan OOP, procedural

programming diperuntukkan bagi pembuatan program dengan struktur yang

(12)

2.2.2 Use Case Diagram

Use Case menunjukkan hubungan interaksi antara aktor dengan use case di

dalam suatu sistem (Mathiassen, 2000, p343) yang bertujuan untuk menentukan bagaimana aktor berinteraksi dengan sebuah sistem. Aktor adalah orang atau sistem lain yang berhubungan dengan sistem.

Ada tiga simbol yang mewakili komponen sistem seperti terlihat pada gambar di bawah ini.

Gambar 4.1 Notasi Use Case Diagram Sumber: Mathiassen (2000, p343)

Menurut Schneider dan Winters, ada lima hal yang harus diperhatikan dalam pembuatan diagram use case (Schneider dan Winters, 1997, p26).

1. Aktor: segala sesuatu yang berhubungan dengan sistem dan melaksanakan

use case yang terkait.

2. Precondition: kondisi awal yang harus dimiliki aktor untuk masuk ke dalam sistem untuk terlibat dalam suatu use case.

(13)

3. Postcondition: kondisi akhir atau hasil apa yang akan diterima oleh aktor setelah menjalankan suatu use case.

4. Flow of Events: kegiatan-kegiatan yang dilakukan pada sebuah proses use

case.

5. Alternative Paths: kegiatan yang memberikan serangkaian kejadian berbeda yang digunakan dalam Flow of Events.

2.2.3 Sequence Diagram

Sequence diagram adalah diagram yang menunjukkan urutan penukaran

pesan oleh sejumlah objek (dan seorang aktor yang optional) di dalam melakukan tugas tertentu.

Sequence diagram menggambarkan bagaimana objek berinteraksi satu

sama lain melalui pesan pada pelaksanaan use case atau operasi. Diagram

sequence mengilustrasikan bagaimana pesan dikirim dan diterima antar objek

(14)

Beberapa notasi diagram sequence terlihat pada gambar di bawah ini.

Gambar 4.3 Notasi Sequence Diagram Sumber: Whitten (2004, p441)

2.2.4 Rekayasa Piranti Lunak

Rekayasa piranti lunak menurut Fritz Bauer (Pressman, 2005, p23) adalah penetapan dan pemakaian prinsip-prinsip rekayasa dalam rangka mendapatkan piranti lunak yang ekonomis yaitu terpecaya dan bekerja efisien pada mesin (komputer).

Menurut Pressman (2005, p24), rekayasa piranti lunak mencakup 3 elemen yang mampu mengontrol proses pengembangan piranti lunak.

1. Metode-metode (methods),

menyediakan cara-cara teknis untuk membangun piranti lunak 2. Alat-alat bantu (tools)

mengadakan dukungan otomatis atau semi otomatis untuk metode-metode seperti CASE (Computer Aided Software Engineering) yang

(15)

mengkombinasikan software, hardware, dan software engineering

database.

3. Prosedur-prosedur (procedurs)

merupakan pengembangan metode dan alat bantu.

Dalam perancangan software dikenal istilah software life cycle yaitu serangkaian kegiatan yang dilakukan selama masa perancangan software. Pemakaian jenis software life cycle yang cocok salah satunya ditentukan oleh jenis bahasa pemrograman yang cocok. Contohnya, Waterfall Model merupakan model yang paling umum dan paling dasar pada software life cycle pada umumnya, Rapid

Application Development (RAD) dan Joint Application Development (JAD) cocok

untuk software berbasis objek (OOP), sedangkan Sync+Stabilize dan Spiral Model yang merupakan pengembangan model waterfall dengan komponen prototyping cocok untuk sebuah aplikasi yang rumit dan cenderung mahal pembuatannya.

Menurut Dix (1997, p180), berikut adalah visualisasi dari kegiatan pada

software life cycle model waterfall.

1. Spesifikasi kebutuhan (Requirement specification)

Pada tahap ini, pihak pengembang dan konsumen mengidentifikasi apa saja fungsi-fungsi yang diharapkan dari sistem dan bagaimana sistem memberikan layanan yang diminta. Pengembang berusaha mengumpulkan berbagai informasi dari konsumen.

(16)

2. Perancangan arsitektur (Architectural design)

Pada tahap ini, terjadi pemisahan komponen-komponen sistem sesuai dengan fungsinya masing-masing.

3. Detailed design

Setelah memasuki tahap ini, pengembang memperbaiki deskripsi dari komponen-komponen dari sistem yang telah dipisah-pisah pada tahap sebelumnya.

4. Coding and unit testing

Pada tahap ini, disain diterjemahkan ke dalam bahasa pemrograman untuk dieksekusi. Setelah itu komponen-komponen diuji apakah sesuai dengan fungsinya masing-masing.

5. Integration and testing

Setelah tiap-tiap komponen diuji dan telah sesuai dengan fungsinya, komponen-komponen tersebut disatukan lagi. Lalu sistem diuji untuk memastikan sistem telah sesuai dengan kriteria yang diminta konsumen.

6. Pemeliharaan (maintenance)

Setelah sistem diimplementasikan, maka perlu dilakukannya perawatan terhadap sistem itu sendiri. Perawatan yang dimaksud adalah perbaikan error yang ditemukan setelah sistem diimplementasikan.

(17)

Gambar 4.8 Software Life Cycle Model Waterfall Sumber: Dix (1997, p181)

2.2.5 Interaksi Manusia dan Komputer

Menurut Shneiderman (2005, p4), Interaksi manusia dan komputer merupakan disiplin ilmu yang berhubungan dengan perancangan, evaluasi, dan implementasi sistem komputer interaktif untuk digunakan oleh manusia, serta studi fenomena-fenomena besar yang berhubungan dengannya.

Pada interaksi manusia dan komputer ditekankan pada pembuatan antarmuka pemakai (user interface). User interface yang dibuat diusahakan sedemikian rupa sehingga seorang user dapat dengan baik dan nyaman menggunakan aplikasi perangkat lunak dibuat.

(18)

Antar muka pemakai (user interface) adalah bagian sistem komputer yang memungkinkan manusia berinteraksi dengan komputer. Tujuan antar muka pemakai adalah agar sistem komputer dapat digunakan oleh pemakai (user

interface), istilah tersebut digunakan untuk menunjuk pada kemampuan yang

dimiliki oleh piranti lunak atau program aplikasi yang mudah dioperasikan dan dapat membantu menyelesaikan suatu persoalan dengan hasil yang sesuai dengan keinginan pengguna, sehingga pengguna merasa nyaman mengoperasikan program tersebut.

A. Program Interaktif

Suatu program yang interaktif dan baik harus bersifat user friendly. (Scheiderman, p15) menjelaskan lima kriteria yang harus dipenuhi oleh suatu program yang user friendly.

1. Waktu belajar yang tidak lama

2. Kecepatan penyajian informasi yang tepat

3. Tingkat kesalahan pemakaian rendah

4. Penghafalan sesudah melampaui jangka waktu 5. Kepuasan pribadi

(19)

B. Pedoman Merancang User Interface

Beberapa pedoman yang dianjurkan dalam merancang suatu program, guna mendapatkan suatu program yang user friendly adalah sebagai berikut.

1. Delapan aturan emas (Eight Golden Rules)

Untuk merancang sistem interaksi manusia dan komputer yang baik, harus memperhatikan delapan aturan emas dalam perancangan antarmuka, seperti: strive for consistency (konsisten dalam merancang tampilan), enable frequent user to use shorcuts (memungkinkan pengguna menggunakan shortcuts secara berkala), offer informative

feed back (memberikan umpan balik yang informatif), design dialogs to yield closure (merancang dialog untuk menghasilkan keadaan

akhir), offer simple error handling (memberikan penanganan kesalahan), permit easy reversal of actions (mengijinkan pembalikan aksi dengan mudah), support internal locus of control (mendukung pengguna menguasai sistem), dan reduce short-term memory load (mengurangi beban jangka pendek pada pengguna).

2. Teori waktu respon

Waktu respon dalam sistem komputer menurut (Scheiderman, p352) adalah jumlah detik dari saat pengguna program memulai aktifitas sampai menampilkan hasilnya di layar atau printer. Pemakai lebih menyukai waktu respon yang pendek, waktu respon yang panjang mengganggu, waktu respon yang pendek menyebabkan waktu

(20)

pengguna berpikir lebih pendek. Waktu respon harus sesuai dengan tugasnya, dan pemakai harus diberi tahu mengenai penundaan yang panjang.

Gambar

Diagram 2.1 Algoritma Sequential Dynamic Programming
Tabel 3. Tahap 2 solusi Integer Knapsack secara Dynamic Programming  Sumber: http://fportfolio.petra.ac.id/user_files/03-023/Optimasi.pdf
Gambar 4.1 Notasi Use Case Diagram  Sumber: Mathiassen (2000, p343)
Gambar  4.3 Notasi Sequence Diagram  Sumber: Whitten (2004, p441)
+2

Referensi

Dokumen terkait

Luaran yang kami harapkan dari program kreativitas mahasiswa kewirausahaan (PKM-K) yang kami jalankan adalah terciptanya inovasi produk berupa Mukenah-In-Rok yaitu

Penjaga kebun binatang mengatakan bahwa jika dia menambahkan 10 tahun dengan umur beruang dan kemudian dua kali lipatnya, beruang akan berumur 90 tahun.. Berapa

Berdasarkan hasil analisis data yang telah dilakukan maka dapat diperoleh pemahaman, Atribut fitur produk, desain produk, dan kinerja produk berpengaruh signifikan

1) Berdasarkan hasil identifikasi faktor SWOT dan hasil validasi oleh pihak expert didapatkan 6 aspek eksternal dan 5 aspek internal serta 39 faktor internal dan 43 faktor

2: 77-88 87 dengan kondisi pada masyarakat nelayan Kelurahan Kota Karang Raya yang merasakan manfaat dari program Bina Lingkungan, manfaat dari program Bina

Valbury Asia Securities or their respective employees and agents makes any representation or warranty or accepts any responsibility or liability as to, or in relation to, the

memberikan hasil akhir rancangan kepada mentor sesuai dengan ketentuan kegiatan aktualisasi sebagai bentuk pertanggungjawaban Rancangan SOP Penyusunan Laporan Realisasi PNBP