IR - PERPUSTAKAAN UNIVERSITAS AIRLANGGA
|
|
|
- Leony Makmur
- 7 tahun lalu
- Tontonan:
Transkripsi
1 Dyah Ayu Puspitasari Hybrid Algoritma Cat Swarm Optimization (CSO) dan Simulated Annealing (SA) untuk Permasalahan Land Allocation. Skripsi ini dibawah bimbingan Dr. Herry Suprajitno, M.Si dan Auli Damayanti, S.Si., M.Si. Departemen Matematika. Fakultas Sains dan Teknologi. Universitas Airlangga. ABSTRAK Skripsi ini bertujuan untuk menyelesaikan masalah alokasi lahan dengan mendapatkan urutan masuk dari lahan komponen yang dapat meminimalkan tinggi lahan yang terpakai menggunakan hybrid algoritma cat swarm optimization dan simulated annealing serta membuat program komputer menggunakan bahasa pemrograman C++. Permasalahan alokasi lahan digambarkan dengan penempatan lahan komponen ke dalam lahan yang tersedia. Beberapa metode telah digunakan untuk menyelesaikan permasalahan alokasi lahan, salah satunya adalah cat swarm optimization. Cat Swarm Optimization (CSO) adalah algoritma yang didapat melalui pengamatan terhadap perilaku sekumpulan keluarga kucing, sedangkan Simulated Annealing adalah metode yang meniru perilaku pergerakan atom atom baja yang dipanaskan kemudian didinginkan secara perlahan. Hybrid algoritma cat swarm optimization dan simulated annealing merupakan algoritma yang menggabungkan proses algoritma cat swarm optimization dan simulated annealing. Proses simulated annealing diletakkan pada solusi terburuk dari cat swarm optimization pada 10 iterasi pertama. Proses hybrid algoritma cat swarm optimization dan simulated annealing dimulai dengan input data dan inisialisasi parameter, membangkitkan posisi dan kecepatan awal, mengevaluasi fungsi tujuan, memberi nilai SPC, penempatan flag, mode seeking, mode tracing, pemilihan solusi untuk diproses dengan algoritma simulated annealing, melakukan proses algoritma simulated annealing terhadap solusi terburuk cat swarm optimization dengan modifikasi, pencarian lokal, pemilihan, dan penurunan suhu. Data yang digunakan berupa 2 jenis data dan diselesaikan dengan bahasa pemrograman C++ menggunakan software Borland C Penyelesaian yang didapatkan menggunakan program hybrid algoritma cat swarm optimization dan simulated annealing untuk data pertama dengan jumlah lahan sebanyak 13 unit dan lebar lahan 200 feet, didapatkan tinggi minimum lahan terpakai adalah 50 feet. Untuk data kedua dengan jumlah lahan 75 unit dan lebar lahan 250 meter, didapatkan tinggi minimum lahan terpakai adalah 222 meter. Kata kunci : Penataan Lahan, Algoritma Cat Swarm Optimization, Simulated Annealing, dan Hybrid. ix
2 Dyah Ayu Puspitasari Hybrid Cat Swarm Optimization Algorithm and Simulated Annealing for Land Allocation Problem. This Thesis was under guidance of Dr. Herry Suprajitno, M.Si and Auli Damayanti, S.Si., M.Si. Mathematics Department. Science and Technology Faculty. Airlangga University. ABSTRACT This thesis has purpose to solve land allocation problem to get the pack order of component land into a square of land so that will minimize used object height using hybrid of Cat Swarm Optimization Algorithm and Simulated Annealing, and making a computer program of it using C++ languange programming. Land allocation problem can be presented by placement of component land into a square of land. Several methods have been used to solve land allocation problems, ones of which is cat swarm optimization. Cat Swarm Optimization (CSO) is an algorithm obtained through observation of the behavior of a family of cats, while Simulated Annealing is a method that mimics the behavior of later heated steel atomic atoms cool down slowly. Hybrid of Cat Swarm Optimization algorithm and Simulated Annealing is an algorithm that combines the process of Cat Swarm Optimization algorithm with Simulated Annealing. Process Simulated Annealing putting on the bad solution Cat Swarm Optimization on the 10 first iterasions. Process hybrid algorithm CSO and SA begins with data input and initialization parameters, raised position and the initial velocity, evaluate the objective function, giving a value of SPC, the placement of the flags, seeking mode, tracing mode, electoral solution to be processed by this algorithm, the process of this algorithm to the solution the worst in the CSO with modifications, local search, selection, and drop in temperature. There s 2 kinds of data being used and solve with C++ programming language using Borland C software. Using hybrid of cat swarm optimization algorithm and simulated annealing with C++ programming language, achieved minimum height from used object is 50 feet for data with 13 component land and object width 200 feet. Second data with 75 component land and object width 250 meters, the minimum height achieved is 222 meters. Key Words : Land Allocation, Cat Swarm Optimization Algorithm, Simulated Annealing, and Hybrid. x
3 DAFTAR ISI Halaman LEMBAR JUDUL... i LEMBAR PERNYATAAN... ii LEMBAR PENGESAHAN NASKAH SKRIPSI... iii LEMBAR PEDOMAN PENGGUNAAN SKRIPSI... iv SURAT PERNYATAAN ORISINALITAS... v KATA PENGANTAR... vi ABSTRAK... ix ABSTRACT... x DAFTAR ISI... xi DAFTAR TABEL... xiii DAFTAR GAMBAR... xv DAFTAR LAMPIRAN... xvii BAB I PENDAHULUAN Latar Belakang Rumusan Masalah Tujuan Manfaat Batasan Masalah... 3 BAB II TINJAUAN PUSTAKA Land Allocation Problemms Masalah Pengepakan Segi Empat 2 Dimensi Strip Packing Problem Algoritma Cat Swarm Optimization Set Solusi dalam Model Seeking Mode Tracing Mode Algoritma Simulated Annealing (SA) x
4 2.5 Hybrid Pengkodean Penentuan Nilai Fitness dan Seleksi Roulette Wheel Algoritma Pengisian Rekursif Borland C Struktur Bahasa C BAB III METODOLOGI PENELITIAN BAB IV PEMBAHASAN Masalah Alokasi Lahan Hybrid Algoritma Cat Swarm Optimization dan Simulated Annealing Input Data dan Inisialisasi Parameter Membangkitkan Solusi Awal Membangkitkan Kecepatan Awal Representasi Permutasi Menghitung Nilai Fungsi Tujuan Menghitung Nilai Fitness Melakukan Penentuan Flag Menentukan Self Position Considering (SPC) Melakukan Proses Mode Seeking Melakukan Proses Mode Tracing Penentuan Solusi Terburuk pada CSO Proses Simulated Annealing Menyimpan Solusi Terbaik Data Contoh Kasus Masalah Alokasi Lahan dengan Menggunakan Data 13 Lahan Komponen yang Diselesaikan Secara Manual Program Implementasi Program pada Contoh Kasus Land Allocation Menggunakan Data 13 Lahan Komponen Menggunakan Data 75 Lahan Komponen xi
5 BAB V PENUTUP Kesimpulan Saran DAFTAR PUSTAKA LAMPIRAN xii
6 DAFTAR TABEL Nomor Judul Tabel Halaman 4.1 Spesifikasi dan Ukuran Departemen Area Komponen dan Dimensi yang Sesuai Populasi Awal Kucing Kecepatan Awal Kucing Hasil Transformasi Kucing pada Populasi Awal Urutan Masuk Lahan Kucing-1 ( ) Subspace Setelah Lahan ke-1 Masuk Subspace Setelah Lahan ke-2 Masuk Subspace Setelah Lahan ke-3 Masuk Subspace Setelah Semua Lahan Masuk Nilai fungsi tujuan masing-masing kucing flag populasi awal Nilai fitness terurut dan SPC populasi awal Hasil update kecepatan kucing Hasil update posisi kucing Hasil transformasi update kucing Perbandingan nilai fitness baru dan nilai fitness lama Proses Pengcopyan Individu 2 Sebanyak SMP-1 Kali Penentuan Dimensi untuk Modifikasi Kandidat Solusi Dalam Seeking Memory Pool Individu Representasi Permutasi dalam SMP-1 individu 2 dan Fleksibilitas Tinggi dan Nilai Fitness Probabilitas Terpilih SMP-1 Individu Probabilitas Relatif SMP Individu Roulette Wheel Individu 2 63 xiv
7 4.26 Kandidat Solusi Dalam Seeking Memory Pool Individu Representasi Permutasi dalam SMP individu 1 dan Fleksibilitas Tinggi dan Nilai Fitness SMP Individu Probabilitas Terpilih dan Probabilitas Relatif SMP Individu 1 ( Roulette Wheel Individu Urutan lahan komponen masuk setelah modifikasi Perbandingan Solusi Terbaik Data 13 Lahan Komponen Perbandingan Solusi Terbaik Data 75 Lahan Komponen 71 xv
8 DAFTAR GAMBAR Nomor Judul Gambar Halaman 2.1 Algoritma Pengisian Rekursif Flowchart Penyelesaian Land Allocation menggunakan Hybrid Algoritma CSO dan SA Flowchart Mode Tracing Flowchart Mode Seeking Prosedur Hybrid Algoritma CSO dan SA Prosedur Input Data dan Inisialisasi Parameter Membangkitkan Populasi awal Membangkitan Kecepatan Awal Prosedur Permutasi Objek Prosedur Memasukkan Lahan ke Lahan yang Tersedia Prosedur menghitung nilai fitness tiap kucing Prosedur penentuan flag Prosedur menentukan Self Position Considering Prosedur update kecepatan pada mode seeking Prosedur update kecepatan pada mode tracing Prosedur update posisi tiap kucing pada mode tracing Prosedur perbandingan fitness lama dan fitness baru Prosedur penentuan solusi terburuk Prosedur proses Simulated Annealing Prosedur menyimpan solusi Terbaik (Global Best) Lahan ke-1 masuk Lahan ke-2 masuk Lahan ke-3 masuk Hasil penempatan lahan 52 xvi
9 DAFTAR LAMPIRAN Nomor Judul Lampiran 1 Data Permasalahan Pengepakan Segi Empat 2D dengan 75 Lahan Komponen 2 Source Code Program 3 Hasil Running Data Kecil 13 Lahan Komponen 4 Hasil Running Data Besar 75 Lahan Komponen xiv
10 BAB I PENDAHULUAN 1.1 Latar Belakang Pada jaman sekarang banyak alokasi penggunaan lahan yang tidak efisien dan tidak sesuai dengan tata letak lahan yang baik. Hal ini menyebabkan berbagai dampak negatif, diantaranya meningkatnya ketidakteraturan tata letak lahan, kerusakan lingkungan, dan hilangnya lahan yang seharusnya dapat digunakan secara optimal. Penggunaan lahan dapat diartikan sebagai proses alokasi sejumlah aktivitas atau fungsi lahan yang berbeda (pertanian, industri, rekreasi atau konservasi) ke dalam unit area yang lebih spesifik. (Stewart et al, 2007). Masalah penataan lahan (land allocation) yakni untuk mengendalikan segala bentuk efisiensi lahan yang telah ditetapkan, agar terwujudnya tata letak lahan yang rapi, produktif, nyaman, serta memberikan dampak positif bagi daerah tersebut. Masalah penataan lahan (land allocation) salah satu contoh aplikasi masalah pengepakan segi empat 2 dimensi. Masalah pengepakan segi empat 2 dimensi adalah masalah penempatan sejumlah item ke objek persegi panjang dengan tujuan meminimalkan ruang obyek yang digunakan. Proses pengepakan tidak boleh ada yang saling tumpang tindih antar item satu dengan item lainnya. (Dereli dan Sena Das, 2006) Permasalahan land allocation yang didasarkan pada prosedur permasalahan pengepakan segi empat 2 dimensi ini harus mempertimbangkan tentang kompleknya masalah yang ada. Selain itu, pengembangan algoritma yang digunakan untuk menyelesaikan masalah land allocation haruslah mudah menyelesaikan masalah yang bertujuan untuk meminimalkan penempatan lahan yang terpakai. 1
11 2 Algoritma Cat Swarm Optimization dikenalkan pertama kali oleh Shu Cuan Chu dan Pe Wei Tsai pada tahun 2007 (Chu dan Tsai, 2007). Pada awal tahun 2013 beberapa studi telah dikembangkan untuk mengaplikasikan Cat Swarm Optimization dalam menyelesaikan berbagai persoalan di dunia nyata. Salah satunya adalah menerapkan Algoritma Cat Swarm Optimization untuk Optimal Power Flow Problem, (Suryakumari, 2013). Menurut Suryakumari (2013), Cat Swarm Optimization memiliki keunggulan performa yang lebih baik dalam menemukan solusi global dibandingkan PSO atau PSO with Weighting Factor. Sedangkan pada algoritma simulated annealing (SA), algoritma ini beranalogi dengan proses annealing (pendinginan) yang diterapkan dalam pembuatan material glassy (terdiri dari butir kristal). Proses annealing dapat didefinisikan sebagai penurunan temperatur secara teratur atau konstan pada benda padat yang sebelumnya sudah dipanaskan sampai keadaan dimana benda tersebut mencapai ground state / freezing point atau dengan kata lain benda mencapai titik bekunya. Sedangkan, kelebihan simulated annealing (SA) ini akan menghindari terjadinya minimum lokal karena algoritma ini merupakan algoritma dengan metode stokastik yang efektif. (Chibante,2010) Berdasarkan uraian di atas, penulis akan melakukan penelitian terhadap masalah land allocation menggunakan hybrid algoritma Cat Swarm Optimization (CSO) dan Simulated Annealing (SA). 1.2 Rumusan Masalah Berdasarkan latar belakang, ada rumusan masalah yang dibahas dalam proposal ini, yaitu: 1. Bagaimana menyelesaikan permasalahan land allocation dengan menggunakan hybrid algoritma Cat Swarm Optimization (CSO) dan Simulated Annealing (SA)?
12 3 2. Bagaimana membuat program dari hybrid algoritma Cat Swarm Optimization (CSO) dan Simulated Annealing (SA) yang dapat digunakan untuk menyelesaikan permasalahan land allocation? 3. Bagaimana mengimplementasikan program tersebut pada contoh kasus? 1.3 Tujuan Tujuan penulisan skripsi ini adalah: 1. Menyelesaikan permasalahan land allocation dengan menggunakan hybrid algoritma Cat Swarm Optimization (CSO) dan Simulated Annealing (SA). 2. Membuat program dari hybrid algoritma Cat Swarm Optimization (CSO) dan Simulated Annealing (SA) yang dapat digunakan untuk menyelesaikan permasalahan land allocation. 3. Mengimplementasikan program pada contoh kasus. 1.4 Manfaat Manfaat penulisan skripsi ini antara lain: 1. Menambah wawasan tentang persoalan Riset Operasional khususnya untuk masalah land allocation. 2. Program komputer yang dibuat diharapkan mampu memberikan solusi dari masalah land allocation. 3. Informasi yang didapat dari skripsi ini dapat dilanjutkan untuk skripsi selanjutnya dengan berbagai modifikasi. 1.5 Batasan Masalah Batasan masalah dalam proposal ini adalah sebagai berikut: 1. Lahan komponen yang digunakan berbentuk persegi..
13 4 2. Tidak memperhatikan aktifitas antar lahan komponen, tetapi hanya memperhatikan penempatan lahan komponen. 3. Setiap lahan komponen sudah dipersiapkan fasilitas yang dibutuhkan lahan tersebut.
14 BAB II TINJAUAN PUSTAKA Pada bab ini dibahas definisi yang digunakan pada pembahasan Hybrid Algoritma Cat Swarm Optimization (CSO) dan Simulated Annealing (SA) untuk Permasalahan Land Allocation. 2.1 Land Allocation Problems Land Allocation Problems merupakan salah satu permasalahan resource allocation problem yang secara umum memiliki dua langkah penyelesaian, yaitu yang pertama adalah menentukan jumlah total lahan komponen, dan yang kedua adalah menentukan lokasi yang optimal dari setiap masing-masing lahan komponen sehingga penggunaan dari lahan yang tersedia menjadi minimal. (Callaghan, dkk, 1999) 2.2 Masalah Pengepakan Segi Empat 2 Dimensi Menurut Dereli dan Sena Das (2006), masalah pengepakan segi empat 2D adalah penempatan sejumlah item berbentuk segi empat (yang kecil) ke dalam satu objek segi empat (yang besar) dalam dua dimensi sehingga dapat meminimalkan tinggi objek yang terpakai. Masalah pengepakan berupa, terdapat n item (segi empat kecil) yang masing-masing memiliki tinggi hi dan lebar wi, i=1,2,...,n dan satu atau lebih objek yang lebih besar (segi empat). Kita diharuskan menempatkan item secara ortogonal tanpa overlap (ujung dari setiap item paralel dengan ujung dari objek) sehingga dapat mengoptimalkan fungsi yang diberikan. (Imahori, dkk, 2007) 5
15 Strip Packing Problem Permasalahan ini merupakan bagian dari masalah pengepakan segi empat. Terdapat n item yang memiliki lebar wi dan tinggi hi 1,2,3,, serta satu objek besar (disebut strip) yang memiliki lebar tetap W, tetapi tingginya H merupakan variabel. Fungsi objektif dari permasalahan ini adalah untuk meminimalkan tinggi dari H sehingga semua item dapat dimasukkan ke dalam strip. Umumnya, secara matematik permasalahan ini dideskripsikan sebagai berikut: Meminimumkan H Kendala: 0,1 (2.1) 0,1 (2.2),,, (2.3) Dengan (xi,yi) adalah koordinat dari ujung kiri bawah dari item ke i. H tinggi dari strip/ objek. Pernyataan (2.1) dan (2.2) menyatakan bahwa setiap item harus ditempatkan ke dalam lahan yang tersedia. Pada pernyataan (2.3) setidaknya satu dari empat pernyataan terpenuhi untuk setiap pasang i dan j. Pernyataan (2.3) sendiri menyatakan bahwa tidak ada dua item yang saling bertumpukan dan menyatakan empat sudut relatif yang dibutukan untuk menghindari overlap. (Imahori, dkk, 2007) 2.3 Algoritma Cat Swarm Optimization Definisi 2.1 Algoritma merupakan suatu himpunan langkah-langkah atau instruksi yang telah dirumuskan dengan baik (well defined) untuk memperoleh suatu keluaran khusus (spesific output) dari suatu masukan khusus (spesific input) dalam langkah yang jumlahnya berhingga. (Chartrand dan Oellermann, 1993)
16 7 Cat Swarm Optimization adalah algoritma yang diusulkan oleh Shu- Chuan Chu dan Pei-Wei Tsai pada tahun 2007, yang didapat melalui pengamatan terhadap perilaku sekumpulan keluarga kucing. Dalam Ant Colony Optimization (ACO) semut digunakan sebagai agent, dan jalur yang dilalui oleh semut-semut tersebut adalah set solusinya. Dalam Particle Swarm Optimization (PSO), posisi-posisi dari kawanan burung digunakan untuk menggambarkan set solusinya. Sedangkan, dalam CSO, sekumpulan keluarga kucing dan model perilakunya digunakan untuk menyelesaikan permasalahan optimasi. Shu-Chuan Chu dan Pei-Wei Tsai (2007) membagi algortima CSO ke dalam dua sub model yang berdasar dari dua perilaku utama kucing, yaitu seeking mode dan tracing mode. Untuk lebih jelasnya langkah-langkah algoritma CSO seperti yang Shu-Chuan Chu dan Pei-Wei Tsai (2007) dalam penelitiannya akan dijabarkan dalam sub bab berikutnya. (Chu dan Tsai, 2007) Set Solusi dalam Model Bagaimanapun bentuk algoritma optimasi, set solusi (hasil) harus ditampilkan dalam suatu cara tertentu. Misalnya dalam Ant Colony Optimization (ACO) semut disimulasikan sebagai agen, dan jalur yang dibentuk oleh semut menunjukkan set solusinya. Dalam CSO, digunakan kucing dan model perilaku kucing untuk menyelesaikan permasalahan optimasi. Dengan kata lain kucing digunakan untuk menggambarkan set solusi. Tahap pertama dalam CSO adalah menentukan berapa banyak kucing akan digunakan dalam iterasi, kemudian menggunakan kucing dalam CSO untuk menyelesaikan permasalahan. Setiap kucing masing-masing memiliki posisi yang tersusun dalam dimensi D, kecepatan untuk setiap dimensi, nilai fitness yang menunjukkan seberapa bagus posisi kucing untuk dijadikan solusi, dan bendera untuk mengetahui apakah kucing berada dalam seeking mode atau tracing mode. Solusi akhir adalah posisi terbaik dari salah satu kucing. CSO akan menyimpan solusi terbaik hingga akhir iterasi. (Chu dan Tsai, 2007)
17 8 Langkah-Langkah Algoritma Cat Swarm Optimization Seperti yang telah dijabarkan sebelumnya, CSO terdiri dari dua sub mode. Untuk mengkombinasikan kedua mode dalam satu algoritma, perlu didefinisikan rasio campuran / mixture ratio (mr) untuk menggabungkan seeking mode dan tracing mode. Dengan mengamati perilaku kucing, dapat diketahui bahwa kucing menghabiskan sebagian besar waktunya untuk beristirahat. Selama beristirahat, kucing mengubah posisinya perlahan dan berhati-hati, terkadang bahkan tetap pada tempatnya. Untuk menerapkan perilaku ini ke dalam CSO, digunakan seeking mode. Perilaku mengejar target diaplikasikan dalam tracing mode. Karena itu maka mr harus bernilai kecil untuk memastikan bahwa kucing menghabiskan sebagian besar waktu dalam seeking mode, seperti di kehidupan nyatanya. Proses CSO dapat digambarkan dalam 6 langkah sebagai berikut: Langkah 1: Bangkitkan N kucing dalam proses. Langkah 2: Sebarkan kucing secara acak dalam ruang solusi berdimensi D dan secara acak pula pilih nilai dalam rentang kecepatan maksimum untuk menjadi kecepatan kucing. Kemudian pilih sejumlah kucing secara sembarang dan masukkan dalam tracing mode sesuai MR, sisanya dimasukkan dalam seeking mode Langkah 3: Hitung nilai fitness masing-masing kucing dengan memasukkan nilai posisi kucing yang telah diubah menjadi representasi permutasi ke dalam fungsi fitness, dan simpan kucing terbaik dalam memori. Perlu diingat bahwa yang perlu disimpan adalah posisi kucing terbaik (xbest ) karena kucing terbaik sejauh ini mewakili solusi terbaik. Langkah 4: Pilih lagi sejumlah kucing dan masukkan dalam tracing mode sesuai mr, sisanya masukkan ke dalam seeking mode. Langkah 5: Pindahkan kucing sesuai benderanya, jika kucingk berada dalam seeking mode, perlakukan sesuai proses seeking mode, sebaliknya perlakukan sesuai tracing mode.
18 9 Langkah 6: Perhatikan iterasi maksimum-nya. Jika telah terpenuhi hentikan program. Sebaliknya ulangi langkah 3 hingga 5. (Chu dan Tsai, 2007) Seeking Mode Sub model ini digunakan untuk memodelkan situasi kucing ketika dalam keadaan beristirahat, melihat sekeliling dan mencari posisi berikutnya untuk bergerak. Dalam seeking mode, didefinisikan empat faktor penting: seeking memory pool (SMP), seeking range of the selected dimension (SRD),counts of dimension to change (CDC), dan self-position considering (SPC) atau mempertimbangkan posisi. SMP digunakan untuk mendefinisikan ukuran memori pencarian untuk masing-masing kucing, yang mengindikasikan titik-titik yang telah dicoba oleh kucing. Kucing tersebut kemudian akan memilih titik dari kelompok memori berdasarkan aturan yang akan dijelaskan kemudian. SRD menyatakan rentang perpindahan dalam dimensi terpilih. Dalam seeking mode, jika suatu dimensi diputuskan berpindah, selisih antara nilai baru dengan yang lama tidak boleh melebihi suatu rentang, yaitu rentang yang didefinisikan oleh SRD. CDC memperlihatkan berapa banyak dimensi yang akan berubah. Keseluruhan faktor inilah yang memegang peran penting dalam seeking mode. SPC merupakan variabel Boolean (bernilai 0 atau 1), untuk memutuskan apakah suatu titik, yang pernah menjadi posisi kucing, akan menjadi kandidat posisi untuk bergerak. Bagaimanapun nilai SPC, entah 0 ataupun 1, tidak akan mempengaruhi nilai SMP. (Chu dan Tsai, 2007) Langkah-langkah seeking mode dapat dideskripsikan dalam 5 tahap: Diasumsikan terdapat sebanyak a kucing berflag 1 dan setiap kucing mempunyai dimensi sebanyak D 1,2,3,,
19 10 Langkah 1: Bangkitkan j tiruan dari posisi kucing1,d, dengan j = SMP. Jika nilai SPC=1, maka j = (SMP 1), kemudian pertahankan posisi saat ini sebagai salah satu kandidat. Langkah 2: Untuk setiap tiruan dari kucing1,d, pilih sebanyak CDC posisi d secara acak, untuk setiap posisi d yang terpilih.tambahkan atau kurangkan SRD persen dari nilai saat ini dan gantikan nilai yang sebelumnya. Langkah 3: Hitung nilai fitness (FS) untuk semua titik kandidat. Langkah 4: Jika semua FS tidak benar benar sama, hitung probabilitas terpilih masing masing titik kandidat dengan menggunakan (2.4), sebaliknya update probabilitas terpilih untuk semua titik sama dengan 1. Langkah 5: hitung probabilitas terpilih komulatif untuk semua titik kandidat dan lakukan roulette wheel untuk menentukan posisi baru dari kucing1,d.. Keterangan: : probabilitas terpilih : Fitness ke, dengan 1,2,..,. : Fitness tertinggi : Fitness terendah Ulangi langkah 1 sampai langkah 5 sebanyak a kali. (Chu dan Tsai, 2007) Tracing Mode Tracing mode adalah sub model yang menggambarkan keadaan ketika kucing sedang mengikuti jejak targetnya. Sekali kucing memasuki tracing mode, kucing tersebut akan bergerak sesuai dengan kecepatannya untuk tiap dimensi. (Chu dan Tsai, 2007)
20 11 Tahapan tracing mode dapat dijabarkan dalam 3 langkah sebagai berikut: Diasumsikan terdapat b kucing yang masuk dalam tracing mode. Langkah 1: Perbarui nilai kecepatan kucing1 untuk setiap dimensi (v1,d) dengan 1,2,3,,. Kemudian update kecepatan didapatkan berdasarkan (2.5),,,, (2.5) 1,2, Keterangan:, : nilai kecepatan kucingk baru pada dimensi d, xbest,d : nilai kecepatan kucingk lama pada dimensi ke d : posisi kucing yang memiliki nilai fitness terbesar xk,d : posisi kucingk pada dimensi ke d. : konstanta tracing : nilai acak dalam rentang [0,1]. Langkah 2: Setelah melakukan upate kecepatan, langkah selanjutnya adalah mengupdate posisi tiap tiap kucing.,,, (2.6) 1,2, Keterangan:, : posisi kucingk baru pada dimensi d, : nilai kecepatan kucingk baru pada dimensi ke d xk,d : posisi kucingk pada dimensi ke d. Langkah 3: Perbarui posisi kucing1 berdasarkan (2.6). Lakukan langkah 1 sampai langkah 3 sebanyak b kali. (Chu dan Tsai, 2007) 2.4 Algoritma Simulated Annealing (SA) Simulated Annealing (SA) adalah salah satu algoritma untuk optimasi yang bersifat umum. Fitur utama algoritma Simulated Annealing (SA) adalah
21 12 kemampuan untuk menghindar dari perangkat minimum lokal, yaitu dengan membiarkan algoritma tersebut tidak hanya menerima solusi yang lebih baik, tetapi juga menerima solusi yang buruk dengan probabilitas tertentu. Annealing merupakan suatu teknik yang dikenal dalam bidang metalurgi yang digunakan dalam mempelajari proses pembentukan kristal dalam suatu materi. Atom atom dari materi ini memiliki energi yang tinggi pada suhu yang tinggi. Hal ini memberikan atom banyak kebebasan dalam kemampuan untuk merestrukturisasi diri mereka sendiri. Seperti saat suhu berkurang, energi dari atom-atom tersebut menjadi berkurang sampai keadaan energi mencapai minimum, dan perlahan-lahan memungkinkan atom-atom yang tadinya bergerak bebas itu pada akhirnya menemukan tempat yang optimum. Simulated Annealing (SA) berjalan berdasarkan analogi dengan proses annealing yang telah dijelaskan. Gerakan bebas dari atom-atom pada materi, direpresentasikan dalam bentuk modifikasi terhadap solusi awal / solusi awal diatur tinggi, solusi sementara yang sudah ada diperbolehkan untuk mengambil modifikasi secara bebas. Bila nilai fungsi evaluasi hasil modifikasi ini membaik ( dalam masalah optimisasi yang berusaha mencari nilai minimum berarti nilainya lebih kecil / downhill). Solusi hasil modifikasi ini akan digunakan sebagai solusi selanjutnya. Bila nilai fungsi evaluasi hasil modifikasi ini memburuk, pada saat temperatur annealing masih tinggi, solusi lebih buruk ( up hill ) ini masih mungkin diterima. Dalam tahap selanjutnya, saat temperatur sedikit demi sedikit dikurangi, maka kemungkinan untuk menerima langkah modifikasi yang tidak memperbaiki nilai fungsi evaluasi semakin berkurang. Secara umum prinsip dalam algoritma simulated annealing (SA) dapat dinyatakan sebagai berikut: 1. Inisialisasi temperatur awal dan temperatur akhir. 2. Inisialisasi individu awal 3. Mengevaluasi individu awal sebagai solusi sementara 4. Modifikasi individu awal dan evaluasi kembali sebagai solusi baru.
22 13 5. Jika maka solusi sementara digantikan solusi baru. Jika tidak maka dibangkitkan bilangan acak r pada interval [0,1]. Hitung probabilitas exp, jika P > r maka solusi baru tetap diterima sebagai solusi sementara. 6. Jika, maka algoritma berhenti. Jika tidak, hitung perubahan temperatur pada iterasi ke - t dengan 0 1. Kemudian kembali ke langkah (4) (Chibante, 2010) 2.5 Hybrid Hybrid algoritma adalah perkawinan antara dua jenis yang berlainan. Sehingga algoritma hybrid dapat dikatakan sebagai gabungan antara dua algoritma. (Milano dan Henterryck, 2010) 2.6 Pengkodean Jenis-jenis pengkodean: 1. Pengkodean Biner Adalah pengkodean yang setiap kromosomnya dinyatakan (disimbolkan) dengan dua bilangan, yaitu 0 dan Pengkodean Nilai Adalah pengkodean yang setiap kromosomnya direpresentasikan sebagai nilai (nilai dapat berupa angka, bilangan real, atau karakter). 3. Pengkodean Permutasi Adalah pengkodean yang setiap kromosomnya direpresentasikan sebagai sebuah urutan bilangan. (Obitko, 1998)
23 Penentuan Nilai Fitness dan Seleksi Roulette Wheel Definisi 2.3 Nilai Fitness adalah nilai keandalan suatu individu pada suatu ukuran populasi tempat individu itu berasal. Individu dengan nilai fitness yang tinggi akan dapat kesempatan lebih besar untuk survive dalam populasi selanjutnya. Rumus pencarian nilai fitness (fitness value) tergantung pada permasalahan yang akan diselesaikan. Untuk melakukan seleksi individu baru dalam mode seeking, sesuai dengan jurnal Shu-Chuan Chu dan Pei-Wei Tsai (2007) dilakukan dengan roulette wheel. Dalam Obitko (1998), seleksi (selection) merupakan proses pemilihan individu, menurut teori evolusi, individu yang terbaik seharusnya bertahan dan membentuk keturunan baru. a. Seleksi Roulette Wheel Sebuah roulette wheel (roda rolet) yang ditempati semua individu dalam populasi. Masing-masing individu menempati luasan menurut nilai fitnessnya. Selanjutnya roda rolet diputar untuk menyeleksi individu. Kromosom dengan fitness yang lebih besar akan terseleksi beberapa kali. (Obitko 1998) Langkah-langkah seleksi roulette wheel dapat dijelaskan sebagai berikut : a. Menghitung nilai fitness setiap kromosom, dinotasikan dengan 1,2,, b. Menghitung jumlah total nilai fitness semua kromosom dalam populasi, dinotasikan F c. Menghitung peluang terpilih dari setiap kromosom, pi = fi/f d. Menghitung peluang kumulatif setiap kromosom, e. Membangkitkan bilangan random antara (0,1) kemudian dinotasikan r
24 15 f. Jika r q1, maka kromosom pertama terpilih; yang lain, pilih kromosom ke i apabila qi-1 < r qi (Gen dan Cheng, 1997) 2.8 Algoritma Pengisian Rekursif Algoritma ini digunakan untuk menempatkan item ke dalam objek. Langkah-langkah algoritma ini adalah: 1. Menempatkan item pertama ke dalam objek (Operasi ini membagi daerah objek menjadi dua subspace). 2. Menempatkan item selanjutnya ke dalam subspace S1. Jika hal ini tidak memungkinkan, maka ditempatkan ke dalam subspace S2. Lakukan prosedur ini hingga seluruh item ditempatkan ke dalam objek. Gambar 2.1 Algoritma Pengisian Rekursif (Dereli dan Das, 2006)
25 Borland C++ Berbicara tentang C++ biasanya tidak lepas dari C, sebagai bahasa pendahulunya. Pencipta C adalah Brian W. Kerninghan dan Dennis M. Ritchie pada sekitar tahun C adalah bahasa pemrograman terstruktur, yang membagi program dalam bentuk sejumlah blok. Tujuannya adalah untuk memudahkan dalam pembuatan dan pengembangan program. Pada mulanya C++ disebut a better C. Nama C++ sendiri diberikan oleh Rick Masciti pada musim panas Adapun tanda ++ berasal dari nama operator penaikan pada bahasa C. Keistimewaan yang sangat berarti pada C++ adalah bahasa ini mendukung pemrograman yang berorientasi obyek. Tujuan utama pembuatan C++ adalah untuk meningkatkan produktivitas pemrograman dalam membuat aplikasi. (Kadir, 2005) C++ diciptakan oleh Bjarne Stoustrup di Laboratorium Bell, AT & T, pada tahun 1980-an. C++ digunakan oleh banyak industri karena efisien, dapat digunakan untuk menyelesaikan masalah dalam segala bidang (fleksibel) dan compiler C tersedia di hampir seluruh jenis komputer (avaible). (Horowitz et.al., 2006) Struktur Bahasa C++ Program C ataupun C++ selalu tersusun dari 4 bagian utama, yaitu: 1. Bagian komentar 2. Bagian pengarah compiler 3. Bagian deklarasi 4. Bagian definisi a. Bagian komentar Program yang baik pada umumnya diberi komentar yang akan membantu orang lain maupun pembuat program ini untuk memahami program yang dibuat. Dalam C atau C++ setiap proposal yang diapit oleh variabel /*...*/ atau setiap baris yang dimulai dengan variabel // dianggap komentar. C++ tidak mengizinkan komentar bersarang (nested comment),
26 17 namun Borland C++ lebih fleksibel dalam hal ini. Pada Borland C++ dapat menggunakan komentar bersarang asalkan opsi cek Nested Comment pada menu Option/Compiler/Source dipilih. b. Bagian pengarah compiler Include adalah salah satu pengarah preprocessor directive yang tersedia pada C++. Preprocessor selalu dijalankan terlebih dahulu pada saat proses kompilasi terjadi. Bentuk umumnya: #include<nama_file> tidak diakhiri dengan tanda semicolon, karena bentuk tersebut bukanlah suatu bentuk pernyataan, tetapi merupakan preprocessor directive. Baris tersebut menginstruksikan kepada compiler yang menyisipkan file lain dalam hal ini file yang berakhiran.h(fileheader) yaitu file yang berisi sebagai deklarasi, contohnya: 1. #include <iostream.h> : diperlukan pada program yang melibatkan objectcout. 2. #include <conio.h> : diperlukan bila melibatkan clrscr(), yaitu perintah untuk membersihkan layar. 3. #include <iomanip.h> : diperlukan bila melibatkan setw(), yang bermanfaat untuk mengatur lebar dari suatu tampilan data. 4. #include <math.h> : diperlukan pada program yang menggunakan operasi sqrt(), yang bermanfaat untuk operasi matematika pengakaran. c. Fungsi main() Fungsi ini menjadi awal dan akhir eksekusi program C++. Main adalah nama judul fungsi. Melihat bentuk seperti itu dapat kita ambil kesimpulan bahwa batang tubuh program utama berada didalam fungsi main(). d. Pengaruh compiler #if, #else, #elif, #endif Digunakan untuk memilih bagian program yang akan dikompilasi. Kompilasi cara ini disebut kompilasi bersyarat dan program yang baik biasanya memanfaatkan teknik ini. e. Pengaruh compiler #ifdef, #ifndef
27 18 Digunakan juga dalam kompilasi bersyarat. #ifdef dapat dibaca: jika didefinisikan dan #ifndef dapat dibaca: jika tidak didefinisikan. Pengaruh compiler ini sering digunakan untuk menandai bahwa suatu file sudah diikutsertakan dalam kompilasi. f. Bagian deklarasi dan definisi Semua program C pada dasarnya tersusun dari rangkaian pemanggilan fungsi yang bekerja atas sekelompok data. Selain pemanggilan fungsi, program C mengandung komponen lain yang disebut statement. Statement C ada dua, yaitu statement yang tidak dapat dieksekusi/non-executable (bila dikompilasi tidak menghasilkan kode objek dan biasanya digunakan untuk mengatur alur program), dan statement yang dapat dieksekusi/executable (bila dikompilasi akan menghasilkan objek). Setiap pemanggilan fungsi maupun statement executable dalam C harus diakhiri dengan tanda titik koma. Dalam contoh program C++ diatas, Return merupakan contoh statement executable yang menginstruksikan agar suatu fungsi mengembalikan nilai balik tertentu. Contoh statement non executable adalah: if, else, dan while. g. Input dan output Dalam C++ input berarti menulis dari sistem dan output berarti membaca ke stream. Bentuk umum output operator: cout<<ekspresi; Bentuk umum input operator: cin>>variabel h. Tanda semicolon Tanda semicolon ; digunakan untuk mengakhiri sebuah pernyataan. Setiap pernyataan harus diakhiri dengan sebuah tanda semicolon. i. Variabel Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu nilai tertentu didalam proses program. Berbeda dengan konstanta yang nilainya selalu tetap, nilai dari suatu variabel diubah-ubah sesuai
28 19 kebutuhan. Untuk memperoleh nilai dari suatu variabel digunakan pernyataan penugasan (assigment statement), yang mempunyai sintaks sebagai berikut: j. Deklarasi variabel variabel = ekspresi; Bentuk umumnya: Nama_tipe nama_variabel; k. Tipe dasar Tipe Dasar Ukuran Memori (byte) Jangkauan Nilai Jumlah Digit Presisi Char hingga Int hingga Long hingga Float 4 3.4E-38 hingga 3.4E Double 8 1.7E-308 hingga 1.7E Long double E-4932 hingga 1.1E (Kadir, A, 2001)
29 BAB III METODE PENELITIAN Adapun langkah-langkah penelitian ini adalah sebagai berikut : 1. Melakukan kajian pustaka yang berhubungan dengan algoritma Cat Swarm Optimization (CSO), Simulated Annealing (SA) dan land allocation. 2. Menerapkan algoritma Cat Swarm Optimization (CSO) dalam permasalahan land allocation dengan prosedur sebagai berikut: a) Menginputkan parameter-parameter CSO, yaitu: jumlah populasi kucing (m), Seeking Memory Pool (SMP), Count Dimension to Change (CDC), Seeking Range Dimension (SRD), Mixing Ratio (MR), max iteration, konstanta tracing (c), stripwidth. b) Menginputkan sejumlah data-data yang berkaitan dengan land allocation. c) Menentukan pengkodean individu. Pengkodean yang akan digunakan pada land allocation adalah pengkodean permutasi. d) Membentuk populasi awal secara random. e) Mengevaluasi nilai fungsi tujuan setiap individu dalam populasi menggunakan algoritma pengisian rekursif. f) Menempatkan Flag Secara Random dengan proporsi sejumlah jumlah seeking kucing akan dibagikan flag=1, dan sejumlah jumlah tracing kucing akan dibagikan flag=0, dengan ketentuan : jumlah seeking=m-mr*m dan jumlah tracing=mr*m g) Menentukan nilai dari Self Position Consideration (SPC) yakni boolean untuk memutuskan suatu titik yang pernah menjadi posisi kucing akan menjadi posisi untuk bergerak. Secara Khusus Proses Penentuan SPC ini adalah sebagai berikut: i. Menentukan jumlah kucing yang terlibat seeking yakni sejumlah jumlah seeking. ii. Melakukan proses pengurutan nilai fitness tiap-tiap kucing yang terlibat dalam iterasi. 20
30 21 iii. Memberi tanda sejumlah jumlah seeking kucing bernilai evaluasi tertinggi dengan SPC=1 dan sisanya SPC=0. h) Menyimpan posisi kucing dengan nilai evaluasi terbesar sebagai xbest. i) Melakukan Mode Tracing (flag = 0) i. Mengupdate kecepatan baru untuk setiap kucing yang terlibat dalam mode tracing dengan formulasi:,,,, 1,2, ii. Periksa apakah kecepatan berada dalam ambang batas yang ditentukan. Jika kecepatan baru melebihi batas, atur nilainya sama dengan batas iii. Mengupdate posisi baru dari setiap kucing yang terlibat dalam mode tracing dengan formulasi:,,, 1,2, iv. Hitung height (h) setiap posisi baru dari kucing dalam mode tracing, nilai fitness dan representasi permutasinya. v. Membandingkan nilai fitness awal dengan nilai fitness baru, jika nilai fitness baru kurang dari nilai fitness awal maka posisi baru diubah kembali menjadi posisi awal. vi. Menyimpan posisi dan jarak dari kucing dalam mode tracing berfitness terbaik. j) Melakukan proses mode seeking (flag = 1): i. Mengambil satu individu kucing yang bermode seeking secara sebarang misal kucinga. ii. Jika nilai boolean Self Position Consideration(SPC) dari kucingk tersebut bernilai 1 maka lakukan langkah-langkah berikut : 1. Buat tiruan dari posisi kucingk sejumlah SMP Ambil satu tiruan dari kucinga.
31 22 3. Tunjuk secara sebarang dimensi yang akan diubah nilainya sampai sejumlah dim=cdc*jumlah dimensi 4. Untuk setiap dimensi yang ditunjuk lakukan penambahan atau pengurangan sebanyak SRD persen dari posisi awal. 5. Cek apakah sejumlah (SMP-1) tiruan telah melalui proses 3 dan 4? 6. Jika belum maka kembali ke langkah 2, jika sudah ke langkah Simpan posisi baru dari setiap kucing tiruan sebagai kandidat solusi seeking dari kucinga iii. Sebaliknya Jika nilai boolean Self Position Consideration(SPC) dari kucinga tersebut bernilai 0 maka lakukan langkah-langkah berikut : 1. Buat tiruan dari posisi kucinga sejumlah SMP. 2. Ambil satu tiruan dari kucinga. 3. Tunjuk secara sebarang dimensi yang akan diubah nilainya sampai sejumlah dim=cdc*jumlah dimensi 4. Untuk setiap dimensi yang ditunjuk lakukan penambahan atau pengurangan sebanyak SRD persen dari posisi awal. 5. Cek apakah sejumlah SMP tiruan telah melalui proses 3 dan 4? 6. Jika belum maka kembali ke langkah 2, jika sudah ke langkah Simpan posisi baru dari setiap kucing tiruan sebagai kandidat solusi seeking dari kucinga iv. Menghitung nilai height (h) dari anggota setiap kandidat solusi seeking. v. Menghitung nilai fitness dari anggota setiap kandidat solusi seeking.
32 23 vi. Jika tidak semua nilai fitness dari setiap anggota kandidat bernilai sama, hitung probabilitas terpilih dari setiap kandidat solusi seeking. Jika tujuan dari fungsi fitness adalah meminimumkan solusi, maka FSb=FSmax dan sebaliknya FSb=FSmin. Sebaliknya Jika nilai fitness dari setiap anggota kandidat solusi seeking sama maka probabilitas terpilih semua kandidat solusi seeking adalah 1. vii. Hitung probabilitas terpilih relatif (Pir) setiap kandidat solusi seeking. viii. Menghitung probabilitas terpilih komulatif (Pik) setiap kandidat solusi seeking dengan formula : P ix. Mulai bangkitkan satu bilangan acak dari interval [0.1] dinotasikan r. x. Jika r P1k, maka kandidat solusi seeking pertama terpilih menjadi solusi seeking. Sebaliknya pilih kandidat solusi seeking ke i sebagai solusi seeking apabila P(i-1)k < r Pik (seleksi roulette wheel). xi. xii. xiii. Posisi kucingk=posisi solusi seeking. Simpan posisi dalam Memory Pool yang memberikan solusi terbaik sebagai gbest seeking Semua kucing berflag=1 telah melalui proses seeking? xiv. Jika belum kembali ke langkah i, jika sudah lakukan proses l. k) Tentukan solusi iterasi dengan menghitung: =min (g,g ) l) Setelah melakukan Mode Seeking dan Mode Tracing dipilih individu terbaik dari masing-masing mode. Kemudian pilih individu terburuk untuk dilanjutkan dengan proses Simulated Annealing (SA).
33 24 m) Jika iterasi saat ini kurang dari atau sama dengan 10 maka menuju langkah berikutnya, jika tidak kembali ke langkah 2.f. 3. Proses Simulated Annealing (SA) a. Modifikasi menggunakan pencarian lokal, yaitu dengan memilih dua lokasi secara acak, kemudian menukarnya. Selanjutnya dihitung fungsi tujuan dari hasil yang diperoleh. b. Menghitung nilai selisih (calculate), evaluasi dilakukan dengan cara membandingkan fungsi tujuan solusi hasil modifikasi atau solusi baru f(xm) dengan fungsi tujuan individu awal atau solusi sementara. i. Jika maka solusi sementara sama dengan solusi baru. ii. Jika > maka dihitung probabilitas penerimaannya menggunakan rumus: Dimana ΔC merupakan selisih nilai fungsi tujuan. Kemudian bangkitkan bilangan real r antara interval [0 1], jika r < P maka solusi baru menggantikan solusi lama, begitu juga sebaliknya. c. Jika looping sudah memenuhi, dilakukan penurunan suhu rumus d. Cek suhu, jika Tb < Takhir, maka proses berhenti. 4. Solusi akhir pada proses simulated annealing menggantikan solusi yang dipilih pada langkah 3.a. 5. Jika maksimum iterasi sudah tercapai maka menuju langkah selanjutnya, jika tidak maka kembali ke langkah 2.f. 6. Membuat program dari algoritma di atas. 7. Mengimplementasikan program pada contoh kasus.
34 25 Start Inisialisasi Parameter Input width (w), height (h) dan strip width Inisialisasi posisi awal kucing dan kecepatan kucing Evaluasi Nilai Fitness tiap kucing C Menentukan flag Menentukan nilai SPC Ya Tidak Flag kucingk=1? Kucingk diproses di mode seeking Kucingk diproses di mode tracing Menentukan individu terbaik dari CSO Menentukan individu terburuk dari CSO Iterasi 10? Tidak B Ya A
35 26 A Melakukan modifikasi menjadi Mengevaluasi individu yang telah dimodifikasi ( )? Tidak Ya Hitung P dan Bangkitkan r Tidak P > r? Ya tetap Penurunan Suhu Tidak Ya C Tidak Max iterasi? B Ya Solusi Terbaik End Gambar 3.1 Flowchart Penyelesaian land allocation menggunakan Hybrid Algoritma Cat Swarm Optimization (CSO) dan Simulated Annealing (SA)
36 27 Start Posisi dan Kecepatan Kucing Ambil satu individu kucing Update Kecepatan Update Posisi Menghitung Fungsi Tujuan Update solusi Tidak Kucing flag = 0 telah berproses Ya Gbest Solusi End Gambar 3.2 Flowchart Mode Tracing
37 28 Start Tidak Ambil satu individu kucing SPC = 1 Ya Buat tiruan sejumlah SMP Ambil salah satu tiruan kucing Buat tiruan sejumlah SMP-1 Isi baris pertama SMP dengan posisi awal Ambil salah satu tiruan kucing Modifikasi Modifikasi Tidak SMP sudah dimodifikasi Ya SMP-1 sudah dimodifikasi Tidak Simpan kandidat solusi Hitung tinggi, nilai fitness, probabilitas terpilih relatif dan kumulatif Bangkitkan satu bilangan real secara acak Seleksi Tidak Kucing flag =1 telah berproses Ya Gbest Solusi End Gambar 3.3 Flowchart Mode Seeking
38 29 Start Probabilitas Terpilih Kumulatif Setiap Individu Kucing Menghitung Nilai Fitness Menghitung Jumlah Total Nilai Menghitung Peluang Terpilih Menghitung Peluang Kumulatif No Bangkitkan Bilangan Random (r) r Prob. Kumulatif Yes Probabilitas Terpilih Kumulatif Pertama Gambar 3.4 Flowchart Seleksi Roullete Wheel
39 BAB IV PEMBAHASAN Pada bab ini akan dijelaskan mengenai penggunaan hybrid algoritma Cat Swarm Optimization (CSO) dan Simulated Annealing (SA) pada masalah land allocation. 4.1 Masalah Alokasi Lahan Persoalan alokasi lahan merupakan masalah penempatan lahan komponen persegi pada lahan yang tersedia, sehingga: 1. Lahan komponen yang akan dialokasikan ditinjau dari fleksibilitas dimensinya. 2. Fleksibilits dimensi lahan komponen akan mempengaruhi penempatan lahan komponen tersebut pada lahan yang tersedia, sehingga dapat meminimalkan area yang dipakai. 4.2 Hybrid Cat Swarm Optimization (CSO) dan Simulated Annealing (SA) Hybrid Cat Swarm Optimization (CSO) dan Simulated Annealing (SA) adalah penggabungan dari proses Cat Swarm Optimization dengan Simulated Annealing dalam aplikasinya merupakan salah satu algoritma heuristik yang dapat digunakan untuk menyelesaikan masalah optimasi. Menurut (Chu dan Tsai, 2007) proses penyelesaian permasalahan tersebut diawali dengan membangkitkan sejumlah m populasi kucing awal, setiap kucing merupakan representasi dari satu set solusi yang terdiri atas n dimensi. Setiap dimensi dimodelkan untuk mempunyai inisialisasi kecepatan awal. Kecepatan awal digunakan untuk memodelkan perilaku sekumpulan kucing yang selalu berpindah-pindah posisi sesuai kecepatannya ketika sedang berburu. Proses berlanjut dengan membagi m populasi awal kucing ini menjadi 2 populasi baru. Yakni populasi mode seeking dan populasi mode tracing. MR (mixing ratio) adalah parameter yang diinisialisasikan untuk menentukan proporsi pembagian kucing ke dalam kedua mode tersebut. 29
40 30 Ilustrasi penggunaan hybrid algoritma Cat Swarm Optimization (CSO) dan Simulated Annealing (SA) dalam Land Allocation telah diuraikan dalam Gambar 4.1 Prosedur hybrid algoritma Cat Swarm Optimization (CSO) dan Simulated Annealing (SA) dapat dilihat pada Gambar 4.1 Prosedur Hybrid Algoritma CSO dan SA Begin input data(); inisialisasi parameter(); bangkitkan populasi awal(); ` bangkitkan kecepatan awal(); hitung fungsi tujuan(); do hitung fitness(); bagikan flag secara acak(); tentukan nilai spc(); lakukan tahap seeking(); lakukan tahap tracing(); if(iterasi<11) proses sa pada individu terburuk(); end while(maks_iterasi) tentukan solusi terbaik(); End Gambar 4.1 Prosedur Hybrid Algoritma CSO dan SA Berikut ini dijelaskan langkah-langkah dalam prosedur algoritma Cat Swarm Optimization (CSO) Input Data dan Inisialisasi Parameter Prosedur ini merupakan prosedur untuk menginput data dan menentukan informasi awal yang dibutuhkan dalam algoritma Cat Swarm Optimization (CSO). Data yang diinputkan adalah data berupa lebar dan tinggi lahan serta lebar objek. Parameter yang diperlukan adalah jumlah populasi kucing yang disimbolkan dengan m, jumlah lahan yang disimbolkan dengan n, Seeking Memory Pool (SMP), Count Dimension to Change (CDC), Seeking Range Dimension (SRD),
41 31 Mixing Ratio (MR), konstanta tracing (c), dan maks_iterasi yang dapat dilihat pada Gambar 4.2 Prosedur Input Data dan Inisialisai Parameter Begin End Jumlah Kucing (Individu)=kucing; Jumlah Seeking Memory Pool=smp; Nilai CDC=cdc; Nilai SRD=srd; Nilai MR=mr; Nilai Beta=beta; Nilai c1=c1; Nilai lebar_wadah=lebar_wadah; Nilai suhu_awal=suhu_awal; Nilai suhu_akhir=suhu_akhir; Gambar 4.2 Prosedur Input Data dan Inisialisasi Parameter Membangkitkan Populasi Awal Populasi awal terdiri dari beberapa individu kucing, yang mereprentasikan urutan lahan masuk ke dalam objek, sebanyak n dimensi. Tiap individu terdiri dari n sebanyak jumlah lahan. Oleh karena itu, untuk membangkitkan populasi awal perlu dibangkitkan bilangan real acak antara 0 dan 1 yang mewakili urutan tiap n dalam individu. Nilai dalam tiap n akan digunakan untuk menentukan lahan mana yang akan diletakkan terlebih dahulu. Prosedur pembangkitkan populasi awal dapat dilihat pada Gambar 4.3 Prosedur Pembangkitan Populasi Awal Begin for i=0 to kucing for j=0 to jumlah lahan data_kucing i,j = random (1,jumlah lahan); end end End Gambar 4.3 Membangkitkan Populasi awal
42 32 Untuk mempermudah pembangkitkan populasi awal, dibuat matriks dengan ukuran m x n Membangkitan Kecepatan Awal Hal yang harus diperhatikan adalah setiap dimensi (n) dari setiap individu juga memiliki inisialisasi lain yakni kecepatan awal (initial velocity). Kecepatan awal adalah suatu bilangan acak yang terkait dengan setiap dimensi dari setiap individu (kucing) yang dapat dilihat pada Gambar 4.4 Prosedur Membangkitan Kecepatan Awal Begin for i=0 to kucing for j=0 to jumlah lahan data_kecepatan i,j = random (1,jumlah lahan); end end End Gambar 4.4 Membangkitan Kecepatan Awal Untuk mempermudah pembangkitan kecepatan awal, dibuat matriks dengan ukuran m x n.
43 Representasi Permutasi Posisi awal dari setiap individu (kucing) merupakan kandidat lahan awal dari permasalahan Land Allocation. Untuk mengubah representasi random dari posisi awal ke dalam bentuk lahan yang diwakili oleh representasi permutasi digunakan Gambar 4.5 sebagai prosedur. Prosedur Konversi ke Dalam Representasi Permutasi Begin for i=0 to m-1 for j=0 to n-1 permutasij=j; end for j=0 to n-1 kucingurut,j=kucingi,j; end z=0; while(z<1) for i1=0 to n-1 if(kucinguruti1<kucinguruti1+1) ii=kucinguruti1; kucinguruti1=kucinguruti1+1; kucinguruti1+1=ii; k=permutasii1; permutasii1=permutasii1+1; permutasii1+1=k; end end j1=0; for i1=0 to n-1 if (kucinguruti1>=kucinguruti1+1) j1=j1+1; end end if (j1==n-2) z=3; end End Gambar 4.5 Prosedur Permutasi Objek
44 Menghitung Nilai Fungsi Tujuan Setelah pembangkitan populasi awal diubah menjadi bentuk permutasi, maka diperoleh urutan masuk lahan kecil ke dalam lahan besar. Dari urutan tersebut dapat diperoleh tata letak lahan kecil dalam lahan besar, sehingga dapat diperoleh pula tinggi lahan terpakai. Tinggi lahan terpakai tersebutlah yang akan diminimalkan sehingga didapatkan hasil yang optimal. Prosedur meletakkan lahan kecil dimulai dengan meletakkan lahan kecil pertama pada bagian ujung kiri bawah objek sehingga terbentuk subspace S1 dan S2. Selanjutnya, lahan kecil kedua diletakkan pada S1 jika memungkinkan, namun jika tidak maka lahan kecil kedua akan diletakkan pada S2. Demikian seterusnya hingga semua lahan kecil diletakkan ke dalam lahan besar. Prosedur meletakkan lahan kecil ke dalam lahan besar disajikan pada Gambar 4.6
45 35 Prosedur Meletakkan Lahan ke dalam Objek Begin for i=1 to n for j=1 to jumlah lahan if j=1 if lebarlahankecil[gen i,j ] <= lebarlahanbesar lebarsubspace i,j =lebarobjek-lebarlahan[gen i,j ]; tinggisubspace i,j =tinggilahan[gen i,j ]; end else lebarsubspace i,j =tinggilahan[gen i,j ]; tinggisubspace i,j =lebarobjek- lebarlahan[gen i,j ]; end end else if pas=0; for k=1 to j-1 if lebarlahan[gen i,j ] <= lebarsubspace & tinggilahan[gen i,j ] <= tinggisubspace for l > k+1 to l=j lebarsubspace i,l = lebarsubspace i,l-1 ; tinggisubspace i,l = tinggisubspace i,l-1 ; end lebarsubspace i,k+1 = lebarsubspace; tinggisubspace i,k+1 = tinggisubspace -c; lebarsubspace i,k = lebarsubspace-lebarlahan[gen i,j ]; tinggisubspace i,k =tinggilahan[gen i,j ]; pas=1; break; end else if tinggilahan[gen i,j ] <= lebarsubspace & lebarlahan[gen i,j ] <= tinggisubspace for l > k+1 to l=j lebarsubspace i,l = lebarsubspace i,l-1 ; tinggisubspace i,l = tinggisubspace i,l-1 ; end lebarsubspace i,k+1 =lebarsubspace; tinggisubspace i,k+1 =tinggisubspace-lebarlahan[gen i,j ]; lebarsubspace i,k =lebarsubspace-tinggilahan[gen i,j ]; tinggisubspace i,k =lebarlahan[gen i,j ]; pas=1; break; end end if pas!=1 if lebarlahan[gen i,j ]<=lebarobjek lebarsubspace i,j =lebarobjek- lebarlahan[gen i,j ]; tinggisubspace i,j = tinggilahan[gen i,j ]; end else lebarsubspace i,j =lebarobjek- tinggilahan[gen i,j ]; tinggisubspace i,j = lebarlahan[gen i,j ]; end end end end End. Gambar 4.6 Prosedur Memasukkan Lahan ke Lahan Yang Tersedia
46 Menghitung Nilai Fitness Dalam skripsi ini, nilai fitness (fitness value) yang didapat setiap individu (kucing) bergantung perhitungan tinggi lahan yang didapat dari representasi permutasi individu tersebut. Cara menghitung nilai fitness kucing ke-i adalah dengan membagi 1 dengan nilai tinggi lahan yang diperoleh tiap set solusi kucing ke-i. Prosedur menghitung nilai fitness setiap kucing dalam populasi dapat disajikan pada Gambar 4.7 Prosedur menghitung nilai fitness tiap kucing Begin for i=0 to m-1 fitnessi=1/jaraki; end End Gambar 4.7 Prosedur menghitung nilai fitness tiap kucing Langkah selanjutnya adalah nilai fitness yang didapatkan dalam proses nilai fitness diurutkan mulai dari yang terbesar hingga yang terkecil untuk digunakan dalam proses penentuan Self Position Considering dan penentuan xbest Melakukan Penentuan Flag Setiap individu (kucing) akan dlahanpatkan ke dalam suatu mode, diantaranya adalah mode seeking atau mode tracing. Gambar 4.8 menunjukkan prosedur penentuan flag dalam Algoritma Cat Swarm Optimization.
47 37 Prosedur penentuan flag Begin jumtracing=mr*m; for i= 0 to m-1 ri=random(m)/m+1; end for i=0 to m-1 urutanrandomi=randomurut(ri,m) end for i= 0 to jumtracing-1 flagurutanrandomi=1; end for i= jumtracing to m-1 flagurutanrandomi=0; end End Gambar 4.8 Prosedur penentuan flag Prosedur diatas adalah proses penentuan flag dilakukan secara random (acak), dengan membangkitkan sejumlah m bilangan random dan menempatkannya pada array ri, dengan i adalah indeks dari individu (kucing). Urutan dari bilangan random dalam array ri secara ascending disajikan dalam array urutan randomi, penempatan flag ditentukan oleh indeks individu (i) yang berkaitan dengan bilangan random terurut dalam array urutan random Menentukan Self Position Considering (SPC) Self Position Considering (SPC) merupakan nilai boolean yang melabeli setiap individu sebelum melakukan mode seeking atau mode tracing. Label ini ditentukan sesaat setelah nilai fitness dari masingmasing individu dalam populasi dihitung. Sebagai catatan dalam konteks ini populasi yang dimaksud adalah populasi awal untuk iterasi pertama, dan populasi gabungan hasil mode seeking dan mode tracing untuk iterasi berikutnya. Secara prosedur penentuan SPC setiap individu dapat dilakukan seperti terlihat pada Gambar 4.9
48 38 Prosedur penentuan SPC tiap individu (kucing) Begin jumseeking=(1-mr)*m; for i=0 to m-1 urutani=fitnessurut(fitness[],fitnessi,m) end for i= 0 to jumseeking-1 spcurutani=1; end for i= jumseeking to m-1 spcurutani =0; end End Gambar 4.9 Prosedur menentukan Self Position Considering Array urutan dalam prosedur diatas memuat urutan indeks kucing dari yang mempunyai nilai fitness terbesar, hingga yang mempunyai nilai fitness terkecil secara terurut dari atas ke bawah (descending) Melakukan Proses Mode Seeking Setelah dilakukan proses penempatan flag, beberapa kucing akan diproses dalam mode seeking. Setiap kucing yang memiliki flag bernilai 1 akan memasuki tahap mode seeking. Prosedur mode seeking ditujukkan pada Gambar 4.10
49 39 Pseudocode proses seeking Begin if(spc(grup_seeking(i))==1 for j=0 to smp for k=0 to jumlahlahan Memory_pool(j,k)=data_random(grup_seeking(i))(k) end for for k=0 to jumlahlahan terpilih[k]=-1; end for if j>0 Modifikasi Memory_Pool() end if end for end if else if(spc(grup_seeking(i))!=1 for j=0 to smp for k=0 to jumlahlahan terpilih[k]=-1; end for Modifikasi Memory_Pool() end for end if End Gambar 4.10 Prosedur update kecepatan pada mode seeking Melakukan Proses Mode Tracing Setelah dilakukan proses penempatan flag secara random (acak), kemudian beberapa kucing akan diproses dalam mode tracing. Secara operasional dalam mode ini setiap individu akan mengubah representasi kecepatan yang lama menjadi representasi kecepatan yang baru. Proses update kecepatan ini dipengaruhi oleh memory yang dimiliki setiap kucing, yang berfungsi mengingat posisi terbaik yang sejauh ini diperoleh swarm (xbest). Hal ini dapat dijelaskan pada prosedur dalam Gambar 4.11
50 40 Prosedur update kecepatan pada mode tracing Begin for i=0 to jumtracing-1 acak=random(100); acak1=random(99); d=acak/acak1; for j=0 to n-1 hj=xi,j; end for j=0 to n-1 m=xbest,j-hj; s=d*c*m; end for j=0 to n-1 vbarui,j=vi,j+s; end end End Gambar 4.11 Prosedur update kecepatan pada mode tracing Untuk mendapatkan set solusi yang lebih baik, dalam fase ini representasi kecepatan baru digunakan oleh setiap individu (kucing) ini untuk mengubah posisinya. Prosedur dalam menentukan posisi baru dapat dilihat dalam Gambar 4.12 Prosedur mengupdate posisi lama setiap kucing Begin End for i= 0 to jumtracing-1 for j = 0 to n-1 kucingbarui,j= kucingi,j +vbarui,j; end end Gambar 4.12 Prosedur update posisi tiap kucing pada mode tracing Dalam skripsi ini,ditambahkan beberapa prosedur tambahan salah satunya adalah untuk setiap individu dilakukan pengecekan apakah set
51 41 solusi baru memberikan nilai fitness yang lebih baik dari set solusi lama. Proses ini kemudian disajikan dalam Gambar 4.13 Prosedur perbandingan fitness lama dan fitness baru Begin for i= 0 to jumtracing-1 if(fitnessbi-fitnessi>0) for j=0 to n-1 kucingbarui,j; end end else for j=0 to n-1 kucingbarui,j=kucingi,j; end end end End Gambar 4.13 Prosedur perbandingan fitness lama dan fitness baru Penentuan Solusi Terburuk pada CSO Penentuan solusi terburuk ini menggunakan informasi posisi kucing yang baru setelah melalui proses mode seeking dan mode tracing yaitu dengan cara membandingkan posisi terburuk antara mode seeking dan mode tracing masing-masing kucing yang telah disimpan pada proses diatas. Solusi terburuk yang diperoleh dari proses mode seeking dan proses mode tracing akan dibandingkan dan dicari posisi yang memiliki nilai fungsi tujuan terbesar. Proses penentuan solusi terburuk dapat dilihat dalam Gambar 4.14
52 42 Pseucode penentuan solusi terburuk Begin if(tinggi_best_tracing<tinggi_best) real_tinggi=tinggi_best_tracing end if for i=0 to jumlahlahan real_lahan[i]=lahan_best_tracing[i]; real_variasi[i]=variasi_best_tracing[i]; end for else if(tinggi_best<tinggi_best_tracing) real_tinggi=tinggi_best; for i=0 to jumlahlahan real_lahan[i]=lahan_best[i]; real_variasi[i]=variasi_best[i]; end for end else End Gambar 4.14 Prosedur penentuan solusi terburuk Setelah solusi terburuk di cat swarm optimization diperoleh, maka selanjutnya adalah solusi terburuk pada cat swarm optimization diproses engan menggunakan algoritma simulated annealing Proses Simulated Annealing Pada proses ini individu terburuk dari cat swarm optimization akan diproses menggunakan simulated annealing. Pada proses annealing pertama yang dilakukan adalah modifikasi. Proses mutasi yang digunakan dalam proses modifikasi adalah pencarian lokal, metode yang digunakan adalah resiprochal exchange mutation. Resiprochal exchange mutation merupakan suatu metode mutasi dengan cara memilih secara acak dua lokus kemudian ditukar. Prosedur proses algoritma simulated annealing dapat dilihat pada Gambar 4.15
53 43 Prosedur Simulated Annealing Begin End select_1=random(jumlahlahan-1); select_2=random(jumlahlahan-1); while(select_1==select_2 select_1>select_2); for int sel=0 to jumlah lahan data_random[counter_sa][sel]; end for int j=select_1;j<=select_1+mutatecounter;j++) tempsa=solusi_sa[j]; solusi_sa[j]=solusi_sa[select_2]; solusi_sa[select_2]=tempsa; select_2--; end evaluasi solusi sa(); penentuan tolak atau terima solusi(); suhu=suhu_sekarang*beta; suhu_sekarang=suhu; end Gambar 4.15 Prosedur proses Simulated Annealing Menyimpan Solusi Terbaik (Global Best) Prosedur ini merupakan prosedur untuk menyimpan solusi terbaik pada setiap iterasinya. Nilai fungsi tujuan terbaik merupakan nilai fungsi tujuan dari solusi yang terbaik. Solusi terbaik ini dlahanukan diantara solusi CSO dan SA sehingga dapat pula disebut global best. Perlu diingat bahwa proses ini dilakukan pada tiap iterasi, sehingga akan diperoleh solusi terbaik setiap iterasinya maka untuk keseluruhan akan didapat sejumlah t solusi terbaik (global best). Prosedur penyimpanan solusi terbaik ditunjukkan pada Gambar 4.16
54 44 Prosedur menentukan gbest Begin for j=0 to individu-1 if (ftgbest > ftj) then for k= 0 to n-1 individugbest k =individu k,j xgbest k =x k,j end for k end if end for j End Gambar 4.16 Prosedur menyimpan solusi Terbaik (Global Best) 4.3 Data Untuk mengimplementasikan penggabungan algoritma cat swarm optimization dan simulated annealing pada Land Allocation, akan digunakan data yang diambil dari Alison R. Callaghan (1999) dan Egy Rifky (2015). Data yang digunakan dalam skripsi ini dibagi menjadi 2 yaitu : 1. Data dengan 13 lahan komponen 2. Data dengan 75 lahan komponen Data secara lengkap dapat dilihat pada Tabel 4.1 dan Lampiran Contoh Kasus Masalah Alokasi Lahan dengan Menggunakan Data 13 Lahan Komponen yang Diselesaikan Secara Manual Misalkan pada sebuah gedung terdapat ruangan yang berukuran WxH dengan W = 200 feet dan H = feet. Pada ruangan tersebut akan dialokasikan lahan untuk departemen departemen yang ukuran masingmasing departemen memiliki fleksibilitas dimensi yang dapat dilihat pada Tabel 4.1 dan Tabel 4.2
55 45 Tabel 4.1 Spesifikasi dan Ukuran Departemen No. Nama Departemen Size in ft. 1 Police Jail Court room Judge s chamber License bureau Treasurer s office Welfare office Health dept Sanitation Engineer s office Rec. Dept Mayor s office Town council room 750 Tabel 4.1 dapat diubah dengan fleksibilitas dimensi sebagai berikut: Tabel 4.2 Area Komponen dan Dimensi yang Sesuai Komponen Total Dimensi (ft.) Area x19 76x20 40x38 38x40 20x76 19x x5 66x10 33x20 20x33 10x66 5x x32 96x40 64x60 60x64 40x96 32x x5 30x10 20x15 15x20 10x30 5x x10 60x15 36x25 30x30 15x60 10x x10 60x15 36x25 30x30 15x60 10x x10 60x15 36x25 30x30 15x60 10x x10 60x15 36x25 30x30 15x60 10x x23 92x25 50x46 46x50 25x92 23x x10 60x15 36x25 30x30 15x60 10x x5 30x10 20x15 15x20 10x30 5x x10 50x15 30x25 25x30 15x50 10x75 Sumber: Alison R. Callaghan; Anoop R.Nair; Kemper E. Lewis, 1999, ASME Design Engineering Technical Conferences.
56 46 Penyelesaian: Untuk menyelesaikan alokasi lahan dengan data 13 komponen lahan menggunakan prosedur hybrid algoritma CSO dan SA, dengan langkahlangkah sebagai berikut: Langkah 1: Inisialisasi Parameter Parameter-parameter dari hybrid algoritma Cat Swarm Optimization (CSO) dan Simulated Annealing (SA) yang akan digunakan untuk masalah alokasi lahan adalah sebagai berikut: jumlah populasi kucing (m) = 3, Seeking Memory Pool (SMP) = 4, Count Dimension to Change (CDC) = 0.33, Seeking Range Dimension (SRD) = 0.5, Mixing Ratio (MR) = 0.33, 100, 20, 0,09 Langkah 2: Membangkitkan Individu Proses membangkitkan individu dilakukan dengan membangkitkan secara acak bilangan real antara 0 sampai 1 sebanyak a x b untuk setiap individu. Dimana a adalah banyaknya kucing dan b adalah banyaknya lahan komponen. Individu baru ditujukkan pada Tabel 4.3 Individu Awal Tabel 4.3 Populasi Awal Kucing Urutan Lahan Komponen Masuk Dengan,, dan merupakan notasi yang melambangkan kucing 1, kucing 2, dan kucing 3. Langkah 3: Membangkitkan Kecepatan Awal Proses pembangkitkan kecepatan awal kucing analog dengan proses membangkitkan posisi awal kucing yaitu dengan membangkitkan secara
57 47 acak bilangan real antara 0 sampai 1 sebanyak a x b untuk setiap individu. Dimana a adalah banyaknya kucing dan b adalah banyaknya lahan komponen. Hasil pembangkitkan kecepatan awal kucing disajikan pada Tabel 4.4 Kecepatan Awal Tabel 4.4 Kecepatan Awal Kucing Urutan Lahan Komponen Masuk Dengan,, dan merupakan notasi yang melambangkan kecepatan kucing 1, kecepatan kucing 2, dan kecepatan kucing 3. Langkah 4: Evaluasi nilai fungsi tujuan beserta fleksibilitas dimensi Sebelum menghitung nilai fungsi tujuan, elemen dari masing-masing kucing ditransformasikan ke bilangan asli dengan cara tiap elemen kucing dengan mengurutkan bilangan asli yang acak tersebut dari yang terkecil hingga yang terbesar beserta fleksibilitas dimensinya secara acak. Hasil transformasi disajikan dalam Tabel 4.5 Individu Tabel 4.5 Hasil transformasi kucing pada populasi awal Urutan Lahan Komponen Masuk Dimensi Ukuran Dimensi Ukuran Dimensi Ukuran
58 48 Kemudian mencari dimensi ukuran lahan yang telah dimiliki oleh masing-masing lahan yang tersedia. Pada data yang diperoleh memiliki 6 variasi dimensi ukuran, sehingga pada masing-masing lahan diacak bilangan asli pada interval [1 6]. Dari Tabel 4.5 diketahui bahwa lahan komponen yang dimiliki oleh kucing-1 ( ) adalah 11,2,9,5,3,6,10,12,13,1,4,8,7 dengan dimensi ukuran lahan ke 4,3,2,2,1,1,1,5,1,2,5,3,1. Begitu juga dengan kucing-2 ( dan kucing-3 ( ). Setelah urutan komponen lahan yang akan diletakkan sudah diketahui beserta dimensi ukurannya, langkah selanjutnya adalah menghitung nilai fungsi tujuan. Perhitungan nilai fungsi tujuan merupakan representasi untuk memperoleh tinggi dari objek yang terpakai (H). Nilai fungsi tujuan diperoleh melalui proses penempatan lahan ke dalam objek wadah berdasarkan prosedur algoritma rekursif. Dalam setiap space, W merupakan lebar space yang terbentuk dari lebar space awal dikurangi dengan lebar lahan masuk, dan H merupakan tinggi dari space (tinggi lahan masuk). Proses perhitungan fungsi tujuan diuraikan sebagai berikut: Misalnya kucing-1 ( ) yang mempunyai urutan masuk lahan sebagai berikut: Individu Tabel 4.6 Urutan Masuk Lahan Kucing-1 ( ) Urutan Lahan Komponen Masuk Dimensi Ukuran Komponen lahan pertama yang akan diletakkan adalah lahan komponen yang ke-11 dengan dimensi ukuran ke-4. Menurut Tabel 4.2 lahan komponen ke-11 memiliki ukuran 30 dan 30. Karena merupakan lahan pertama, maka akan terbentuk space baru S1 dan S2 seperti pada Tabel 4.7 dan Gambar Space S1 terbentuk dengan ukuran W w11 = = 170, sedangkan H dengan ukuran 30 karena tinggi w11 = 30.
59 49 Tabel 4.7 Subspace setelah lahan komponen ke-1 masuk Sisa Ukuran Subspace Lahan S1 S2 W H 30 - Height (H) 200 Width (W) Gambar 4.17 Lahan ke-1 masuk 2. Selanjutnya diletakkan lahan komponen yang kedua yaitu lahan komponen yang ke-2 dengan dimensi ukuran ke-3. Menurut Tabel 4.2 lahan komponen ke-2 memiliki ukuran 33 dan 20. Lahan ini dapat dlahanpatkan pada subspace S1. Sehingga terbentuk space baru S11 dan S12 seperti pada Tabel 4.8 dan Gambar 4.18 Tabel 4.8 Subspace setelah lahan komponen ke-2 masuk Sisa Ukuran Subspace Lahan S11 S12 S2 W H
60 50 Height (H) 200 Width (W) Gambar 4.18 Lahan ke-2 masuk 3. Selanjutnya diletakkan lahan komponen yang ketiga yaitu lahan komponen yang ke-9 dengan dimensi ukuran ke-2. Menurut Tabel 4.2 lahan komponen ke-9 memiliki ukuran 60 dan 15. Lahan ini dapat dlahanpatkan pada subspace S11. Sehingga terbentuk space baru S111 dan S112 seperti pada Tabel 4.9 dan Gambar 4.19 Tabel 4.9 Subspace setelah lahan komponen ke-3 masuk Sisa Ukuran Subspace Lahan S111 S112 S12 S2 W H
61 51 Height (H) 200 Width (W) Gambar 4.19 Lahan ke-3 masuk Demikian juga dengan komponen lahan lainnya dilakukan dengan proses yang sama. Sehingga, setelah semua lahan kompenen dimasukkan, maka dapat dihitung tinggi minimum dengan menjumlahkan tinggi subspace yang terbentuk. Sehingga didapat hasil tinggi dari wadah yang terpakai adalah 95 square feet seperti pada Tabel 4.10 dan Gambar 4.20 Tabel 4.10 Subspace setelah semua lahan masuk Sisa Ukuran Subspace Lahan S111 S112 S12 S211 S212 S22 S31 S32 S4 S5 W H
62 52 h 4 =10 h 3 =23 Height (H) h 2 =32 h 1 = Width (W) Gambar 4.20 Hasil penempatan lahan Selanjutnya dengan cara yang sama untuk menghitung fungsi tujuan dari tiap-tiap individu kucing Hasil lengkapnya terlihat pada Tabel 4.11 Tabel 4.11 Nilai fungsi tujuan masing-masing kucing Individu f(x) Langkah 5: Menghitung nilai fitnes dari fungsi tujuan Menghitung nilai fitness berdasarkan nilai fungsi tujuan. Nilai fitness dirumuskan dengan: 1
63 53 Perhitungannya adalah sebagai berikut: 1. Kucing ke-1 ( ) Kucing ke-2 ( ) Kucing ke-3 ( ) Langkah 6: Penempatan Flag Sebelumnya diperkenalkan formulasi berikut: Penentuan flag setiap kucing dilakukan secara acak dengan tujuan menempatkan sejumlah Jumlah seeking kucing ke dalam mode seeking (flag=1), dan sejumlah Jumlah tracing kucing ke dalam mode tracing (flag=0). Dalam contoh kasus, parameter yang digunakan adalah mr = 0.33 dan m = 3. Jadi proporsi pembagian ini adalah 2 : 1, 2 individu bermode seeking dan 1 individu bermode tracing. Hasil pembagian flag secara random ini dapat dilihat dalam Tabel 4.12 Tabel 4.12 flag populasi awal Individu Random Urutan Flag 0, , ,
64 54 Langkah 7: Memberi Nilai SPC Informasi tentang nilai fitness dari setiap individu diatas penting untuk menetapkan nilai boolean dari Self Position Considering (SPC). Karena Self Position Considering (SPC) ditentukan di dalam populasi dengan nilai fitness yang tertinggi diberi nilai 1. Hasil Penentuan SPC setiap individu dapat terlihat dalam Tabel 4.13 Tabel 4.13 Nilai fitness terurut dan SPC populasi awal Individu Nilai Fitness SPC Dalam Tabel 4.13 (1 individu bernilai label SPC = 1 dan sisanya yang belum mempunyai label SPC secara otomatis mendapatkan label SPC = 0 ). Langkah 8: Tracing Mode Dari Tabel 4.13 dapat dilihat bahwa individu yang masuk ke dalam mode tracing adalah individu 3. Sesuai dengan jurnal (Chu,et all,2007) setiap individu yang tersaring dalam mode ini akan mengupdate kecepatannya dengan rumus : 1,2,3,, 1,2,, xbest terpilih dari iterasi-1 adalah dengan posisi awal yaitu: Berikut adalah proses update kecepatan baru untuk individu. Telah diketahui sebelumnya kecepatan awal dan posisi awal dari individu adalah sebagai berikut:
65 55 Dengan bilangan real secara acak = , maka akan dilakukan proses update kecepatan dengan cara berikut: Untuk d = ,697 Dengan cara yang sama untuk masing-masing komponen pada individu kucing, maka diperoleh update kecepatan baru pada Tabel 4.14 Tabel 4.14 Hasil update kecepatan kucing 3 Individu Kecepatan Baru Setelah nilai kecepatan kucing 1 diperbarui maka langkah selanjutnya adalah memperbarui posisi kucing 1. Untuk memperbarui posisi kucing 1 diperlukan nilai kecepatan yang baru kucing 1 dengan menggunakan rumus: Untuk d=
66 56 Dengan cara yang sama untuk masing-masing komponen pada individu kucing, maka diperoleh update posisi baru Tabel 4.15 Tabel 4.15 Hasil update posisi kucing 3 Individu Posisi Baru Kemudian ditransformasikan ke bilangan asli dengan cara mengurutkan dari yang terkecil hingga yang terbesar. Hasil transformasi disajikan dalam Tabel 4.16 Kucing Tabel 4.16 Hasil transformasi update kucing 3 Urutan Lahan Komponen Masuk Dimensi Ukuran Diperoleh tinggi sebesar 100 feet dengan urutan lahan masuk dengan dimensi ukuran Kemudian dicari nilai fitness:
67 57 1. Kucing ke-3 baru ( baru) Perbandingan nilai fitness baru dan nilai fitness lama disajikan dalam Tabel 4.17 Tabel 4.17 Perbandingan nilai fitness baru dan nilai fitness lama Individu Nilai fitness baru Nilai fitness lama ,00833 Individu Karena pada individu 3 nilai fitness baru > nilai finess lama, maka solusi dari tracing diterima. Sehingga nilai local best untuk mode tracing adalah 100 feet dengan dengan urutan lahan masuk dengan dimensi ukuran Urutan Lahan Komponen Masuk Dimensi Ukuran Langkah 9: Seeking Mode Dari Tabel 4.13 dapat dilihat bahwa individu yang masuk dalam mode seeking adalah individu 2 dan individu 1, dapat dilihat juga dari Tabel 4.13 bahwa SPC individu 2 = 1 dan SPC individu 1 = 0. Terdapat 6 parameter yang diinputkan dalam algoritma Cat Swarm Optimization (CSO), 3 diantaranya digunakan dalam mode seeking. Parameter-parameter tersebut antara lain Seeking Memory Pool (SMP) = 4, Change Dimension to Change (CDC) = 0,33 dan Seeking Range Dimension (SRD) = 0,5 Berikut diberikan operasi mode seeking untuk individu 2, dengan SPC = 1 Posisi awal dari individu 2 adalah sebagai berikut:
68 Karena SPC individu 2 = 1, maka individu 2 akan di copy sebanyak SMP-1. Tabel 4.18 Proses Pengcopyan Individu 2 Sebanyak SMP-1 Kali Individu Posisi Setelah posisi kucing 2 di copy sejumlah SMP-1, maka langkah selanjutnya adalah proses modifikasi pada sejumlah dimensi untuk setiap tiruan kucing. Langkah mutasi dari individu 2 adalah sebagai berikut: Hitung jumlah dimensi yang akan dimutasi/dimodifikasi dengan rumus: Jumlah Modifikasi = CDC * n = 0,33*13 = 4,2 4 Jadi sejumlah 4 dimensi yang akan dimodifikasi untuk setiap tiruan kucing 2. Sebanyak 4 dimensi yang akan dimodifikasi dipilih secara acak, dilakukan dengan cara membangkitkan bilangan real pada interval [0 1] secara acak kemudian diurutkan dari yang terkecil hingga terbesar. Penentuan dimensi untuk modifikasi selengkapnya dapat dilihat pada Tabel 4.19
69 59 Posisi Bil.real secara acak (Modifikasi) Urutan Status Tabel 4.19 Penentuan Dimensi untuk Modifikasi Dimensi (lahan komponen) M - - M M M Pada Tabel 4.19 dimensi dengan status M merupakan dimensi yang terpilih untuk dimodifikasi yaitu dimensi (lahan komponen) ke 13,4,12, dan 1. Dengan cara yang sama lakukan penentuan dimensi yang akan dimodifikasi untuk tiruan kucing-kucing yang lain. Dibawah ini merupakan formulasi untuk menghitung nilai modifikasi dari tiap dimensi yang terpilih. 1 Untuk k =1 (dimensi terpilih = 13) 1 0, Demikian pula untuk k = 4,12, dan 1 diperoleh: , Hasil mutasi dari individu 2 yang didapatkan dari operasi yang dipengaruhi oleh CDC, dan SRD ini biasa disebut disebut copy dari individu 2, dinotasikan. Dalam algoritma ini setiap kucing mempunyai slot memory yang disebut Seeking Memory Pool yang berfungsi menampung sebanyak SMP-1 copy dari individu 2. Semua copy didapatkan dengan
70 60 melakukan perulangan semua langkah modifikasi hingga SMP-1 kali. Secara lengkap kandidat solusi dalam Seeking Memory Pool individu 2 dapat dilihat pada Tabel 4.20 Tabel 4.20 Kandidat Solusi Dalam Seeking Memory Pool Individu 2 Kandidat Solusi Modif Modif Modif Modif Lahan Komponen Semua kandidat solusi dalam Seeking Memory Pool individu 2 kemudian dicari representasi permutasinya untuk keperluan evaluasi area yang terpakai dan nilai fitness. Representasi Permutasi dalam Seeking Memory Pool individu 2 dapat dilihat selengkapnya dalam Tabel 4.21 Individu Tabel 4.21 Representasi Permutasi dalam SMP-1 individu 2 dan Fleksibilitas Urutan Lahan Komponen Masuk Dimensi Ukuran Dimensi Ukuran Dimensi Ukuran Dimensi Ukuran
71 61 Dengan prosedur yang sama dengan perhitungan area lahan yang terpakai dalam populasi awal, dan perhitungan nilai fitness dalam populasi awal didapatkan hasil seperti dalam Tabel 4.22 Tabel 4.22 Tinggi dan Nilai Fitness Individu Tinggi Nilai fitness Selanjutnya akan dihitung probabilitas terpilih masing-masing kandidat dalam Seeking Memory Pool berdasarkan formulasi dibawah ini : 1,2,, Sebagai contoh berikut dihitung probabilitas terpilih dari Dengan cara yang sama, diterapkan terhadap setiap copy individu 2. Sehingga didapatkan hasil pada Tabel 4.23 Tabel 4.23 Probabilitas Terpilih SMP-1 Individu 2 Individu Nilai fitness Probabilitas Terpilih
72 62 Total probabilitas terpilih dari Tabel 4.23 adalah , untuk mendapatkan distribusi peluang masing-masing individu dalam roulette wheel maka dilakukanlah perhitungan Probabilitas Relatif (Relative Probability) dengan formulasi: Sebagai contoh dihitung probabilitas relative dari Hasil selengkapnya dapat dilihat pada Tabel Tabel 4.24 Probabilitas Relatif SMP Individu 2 Individu Nilai fitness Probabilitas Terpilih Probabilitas Relatif Proses pemilihan posisi baru dari individu 2 dilakukan dengan prosedur seleksi roulette wheel, Prosedur seleksi roulette wheel dapat dilakukan dengan cara menyebar probabilitas terpilih kumulatif setiap individu dalam garis bilangan 0-1 kemudian membangkitkan satu bilangan acak secara random untuk memilih posisi baru bagi individu yang berkaitan. Formulasi untuk menghitung probabilitas terpilih kumulatif adalah sebagai berikut : ,2,3,, Selengkapnya hasil pemilihan update posisi individu 2, dengan seleksi roulette wheel diperlihatkan dalam Tabel 4.25
73 63 Tabel 4.25 Roulette Wheel Individu 2 Individu Probabilitas Terpilih Kumulatif Status Individu Terpilih Individu Dalam Tabel 4.25 dilakukan pembangkitan satu bilangan real secara acak yaitu r = , ini berarti secara probabilitas, terpilih sebagai posisi pengganti dari, karena bilangan r berada dalam interval probabilitas terpilih kumulatif dari, dapat dituliskan: Dari tahapan ini individu 2 mengupdate posisinya menjadi sama dengan posisi dari. Update local best seeking dilakukan dengan cara mengambil lahan komponen terbaik dari Seeking Memory Pool individu 2 yaitu : Urutan Lahan Komponen Masuk Dimensi Ukuran Individu Selanjutnya akan ditentukan solusi terbaik dari individu kucing tiruan 2. Individu terbaik adalah individu yang memiliki tinggi terkecil. Berdasarkan Tabel 4.22 dapat dilihat bahwa individu yang memiliki tinggi terkecil adalah individu. Karena tinggi, maka menjadi solusi terbaik sementara. Urutan Lahan Komponen Masuk Dimensi Ukuran
74 64 Dengan nilai tinggi sebesar 90 feet dengan urutan lahan komponen masuk dengan dimensi ukuran Dengan cara yang sama individu 1 menggunakan slot Seeking Memory Poolnya, yang berbeda adalah karena SPC individu 1 bernilai 0, maka slot pertama dari Seeking Memory Pool individu 3 diisi oleh posisi dirinya sendiri (posisi individu dipertahankan sebagai kandidat solusi), Untuk individu 3 dapat dilihat dalam Tabel 4.26 Kandidat Solusi Tabel 4.26 Kandidat Solusi Dalam Seeking Memory Pool Individu 1 Lahan Komponen Analog dengan proses mode seeking individu 2, Semua kandidat solusi dalam Seeking Memory Pool individu 1 kemudian dicari representasi permutasinya untuk keperluan evaluasi tinggi dan nilai fitness. Representasi Permutasi dalam Seeking Memory Pool individu 1 dapat dilihat selengkapnya dalam Tabel 4.27 Individu Tabel 4.27 Representasi Permutasi dalam SMP individu 1 dan Fleksibilitas Urutan Lahan Komponen Masuk Dimensi Ukuran Dimensi Ukuran Dimensi Ukuran
75 65 Individu Urutan Lahan Komponen Masuk Dimensi Ukuran Hasil evaluasi tinggi dan nilai fitness dari kandidat solusi dalam Seeking Memory Pool individu 2 dapat dilihat dalam Tabel 4.28 Tabel 4.28 Tinggi dan Nilai Fitness SMP Individu 1 Individu Tinggi Nilai fitness Nilai fitness individu dalam Tabel 4.28 dihitung nilai probabilitas terpilihnya dengan operasi yang sama dengan individu 2. Hasil Perhitungan Probabilitas Terpilih dan Probabilitas Relatif pada Seeking Memory Pool individu 2 dapat dilihat dalam Tabel 4.29 Tabel 4.29 Probabilitas Terpilih dan Probabilitas Relatif SMP Individu 1 ( Individu Nilai fitness Probabilitas Terpilih Probabilitas Relatif Nilai Probabilitas Relatif dari masing-masing kandidat solusi dalam Seeking Memory Pool individu 2, kemudian dihitung nilai kumulatifnya untuk melakukan seleksi roulette wheel. Selengkapnya hasil pemilihan
76 66 update posisi individu 2, dengan seleksi roulette wheel, dan menggunakan r = 0,23135 dapat dilihat dalam Tabel 4.30 Tabel 4.30 Roulette Wheel Individu 1 Individu Probabilitas Terpilih Kumulatif Status Individu Tepilih terpilih sebagai posisi pengganti dari, karena bilangan r berada dalam interval probabilitas terpilih kumulatif dari, dapat dituliskan: Dari tahapan ini individu 1 mengupdate posisinya menjadi sama dengan posisi dari. Update local best seeking dilakukan dengan cara mengambil lahan komponen terbaik dari Seeking Memory Pool individu 1 yaitu : Individu Urutan Lahan Komponen Masuk Dimensi Ukuran Dengan nilai fitness yang diperoleh adalah dan tinggi 85 feet dengan urutan lahan komponen masuk dan dimensi ukuran Setelah semua individu dalam seeking mode selesai diproses maka langkah selanjutnya adalah menentukan gbest seeking yaitu solusi sementara dari seeking mode. Oleh karena fungsi tujuan dari alokasi lahan
77 67 Individu adalah mencari nilai tinggi minimum maka gbest seeking dapat ditentukan dengan cara berikut: gbest seeking = min (, ) = min (85,90) = 85 Jadi individu terpilih sebagai gbest seeking dengan urutan sebagai berikut: Urutan Lahan Komponen Masuk Dimensi Ukuran Dengan nilai fitness yang diperoleh adalah dan tinggi 85 feet dengan urutan lahan komponen masuk dan dimensi ukuran Langkah 10: Simulated Annealing Karena pada proses tracing mode dan seeking mode terburuk pada tracing mode yaitu individu maka akan dilakukan proses annealing. a. Modifikasi Modifikasi solusi dapat dilakukan dengan pencarian lokal. Solusi semula adalah Dengan tinggi sebasar 100 feet. b. Pencarian Lokal Pencarian lokal yang digunakan adalah resiprochal exchange mutation. Memilih secara acak dua lokus, misal terpilih lokus 3 dan lokus 4, sehingga:
78 68 Setelah dilakukan proses resiprochal exchange mutation maka diperoleh urutan lahan komponen pada individu modifikasi yang ditunjukan pada Tabel 4.31 Kucing Tabel 4.31 Urutan lahan komponen masuk setelah modifikasi Urutan Lahan Komponen Masuk Dimensi Ukuran Diperoleh tinggi sebesar 80 feet dengan urutan lahan komponen masuk dengan dimensi ukuran Sehingga modifikasi menggantikan. c. Penurunan Suhu Cek suhu: Suhu baru 10 Suhu akhir 20 Karena, 10 <20, maka proses berhenti. Jadi, solusi dari simulated annealing adalah dengan tinggi sebesar 80 feet dengan urutan lahan komponen masuk dengan dimensi ukuran Langkah 11: Menentukan Solusi Terbaik dari Hybrid Algoritma Cat Swarm Optimization dan Simulated Annealing Proses akhir adalah menentukan Land Allocation menggunakan Hybrid Algoritma Cat Swarm Optimization dan Simulated Annealing, yaitu:
79 69 min, min 85,80 80 Jadi, solusi terbaik dari iterasi 1 dari Hybrid Algoritma Cat Swarm Optimization dan Simulated Annealing untuk Land Allocation adalah dari algoritma Simulated Annealing. Individu Urutan Lahan Komponen Masuk Dimensi Ukuran Dengan tinggi sebesar 80 feet dengan urutan lahan komponen masuk dengan dimensi ukuran Program Untuk mempermudah penyelesaian masalah land allocation dengan hybrid algoritma Cat Swarm Optimization (CSO) dan Simulated Annealing (SA) maka dibuat program menggunakan software Borland C Implementasi Program pada Contoh Kasus Land Allocation Program hybrid algoritma Cat Swarm Optimization (CSO) dan Simulated Annealing (SA) yang telah dibuat, diimplementasikan pada data dengan 13 lahan komponen dan 75 lahan komponen. Source code program dapat dilihat pada Lampiran Menggunakan Data 13 Lahan Komponen Berikut ini perbandingan solusi terbaik dari 13 lahan komponen yang dihasilkan dengan nilai Seeking Memory Pool (SMP) = 4, Seeking Range
80 70 Dimension (SRD) = 0.6, Mixing Ratio (MR) = 0.3, 1000, 1, 0.2, c = 2, serta mengganti nilai jumlah kucing (m), max.iterasi, dan CDC Tabel 4.32 Perbandingan Solusi Terbaik Data 13 Lahan Komponen Max. Iterasi Jumlah CDC Kucing (m) Dari Tabel 4.32 dapat dilihat bahwa solusi terbaik yang dihasilkan adalah 50 feet dengan urutan dengan dimensi ukuran Dalam hal ini semakin besar nilai parameter maksimal iterasi dan jumlah kucing (m) maka solusi yang dihasilkan cenderung semakin baik pula Menggunakan Data 75 Lahan Komponen Berikut ini perbandingan solusi terbaik dari 75 lahan komponen yang dihasilkan dengan nilai Seeking Memory Pool (SMP) = 4, Seeking Range Dimension (SRD) = 0.6, Mixing Ratio (MR) = 0.3, 1000, 1, 0.2, c = 2, serta mengganti nilai jumlah kucing (m), max.iterasi, dan CDC.
81 71 Tabel 4.33 Perbandingan Solusi Terbaik Data 75 Lahan Komponen Max. Iterasi Jumlah CDC Kucing (m) Dari Tabel 4.33 dapat dilihat bahwa solusi terbaik yang dihasilkan adalah 222 meter dengan urutan dengan dimensi ukuran Dalam hal ini semakin besar nilai parameter maksimal iterasi dan jumlah kucing (m) maka solusi yang dihasilkan cenderung semakin baik pula.
82 Perbandingan Solusi dengan Algoritma Lain Solusi yang dihasilkan dari penataan lahan komponen dengan data 75 lahan komponen seperti yang ditulis oleh Egy Rifki Yuda, Perbandingan solusi telah ditambahkan dengan solusi yang dihasilkan oleh hybrid algoritma cat swarm optimization dan simulated annealing. Disajikan pada Tabel 4.34 Tabel 4.34 Perbandingan Solusi yang Dihasilkan oleh Ketiga Algoritma Algoritma Total tinggi lahan Genetic Algorithm 383 Firefly Algorithm 247 Hybrid cat swarm optimization and simulated annealing Algorithm 222 Dengan demikian, solusi yang dihasilkan oleh Hybrid cat swarm optimization and simulated annealing Algorithm merupakan solusi terbaik dibandingkan dengan Genetic Algorithm dan Firefly Algorithm.
83 BAB V KESIMPULAN DAN SARAN Pada bab ini akan dijelaskan mengenai kesimpulan dan saran hybrid algoritma Cat Swarm Optimization (CSO) dan Simulated Annealing (SA) pada masalah land allocation. 5.1 Kesimpulan. 1. Hybrid algoritma cat swarm optimization dan simulated annealing dapat digunakan untuk menyelesaikan permasalahan land allocation. 2. Program untuk menyelesaikan permasalahan land allocation dengan menggunakan hybrid algoritma cat swarm optimization dan simulated annealing dapat dibuat dengan bahasa pemrograman C++ dengan software Borland C Implementasi program untuk contoh kasus menggunakan data 13 lahan komponen, diperoleh nilai fungsi tujuan terbaik yaitu sebesar 50 feet. Untuk data 75 lahan komponen, diperoleh nilai fungsi tujuan terbaik sebesar 222 meter. Dengan menggunakan parameter yang berbeda dapat mempengaruhi solusi yang didapatkan. Semakin besar nilai parameter jumlah kucing dan maks_iterasi, maka solusi yang didapat semakin baik. 5.2 Saran Untuk penelitian selanjutnya dapat dilakukan hal sebagai berikut: 1. Permasalahan dapat dikembangkan dengan menggunakan permasalahan land allocation dengan bentuk selain segi empat. 2. Permasalahan dapat diselesaikan dengan menggunakan algoritma atau metode yang lain. 72
84 DAFTAR PUSTAKA Callaghan, A.R., Nair, A.R., and Lewis, K.E., 1999, An Extension Of The Orthogonal Packing Problem Through Dimensional Flexibility, ASME Design Engineering Technical Conferences, Las Vegas, Nevada. Chatrand, G. and Oellermann, O.R., 1993, Applied and Algorithmic Graph Theory, McGraw-Hill, New York. Chibante, R., 2010, Simulated Annealing Theory and Aplication, Sciyo, Croatia Chu, S.C and Tsai, P.W, 2007, Computational Intellegence Based On Behaviour of Cat, International Journal of Innovative Computing, Taiwan Dereli, T. dan Sena Das, G., 2006, A Hybrid Simulated Annealing Algorithm for 2D Packing Problems, Sakarya University, Turkey. Gen, M. and Cheng, R., 1997, Genetic Algorithms and Engineering Design, John Wiley & Sons, New York. Horowitz, E., Sahni, S., dan Rajasekaran, S., 2006, Computer Algorithms C++, Computer Science Press, New York. Imahori, S., Yagiura, M., Ibaraki, T., 2007, Hybrid Metaheuristics for Packing Problems, Mathematical Engineering Technical Reports, University of Tokyo, Tokyo, Japan. Kadir, A. dan Heriyanto, 2015, Algoritma Pemrograman Menggunakan C++, ANDI, Yogyakarta. Milano, M. Dan Henternryck, P.V., 2010, Hybrid Optimization, Springer, New York. Obitko, M., 1998, Genetic Algorithms, Czezh Technical University. Stewart, T.J., Janssen, R., and Herwijen, M. Van, 2004, A Genetic Algorithm Approach to Multi-objective Land Use Planning, Netherland: Computer & Operations Research, Suryakumari, P, P. Kantarao, 2013, Power Loss Minimation Using CSO, International Journal of Application, India 73
85 Lampiran 1-1 Lampiran 1: Data Besar (75 Lahan Komponen) No. No. Luas No. Luas Luas Hak ( No. Hak ( No. No. Hak ( 1. B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B Dengan fleksibilitas dimensi: No. Luas Dimensi ( x64 10x32 16x20 40x8 8x40 20x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x90 10x45 15x30 30x15 45x10 90x x92 10x46 20x23 23x20 46x10 92x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x12
86 Lampiran 1-2 No Luas Dimensi (m 2 ) x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x64 8x40 10x32 16x20 20x16 32x x50 5x40 10x20 20x10 40x5 50x x60 10x48 12x40 15x32 20x24 24x x188 10x94 20x47 47x20 94x10 188x x81 6x54 9x36 36x9 54x6 81x x140 5x112 8x70 10x56 20x28 28x x114 6x76 8x57 57x8 76x6 114x x77 7x44 14x22 22x14 44x7 77x x77 7x44 14x22 22x14 44x7 77x x77 7x44 14x22 22x14 44x7 77x x77 7x44 14x22 22x14 44x7 77x x77 7x44 14x22 22x14 44x7 77x x90 9x80 10x72 20x36 24x30 40x x90 10x45 15x30 30x15 45x10 90x x90 10x45 15x30 30x15 45x10 90x x90 10x45 15x30 30x15 45x10 90x x90 10x45 15x30 30x15 45x10 90x x90 10x45 15x30 30x15 45x10 90x x60 10x48 12x40 15x32 20x24 24x x162 6x81 9x54 54x9 81x6 162x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x77 7x44 14x22 22x14 44x7 77x x90 10x45 15x30 30x15 45x10 90x x90 10x45 15x30 30x15 45x10 90x x90 10x45 15x30 30x15 45x10 90x x90 10x45 15x30 30x15 45x10 90x x90 10x45 15x30 30x15 45x10 90x x90 10x45 15x30 30x15 45x10 90x x90 10x45 15x30 30x15 45x10 90x x90 10x45 15x30 30x15 45x10 90x x114 6x76 8x57 57x8 76x6 114x x114 6x76 8x57 57x8 76x6 114x x114 6x76 8x57 57x8 76x6 114x x114 6x76 8x57 57x8 76x6 114x x114 6x76 8x57 57x8 76x6 114x x90 10x45 15x30 30x15 45x10 90x5
87 Lampiran 1-3 No Luas Dimensi (m 2 ) x60 10x48 12x40 15x32 20x24 24x x90 10x45 15x30 30x15 45x10 90x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x x60 10x30 12x25 15x20 20x15 25x12 Sumber: Egy Rifky Yuda, 2015, Penerapan Algoritma Firefly untuk Permasalahan Land Allocation.
88 Lampiran 2-1 Lampiran 2: Source Code Program #include <iostream> #include <conio.h> #include <fstream> #include <stdlib.h> #include <time.h> #include <math.h> #include <iomanip.h> #include <cstring.h> //batasan input (string) string pilih_data_sampel,adjustment,adjustment2; //batasan input (int) int data_sampel,adjust,adjust2; //parameter-parameter dalam algoritma cso-sa (string) string kucing_string,smp_string,lebar_wadah_string,c1_string; string cdc_string,srd_string,mr_string; string alpha_string,suhu_awal_string,suhu_akhir_string; //parameter-parameter dalam algoritma cso-sa (final) int kucing,smp,lebar_wadah,c1,jumlahlahan,jumlahvariasi; double cdc,srd,mr,alpha,suhu_awal,suhu_akhir; //variabel pembaca data int himpunan_data[1000],ambil_data,tinggi_lahan[1000][1000]; int lebar_lahan[1000][1000]; //penentu iterasi int max_iterasi,iterasi,z,sum,choose; string max_iterasi_string; //elemen data cso double data_random[1000][1000],data_kecepatan[1000][1000]; double data_flag[1000]; int variasi_bentuk[1000][1000],ambil_lebar[1000][1000]; int urutan_lahan_masuk[1000][1000],ambil_tinggi[1000][1000]; int jumlahtracing,jumlahseeking,flag[1000],spc[1000]; int grup_seeking[1000],grup_tracing[1000]; //elemen seeking double Memory_pool[1000][1000]; int terpilih[1000],write_dimension[1000][1000]; int seeking_counter,counter;
89 Lampiran 2-2 //pembanding dan fitness lahan int tinggi_total[1000],data_urutan_fungsitujuan[1000]; double nilai_fitness[1000]; //elemen memory pool int urutan_lahan_masuk_mp[1000][1000],ambil_tinggi_mp[1000][1000],tinggi_tota l_mp[1000]; int variasi_bentuk_mp[1000][1000],ambil_lebar_mp[1000][1000]; double nilai_fitness_mp[1000],probabilitas[1000]; int indeks_bestseeking; double probabilitask[1000],probabilitasr[1000]; int indeks_terpilih_roulette; int doc_tinggi,doc_lahan[1000],doc_variasi[1000]; int tinggi_best,lahan_best[1000],variasi_best[1000]; double x_best[1000],copy_cat[1000]; //elemen tracing int doc_tinggi_tracing,doc_lahan_tracing[1000],doc_variasi_tracing[1000]; int tinggi_best_tracing,lahan_best_tracing[1000],variasi_best_tracing[1000]; //elemen form akhir int real_tinggi,real_lahan[1000],real_variasi[1000],status; //elemen SA double suhu_sekarang,tempsa,solusi_sa[1000],random_sa,suhu; int select_1,select_2,urutan_lahan_masuk_sa[1000],mutatecounter,tinggi_total_copy [1000]; int variasi_bentuk_sa[1000],ambil_lebar_sa[1000],ambil_tinggi_sa[1000],tinggi_tota l_sa; //banner tampilan awal void receptionist() cout<<endl; cout<<" ///////////////////////////////////////////////////////////////////////////"<<endl; cout<<" /// PROGRAM PENYELESAIAN LAND ALLOCATION DENGAN HYBRID ALGORITMA CSO-SA /// "<<endl; cout<<" ///////////////////////////////////////////////////////////////////////////"<<endl; cout<<endl;
90 Lampiran 2-3 //pilihan data void optionist() cout<<" Pilih Sampel Data Yang Akan Di Running : "<<endl<<endl; cout<<" 1) DATA KECIL ( 13 Lahan ) "<<endl<<endl; cout<<" 2) DATA BESAR ( 75 Lahan ) "<<endl<<endl; cout<<endl<<" Tentukan Pilihan Dalam Angka (1/2) : "; void default_parameter() if(data_sampel==1) kucing=100; smp=4; cdc=0.1; srd=0.6; mr=0.3; alpha=0.2; c1=2; lebar_wadah=200; suhu_awal=1000; suhu_akhir=1; if(data_sampel==2) kucing=100; smp=4; cdc=0.8; srd=0.6; mr=0.3; alpha=0.2; c1=2; lebar_wadah=250; suhu_awal=1000; suhu_akhir=1; void view_parameter() cout<<" Parameter Dalam Program : "<<endl<<endl; cout<<" 1) Jumlah Kucing : "<<kucing<<endl; cout<<" 2) Nilai SMP : "<<smp<<endl;
91 Lampiran 2-4 cout<<" 3) Nilai CDC : "<<cdc<<endl; cout<<" 4) Nilai SRD : "<<srd<<endl; cout<<" 5) Nilai MR : "<<mr<<endl; cout<<" 6) Nilai Alpha : "<<alpha<<endl; cout<<" 7) Nilai C1 : "<<c1<<endl; cout<<" 8) Nilai Lebar Wadah : "<<lebar_wadah<<endl; cout<<" 9) Suhu Awal : "<<suhu_awal<<endl; cout<<"10) Suhu Akhir : "<<suhu_akhir<<endl; cout<<endl<<" Ingin Rubah Parameter? (ya=1/tidak=2) : "; void the_parameters() receptionist(); default_parameter(); view_parameter(); void revision_parameter() cout<<" Parameter Dalam Program : "<<endl<<endl; cout<<" 1) Jumlah Kucing : "<<kucing<<endl; cout<<" 2) Nilai SMP : "<<smp<<endl; cout<<" 3) Nilai CDC : "<<cdc<<endl; cout<<" 4) Nilai SRD : "<<srd<<endl; cout<<" 5) Nilai MR : "<<mr<<endl; cout<<" 6) Nilai Alpha : "<<alpha<<endl; cout<<" 7) Nilai C1 : "<<c1<<endl; cout<<" 8) Nilai Lebar Wadah : "<<lebar_wadah<<endl; cout<<" 9) Suhu Awal : "<<suhu_awal<<endl; cout<<"10) Suhu Akhir : "<<suhu_akhir<<endl; cout<<endl<<" Apakah Parameter Sudah Benar (ya=1/tidak=2) : "; void permutasi_lahan_masuk() int i, j, maksindeks; double variabelsementara; double kucing_sementara[1000]; double kucing_matching[1000]; for(int ke=0;ke<kucing;ke++)
92 Lampiran 2-5 for(int u=0;u<jumlahlahan;u++) kucing_sementara[u]=data_random[ke][u]; for(int u=0;u<jumlahlahan;u++) kucing_matching[u]=data_random[ke][u]; for (i=0;i<jumlahlahan-1;i++) maksindeks = i; for (j=i+1;j<jumlahlahan;j++) if (kucing_sementara[j]>kucing_sementara[maksindeks]) maksindeks=j; if(j!=i) variabelsementara=kucing_sementara[i]; kucing_sementara[i]=kucing_sementara[maksindeks]; kucing_sementara[maksindeks]=variabelsementara; for (int j=0;j<jumlahlahan;j++) int match=0; for (int k=0;k<jumlahlahan;k++) if(match==0) if(kucing_sementara[j]==kucing_matching[k]) kucing_matching[k]=-1; urutan_lahan_masuk[ke][j] = k + 1; match++;
93 Lampiran 2-6 void permutasi_lahan_masuk_mp() int i, j, maksindeks; double variabelsementara; double kucing_sementara[1000]; double kucing_matching[1000]; for(int ke=0;ke<smp;ke++) for(int u=0;u<jumlahlahan;u++) kucing_sementara[u]=memory_pool[ke][u]; for(int u=0;u<jumlahlahan;u++) kucing_matching[u]=memory_pool[ke][u]; for (i=0;i<jumlahlahan-1;i++) maksindeks = i; for (j=i+1;j<jumlahlahan;j++) if (kucing_sementara[j]>kucing_sementara[maksindeks]) maksindeks=j; if(j!=i) variabelsementara=kucing_sementara[i]; kucing_sementara[i]=kucing_sementara[maksindeks]; kucing_sementara[maksindeks]=variabelsementara;
94 Lampiran 2-7 for (int j=0;j<jumlahlahan;j++) int match=0; for (int k=0;k<jumlahlahan;k++) if(match==0) if(kucing_sementara[j]==kucing_matching[k]) kucing_matching[k]=-1; urutan_lahan_masuk_mp[ke][j] = k + 1; match++; void akses_lahan() for(int i=0;i<kucing;i++) for(int j=0;j<jumlahlahan;j++) int ambil_individu=urutan_lahan_masuk[i][j]; int ambil_variasi=variasi_bentuk[i][j]; ambil_lebar[i][j]=lebar_lahan[ambil_individu-1][ambil_variasi]; ambil_tinggi[i][j]=tinggi_lahan[ambil_individu-1][ambil_variasi]; void akses_lahan_mp()
95 Lampiran 2-8 for(int i=0;i<smp;i++) for(int j=0;j<jumlahlahan;j++) int ambil_individu=urutan_lahan_masuk_mp[i][j]; int ambil_variasi=variasi_bentuk_mp[i][j]; ambil_lebar_mp[i][j]=lebar_lahan[ambil_individu-1][ambil_variasi]; ambil_tinggi_mp[i][j]=tinggi_lahan[ambil_individu-1][ambil_variasi]; void fungsi_tujuan_land_allocation() int lebar_slot[1000],tinggi_slot[1000]; for(int i=0;i<kucing;i++) for(int j=0;j<jumlahlahan;j++) int ambil_lebar_lahan=ambil_lebar[i][j]; int ambil_tinggi_lahan=ambil_tinggi[i][j]; if(j==0) if(ambil_lebar_lahan<=lebar_wadah) lebar_slot[j]=lebar_wadah-ambil_lebar_lahan; tinggi_slot[j]=ambil_tinggi_lahan; else lebar_slot[j]=lebar_wadah-ambil_tinggi_lahan; tinggi_slot[j]=ambil_lebar_lahan; else if(j!=0) int pas=0; for(int k=0;k<j;k++) int periksa_lebarslot=lebar_slot[k]; int periksa_tinggislot=tinggi_slot[k];
96 Lampiran 2-9 if(ambil_lebar_lahan<=periksa_lebarslot&&ambil_tinggi_lahan<=periksa_tingg islot) for(int l=j;l>k+1;l--) int h=lebar_slot[l-1]; int g=tinggi_slot[l-1]; lebar_slot[l]=h; tinggi_slot[l]=g; lebar_slot[k+1]=periksa_lebarslot; tinggi_slot[k+1]=periksa_tinggislot-ambil_tinggi_lahan; lebar_slot[k]=periksa_lebarslot-ambil_lebar_lahan; tinggi_slot[k]=ambil_tinggi_lahan; pas=1; break; else if(ambil_tinggi_lahan<=periksa_lebarslot&&ambil_lebar_lahan<=periksa_tingg islot) for(int l=j;l>k+1;l--) int h=lebar_slot[l-1]; int g=tinggi_slot[l-1]; lebar_slot[l]=h; tinggi_slot[l]=g; lebar_slot[k+1]=periksa_lebarslot; tinggi_slot[k+1]=periksa_tinggislot-ambil_lebar_lahan; lebar_slot[k]=periksa_lebarslot-ambil_tinggi_lahan; tinggi_slot[k]=ambil_tinggi_lahan; pas=1; break;
97 Lampiran 2-10 if(pas!=1) if(ambil_lebar_lahan<=lebar_wadah) lebar_slot[j]=lebar_wadah-ambil_lebar_lahan; tinggi_slot[j]=ambil_tinggi_lahan; else lebar_slot[j]=lebar_wadah-ambil_tinggi_lahan; tinggi_slot[j]=ambil_lebar_lahan; int tinggi=0; for(int j=0;j<jumlahlahan;j++) tinggi=tinggi+tinggi_slot[j]; tinggi_total[i]=tinggi; void fungsi_tujuan_land_allocation_mp() int lebar_slot[1000],tinggi_slot[1000]; for(int i=0;i<smp;i++) for(int j=0;j<jumlahlahan;j++) int ambil_lebar_lahan=ambil_lebar_mp[i][j]; int ambil_tinggi_lahan=ambil_tinggi_mp[i][j]; if(j==0) if(ambil_lebar_lahan<=lebar_wadah)
98 Lampiran 2-11 lebar_slot[j]=lebar_wadah-ambil_lebar_lahan; tinggi_slot[j]=ambil_tinggi_lahan; else lebar_slot[j]=lebar_wadah-ambil_tinggi_lahan; tinggi_slot[j]=ambil_lebar_lahan; else if(j!=0) int pas=0; for(int k=0;k<j;k++) int periksa_lebarslot=lebar_slot[k]; int periksa_tinggislot=tinggi_slot[k]; if(ambil_lebar_lahan<=periksa_lebarslot&&ambil_tinggi_lahan<=periksa_tingg islot) for(int l=j;l>k+1;l--) int h=lebar_slot[l-1]; int g=tinggi_slot[l-1]; lebar_slot[l]=h; tinggi_slot[l]=g; lebar_slot[k+1]=periksa_lebarslot; tinggi_slot[k+1]=periksa_tinggislot-ambil_tinggi_lahan; lebar_slot[k]=periksa_lebarslot-ambil_lebar_lahan; tinggi_slot[k]=ambil_tinggi_lahan; pas=1; break; else if(ambil_tinggi_lahan<=periksa_lebarslot&&ambil_lebar_lahan<=periksa_tingg islot) for(int l=j;l>k+1;l--)
99 Lampiran 2-12 int h=lebar_slot[l-1]; int g=tinggi_slot[l-1]; lebar_slot[l]=h; tinggi_slot[l]=g; lebar_slot[k+1]=periksa_lebarslot; tinggi_slot[k+1]=periksa_tinggislot-ambil_lebar_lahan; lebar_slot[k]=periksa_lebarslot-ambil_tinggi_lahan; tinggi_slot[k]=ambil_tinggi_lahan; pas=1; break; if(pas!=1) if(ambil_lebar_lahan<=lebar_wadah) lebar_slot[j]=lebar_wadah-ambil_lebar_lahan; tinggi_slot[j]=ambil_tinggi_lahan; else lebar_slot[j]=lebar_wadah-ambil_tinggi_lahan; tinggi_slot[j]=ambil_lebar_lahan; int tinggi=0; for(int j=0;j<jumlahlahan;j++) tinggi=tinggi+tinggi_slot[j]; tinggi_total_mp[i]=tinggi;
100 Lampiran 2-13 void hitung_nilai_fitness() for(int i=0;i<kucing;i++) nilai_fitness[i]=1/tinggi_total[i]; void hitung_nilai_fitness_mp() for(int i=0;i<smp;i++) nilai_fitness_mp[i]=1/tinggi_total_mp[i]; void class_penempatan_flag() int flag_queque[1000],temp_queque; double flag_acak[1000],temp_flag; for(int i=0;i<kucing;i++) flag_queque[i]=i; for(int i=0;i<kucing;i++) flag_acak[i]=data_flag[i]; for(int k=0;k<4*kucing;k++) for(int l=0;l<kucing-1;l++) if(flag_acak[l]<flag_acak[l+1]) temp_flag=flag_acak[l]; flag_acak[l]=flag_acak[l+1]; flag_acak[l+1]=temp_flag; temp_queque=flag_queque[l]; flag_queque[l]=flag_queque[l+1]; flag_queque[l+1]=temp_queque;
101 Lampiran 2-14 for(int t=0;t<jumlahtracing;t++) flag[flag_queque[t]]=0; for(int t=jumlahtracing;t<kucing;t++) flag[flag_queque[t]]=1; void class_urutan_tinggi_lahan() double fungsi_tujuan_temp[1000],fungsi_tujuan_cek[1000],temp_var; int indeks_min,j; for(int u=0;u<kucing;u++) fungsi_tujuan_temp[u]=tinggi_total[u]; for(int u=0;u<kucing;u++) fungsi_tujuan_cek[u]=tinggi_total[u]; for (int h=0;h<kucing-1;h++) indeks_min=h; for(j=h+1;j<kucing;j++) if (fungsi_tujuan_temp[j]<fungsi_tujuan_temp[indeks_min]) indeks_min=j; if(j!=h) temp_var=fungsi_tujuan_temp[h];
102 Lampiran 2-15 fungsi_tujuan_temp[h]=fungsi_tujuan_temp[indeks_min]; fungsi_tujuan_temp[indeks_min]=temp_var; for (int k=0;k<kucing;k++) int cocok=0; for (int l=0;l<kucing;l++) if(cocok==0) if(fungsi_tujuan_temp[k]==fungsi_tujuan_cek[l]) fungsi_tujuan_cek[l]=-1; data_urutan_fungsitujuan[k]=l; cocok++; void class_klasifikasi_kucing() int tracing=0; int seeking=0; for(int member=0;member<kucing;member++) if(flag[member]==0) grup_tracing[tracing]=member; tracing++; else if(flag[member]==1) grup_seeking[seeking]=member; seeking++;
103 Lampiran 2-16 void class_penentuan_xbest() for(int i=0;i<jumlahlahan;i++) x_best[i]=data_random[data_urutan_fungsitujuan[0]][i]; void pilihan_variasi_mp() randomize(); for(int i=0;i<smp;i++) for(int j=0;j<jumlahlahan;j++) int var=random(5); variasi_bentuk_mp[i][j]=var; void hitungprobabilitasterpilih() double minimal,maksimal,perbedaanmp; minimal=tinggi_total_mp[0]; for(int member=0;member<smp;member++) if(minimal>tinggi_total_mp[member]) minimal=tinggi_total_mp[member]; indeks_bestseeking=member; maksimal=tinggi_total_mp[0]; for(int member=0;member<smp;member++)
104 Lampiran 2-17 if(maksimal<tinggi_total_mp[member]) maksimal=tinggi_total_mp[member]; perbedaanmp=maksimal-minimal; if(perbedaanmp==0) for(int member=0;member<smp;member++) probabilitas[member]=1; else if(perbedaanmp!=0) for(int member=0;member<smp;member++) probabilitas[member]=tinggi_total_mp[member]- minimal/perbedaanmp; void roulettewheel(int indeks_kucing,double random_smp) double totalprobabilitas; totalprobabilitas=0; for(int member=0;member<smp;member++) totalprobabilitas=totalprobabilitas+probabilitas[member]; for(int member=0;member<smp;member++) probabilitasr[member]=probabilitas[member]/totalprobabilitas; for(int member=0;member<smp;member++)
105 Lampiran 2-18 if(member!=0) probabilitask[member]=probabilitask[member- 1]+probabilitasr[member]; else if(member==0) probabilitask[member]=probabilitasr[member]; for(int member=0;member<smp;member++) if(random_smp>probabilitask[member- 1]&&random_smp<probabilitask[member]) indeks_terpilih_roulette=member; for(int time=0;time<jumlahlahan;time++) data_random[indeks_kucing][time]=memory_pool[indeks_terpilih_roulett e][time]; variasi_bentuk[indeks_kucing][time]=variasi_bentuk_mp[indeks_terpilih_roulette ][time]; void simpan_terbaik_seeking() doc_tinggi=tinggi_total_mp[indeks_bestseeking]; for(int i=0;i<jumlahlahan;i++) doc_lahan[i]=urutan_lahan_masuk_mp[indeks_bestseeking][i]; doc_variasi[i]=variasi_bentuk_mp[indeks_bestseeking][i]; if(seeking_counter==0)
106 Lampiran 2-19 tinggi_best=doc_tinggi; for(int i=0;i<jumlahlahan;i++) lahan_best[i]=doc_lahan[i]; variasi_best[i]=doc_variasi[i]; else if(seeking_counter!=0) if(tinggi_best>doc_tinggi) tinggi_best=doc_tinggi; for(int i=0;i<jumlahlahan;i++) lahan_best[i]=doc_lahan[i]; variasi_best[i]=doc_variasi[i]; void copy_tinggi_cat() for(int i=0;i<kucing;i++) tinggi_total_copy[i]=tinggi_total[i]; void class_penentuan_terbaik_tracing() doc_tinggi_tracing=tinggi_total[data_urutan_fungsitujuan[0]]; for(int i=0;i<jumlahlahan;i++) doc_lahan_tracing[i]=urutan_lahan_masuk[data_urutan_fungsitujuan[0]][ i]; doc_variasi_tracing[i]=variasi_bentuk[data_urutan_fungsitujuan[0]][i];
107 Lampiran 2-20 if(iterasi==1) tinggi_best_tracing=doc_tinggi_tracing; for(int i=0;i<jumlahlahan;i++) lahan_best_tracing[i]=doc_lahan_tracing[i]; variasi_best_tracing[i]=doc_variasi_tracing[i]; else if(iterasi!=1) if(tinggi_best_tracing>doc_tinggi_tracing) tinggi_best_tracing=doc_tinggi_tracing; for(int i=0;i<jumlahlahan;i++) lahan_best_tracing[i]=doc_lahan_tracing[i]; variasi_best_tracing[i]=doc_variasi_tracing[i]; void compare_best_tracing_dan_best_seeking() if(tinggi_best_tracing<tinggi_best) real_tinggi=tinggi_best_tracing; for(int i=0;i<jumlahlahan;i++) real_lahan[i]=lahan_best_tracing[i]; real_variasi[i]=variasi_best_tracing[i]; else if(tinggi_best<tinggi_best_tracing)
108 Lampiran 2-21 real_tinggi=tinggi_best; for(int i=0;i<jumlahlahan;i++) real_lahan[i]=lahan_best[i]; real_variasi[i]=variasi_best[i]; void form_hasil_akhir() ofstream result_write; result_write.open("c:/skripsi Pipid/Hasil Running/hasil akhir land allocation.txt"); clrscr(); cout<<"//////////////////////////////////////////////////////////////////"<<endl; cout<<"/// IMPLEMENTASI ALGORITMA CSO-SA PADA MASALAH PENJADWALAN ///"<<endl; cout<<"/// LAND ALLOCATION ///"<<endl; cout<<"/// FORM HASIL AKHIR ///"<<endl; cout<<"//////////////////////////////////////////////////////////////////"<<endl<<endl; result_write<<"//////////////////////////////////////////////////////////////////"<<endl; result_write<<"/// IMPLEMENTASI ALGORITMA CSO PADA MASALAH PENJADWALAN ///"<<endl; result_write<<"/// LAND ALLOCATION ///"<<endl; result_write<<"/// FORM HASIL AKHIR ///"<<endl; result_write<<"//////////////////////////////////////////////////////////////////"<<endl<<endl; cout<<"tinggi Minimal Dari Proses Land Allocation ="<<real_tinggi<<endl<<endl; result_write<<"tinggi Terendah Dari Proses Land Allocation ="<<real_tinggi<<endl<<endl; cout<<"urutan Lahan Masuk Terbaik : "<<endl<<endl;
109 Lampiran 2-22 result_write<<"urutan Lahan Masuk Terbaik : "<<endl<<endl; for(int k=0;k<jumlahlahan;k++) cout<<real_lahan[k]<<" "; result_write<<real_lahan[k]<<" "; cout<<endl<<endl; result_write<<endl<<endl; result_write<<" URAIAN BENTUK LAHAN "<<endl<<endl; for(int i=0;i<jumlahlahan;i++) int variasi_akhir=real_variasi[i]+1; result_write<<" Lahan KE -"<<real_lahan[i]<<" MENGGUNAKAN VARIASI BENTUK KE- "<<variasi_akhir<<endl; cout<<endl<<endl<<"nb=variasi dapat dilihat di path berikut C:Skripsi Pipid/Hasil Running/hasil akhir land allocation"<<endl; void permutasi_lahan_masuk_sa() int i, j, maksindeks; double variabelsementara; double kucing_sementara[1000]; double kucing_matching[1000]; for(int ke=0;ke<kucing;ke++) for(int u=0;u<jumlahlahan;u++) kucing_sementara[u]=solusi_sa[u];
110 Lampiran 2-23 for(int u=0;u<jumlahlahan;u++) kucing_matching[u]=solusi_sa[u]; for (i=0;i<jumlahlahan-1;i++) maksindeks = i; for (j=i+1;j<jumlahlahan;j++) if (kucing_sementara[j]>kucing_sementara[maksindeks]) maksindeks=j; if(j!=i) variabelsementara=kucing_sementara[i]; kucing_sementara[i]=kucing_sementara[maksindeks]; kucing_sementara[maksindeks]=variabelsementara; for (int j=0;j<jumlahlahan;j++) int match=0; for (int k=0;k<jumlahlahan;k++) if(match==0) if(kucing_sementara[j]==kucing_matching[k]) kucing_matching[k]=-1; urutan_lahan_masuk_sa[j] = k + 1; match++;
111 Lampiran 2-24 void pilihan_variasi_sa() randomize(); for(int j=0;j<jumlahlahan;j++) int var=random(5); variasi_bentuk_sa[j]=var; void akses_lahan_sa() for(int j=0;j<jumlahlahan;j++) int ambil_individu=urutan_lahan_masuk_sa[j]; int ambil_variasi=variasi_bentuk_sa[j]; ambil_lebar_sa[j]=lebar_lahan[ambil_individu-1][ambil_variasi]; ambil_tinggi_sa[j]=tinggi_lahan[ambil_individu-1][ambil_variasi]; void fungsi_tujuan_land_allocation_sa() int lebar_slot[1000],tinggi_slot[1000]; for(int j=0;j<jumlahlahan;j++) int ambil_lebar_lahan=ambil_lebar_sa[j]; int ambil_tinggi_lahan=ambil_tinggi_sa[j]; if(j==0) if(ambil_lebar_lahan<=lebar_wadah) lebar_slot[j]=lebar_wadah-ambil_lebar_lahan; tinggi_slot[j]=ambil_tinggi_lahan; else
112 Lampiran 2-25 lebar_slot[j]=lebar_wadah-ambil_tinggi_lahan; tinggi_slot[j]=ambil_lebar_lahan; else if(j!=0) int pas=0; for(int k=0;k<j;k++) int periksa_lebarslot=lebar_slot[k]; int periksa_tinggislot=tinggi_slot[k]; if(ambil_lebar_lahan<=periksa_lebarslot&&ambil_tinggi_lahan<=periksa_tingg islot) for(int l=j;l>k+1;l--) int h=lebar_slot[l-1]; int g=tinggi_slot[l-1]; lebar_slot[l]=h; tinggi_slot[l]=g; lebar_slot[k+1]=periksa_lebarslot; tinggi_slot[k+1]=periksa_tinggislot-ambil_tinggi_lahan; lebar_slot[k]=periksa_lebarslot-ambil_lebar_lahan; tinggi_slot[k]=ambil_tinggi_lahan; pas=1; break; else if(ambil_tinggi_lahan<=periksa_lebarslot&&ambil_lebar_lahan<=periksa_tingg islot) for(int l=j;l>k+1;l--) int h=lebar_slot[l-1]; int g=tinggi_slot[l-1]; lebar_slot[l]=h;
113 Lampiran 2-26 tinggi_slot[l]=g; lebar_slot[k+1]=periksa_lebarslot; tinggi_slot[k+1]=periksa_tinggislot-ambil_lebar_lahan; lebar_slot[k]=periksa_lebarslot-ambil_tinggi_lahan; tinggi_slot[k]=ambil_tinggi_lahan; pas=1; break; if(pas!=1) if(ambil_lebar_lahan<=lebar_wadah) lebar_slot[j]=lebar_wadah-ambil_lebar_lahan; tinggi_slot[j]=ambil_tinggi_lahan; else lebar_slot[j]=lebar_wadah-ambil_tinggi_lahan; tinggi_slot[j]=ambil_lebar_lahan; int tinggi=0; for(int j=0;j<jumlahlahan;j++) tinggi=tinggi+tinggi_slot[j]; tinggi_total_sa=tinggi; void fitness_comparation_beforeaftermutate(int indeks) double Probability,r,deltafitness;
114 Lampiran 2-27 if(tinggi_total[indeks]>tinggi_total_sa) tinggi_total[indeks]=tinggi_total_sa; for(int j=0;j<jumlahlahan;j++) data_random[indeks][j]=solusi_sa[j]; variasi_bentuk[indeks][j]=variasi_bentuk_sa[j]; status=1; else r=random_sa; deltafitness=tinggi_total[indeks]-tinggi_total_sa; Probability=exp(-(deltafitness/suhu_sekarang)); if(probability>r) tinggi_total[indeks]=tinggi_total_sa; for(int j=0;j<jumlahlahan;j++) data_random[indeks][j]=solusi_sa[j]; variasi_bentuk[indeks][j]=variasi_bentuk_sa[j]; status=2; else for(int j=0;j<jumlahlahan;j++) data_random[indeks][j]; variasi_bentuk[indeks][j]; status=3; void main()
115 Lampiran 2-28 randomize(); ifstream read_data; ofstream write; point1: clrscr(); receptionist(); optionist(); cin>>pilih_data_sampel; data_sampel=atoi(pilih_data_sampel.c_str()); string validasi; if(data_sampel<1 data_sampel>3) cout<<endl<<" Input Error!!"<<endl; cout<<" Press any key then enter... "<<endl; cout<<" "; cin>>validasi; int valid=atoi(validasi.c_str()); if(valid!=-98) goto point1; point2: clrscr(); the_parameters(); cin>>adjustment; adjust=atoi(adjustment.c_str()); if(adjust<1 adjust>2) cout<<endl<<" Input Error!!"<<endl; cout<<" Press any key then enter... "<<endl; cout<<" "; cin>>validasi; int valid=atoi(validasi.c_str());
116 Lampiran 2-29 if(valid!=-98) goto point2; else if(adjust==1) input_point: clrscr(); receptionist(); cout<<endl; alpha=0.2; c1=2; lebar_wadah=500; suhu_awal=100; suhu_akhir=1; cout<<" 1) INPUTKAN JUMLAH KUCING : "; cin>>kucing_string; kucing=atoi(kucing_string.c_str()); if(kucing<3 kucing>5000) goto input_point; cout<<endl; cout<<" 2) INPUTKAN NILAI SMP : "; cin>>smp_string; smp=atoi(smp_string.c_str()); if(smp<1 smp>100) goto input_point; cout<<endl; cout<<" 3) INPUTKAN NILAI CDC : "; cin>>cdc_string; cdc=atof(cdc_string.c_str()); const char *cdc_char=cdc_string.c_str();
117 Lampiran 2-30 int cdc_long=strlen(cdc_char); sum=0; for(int character=0;character<cdc_long;character++) if(isalpha(cdc_char[character])) sum=sum+1; else sum=sum+0; if(cdc<=0 cdc>1 sum!=0) goto input_point; cout<<endl; cout<<" 4) INPUTKAN NILAI SRD : "; cin>>srd_string; srd=atof(srd_string.c_str()); const char *srd_char=srd_string.c_str(); int srd_long=strlen(srd_char); sum=0; for(int character=0;character<srd_long;character++) if(isalpha(srd_char[character])) sum=sum+1; else sum=sum+0; if(srd<=0 srd>1 sum!=0) goto input_point;
118 Lampiran 2-31 cout<<endl; cout<<" 5) INPUTKAN NILAI MR : "; cin>>mr_string; mr=atof(mr_string.c_str()); const char *mr_char=mr_string.c_str(); int mr_long=strlen(mr_char); int sum=0; for(int character=0;character<mr_long;character++) if(isalpha(mr_char[character])) sum=sum+1; else sum=sum+0; if(mr<=0 mr>1 sum!=0) goto input_point; cout<<endl; cout<<" 6) INPUTKAN NILAI ALPHA : "; cin>>alpha_string; //VALIDASI INPUT ALPHA alpha=atof(alpha_string.c_str()); const char *alpha_char=alpha_string.c_str(); int alpha_long=strlen(alpha_char); int sum_b=0; for(int character=0;character<alpha_long;character++) if(isalpha(alpha_char[character])) sum_b=sum_b+1; else
119 Lampiran 2-32 sum_b=sum_b+0; if(alpha<=0 alpha>1 sum_b!=0) goto input_point; cout<<endl; cout<<" 7) INPUTKAN NILAI C1 : "; cin>>c1_string; c1=atoi(c1_string.c_str()); if(c1<1 kucing>10) goto input_point; cout<<endl; cout<<" 8) INPUTKAN NILAI LEBAR WADAH : "; cin>>lebar_wadah_string; lebar_wadah=atoi(lebar_wadah_string.c_str()); if(lebar_wadah<1 lebar_wadah>10000) goto input_point; cout<<endl; cout<<" 9) NILAI SUHU AWAL : "; cin>>suhu_awal_string; //VALIDASI INPUT SUHU AWAL suhu_awal=atoi(suhu_awal_string.c_str()); if(suhu_awal>1000 suhu_awal<=0) goto input_point; cout<<endl; cout<<" 10) NILAI SUHU AKHIR : "; cin>>suhu_akhir_string; //VALIDASI INPUT SUHU AKHIR suhu_akhir=atoi(suhu_akhir_string.c_str());
120 Lampiran 2-33 if(suhu_akhir>1000 suhu_akhir<=0 suhu_akhir>=suhu_awal) goto input_point; end_point: clrscr(); receptionist(); revision_parameter(); cin>>adjustment2; adjust2=atoi(adjustment2.c_str()); if(adjust2<1 adjust2>2) cout<<endl<<" Input Error!!"<<endl; cout<<" Press any key then enter... "<<endl; cout<<" "; cin>>validasi; int valid=atoi(validasi.c_str()); if(valid!=-98) goto end_point; else if(adjust2==2) goto input_point; iterasi_point: clrscr(); receptionist(); cout<<endl; cout<<" INPUTKAN JUMLAH ITERASI : "; cin>>max_iterasi_string; max_iterasi=atoi(max_iterasi_string.c_str());
121 Lampiran 2-34 if(max_iterasi<1) goto iterasi_point; //point load data switch(data_sampel) case 1: read_data.open("c:/skripsi Pipid/Data Program/Data Kecil.txt"); write.open("c:/skripsi Pipid/Hasil Running/hasil land allocation cso-sa (data kecil).txt"); jumlahlahan=13; jumlahvariasi=6; break; case 2: read_data.open("c:/skripsi Pipid/Data Program/Data Besar.txt"); write.open("c:/skripsi Pipid/Hasil Running/hasil land allocation cso-sa (data besar).txt"); jumlahlahan=75; jumlahvariasi=6; break; if(data_sampel==1 data_sampel==2) if(!read_data.eof()) int counter_data=0; do read_data>>ambil_data; himpunan_data[counter_data]=ambil_data; counter_data++; while(!read_data.eof());
122 Lampiran 2-35 else cout<<"file kosong"<<endl; jumlahlahan=0; if(data_sampel==1) for(int i=0;i<jumlahlahan;i++) int counter_row=jumlahvariasi*i; for(int z=0;z<jumlahvariasi;z++) lebar_lahan[i][z]=himpunan_data[counter_row+z]; int counter_row_lebar=(jumlahlahan*jumlahvariasi); for(int i=0;i<jumlahlahan;i++) int counter_row=jumlahvariasi*i; for(int z=0;z<jumlahvariasi;z++) tinggi_lahan[i][z]=himpunan_data[counter_row+counter_row_lebar+z]; if(data_sampel==2) for(int i=0;i<jumlahlahan;i++) int counter_row=jumlahvariasi*i; for(int z=0;z<jumlahvariasi;z++) tinggi_lahan[i][z]=himpunan_data[counter_row+z]; int counter_row_lebar=(jumlahlahan*jumlahvariasi);
123 Lampiran 2-36 for(int i=0;i<jumlahlahan;i++) int counter_row=jumlahvariasi*i; for(int z=0;z<jumlahvariasi;z++) lebar_lahan[i][z]=himpunan_data[counter_row+counter_row_lebar+z]; cout<<" "<<endl; cout<<" MULAI PROSES CSO UNTUK LAND ALLOCATION "<<endl; cout<<" "<<endl; write<<" "<<endl; write<<" MULAI PROSES CSO UNTUK LAND ALLOCATION "<<endl; write<<" "<<endl; seeking_counter=0; for(iterasi=1;iterasi<=max_iterasi;iterasi++) cout<<endl<<"iterasi ke - "<<iterasi<<endl; cout<<endl<<"======================"<<endl; write<<endl<<"iterasi ke - "<<iterasi<<endl; write<<endl<<"======================"<<endl; if(iterasi==1) for(int i=0;i<kucing;i++) for(int j=0;j<jumlahlahan;j++) double bil_acak=random(100); double bil_pembagi=99; data_random[i][j]=bil_acak/bil_pembagi;
124 Lampiran 2-37 for(int i=0;i<kucing;i++) for(int j=0;j<jumlahlahan;j++) double bil_acak=random(100); double bil_pembagi=99; data_kecepatan[i][j]=bil_acak/bil_pembagi; //random variasi bentuk if(iterasi==1) for(int i=0;i<kucing;i++) for(int j=0;j<jumlahlahan;j++) int var=random(5); variasi_bentuk[i][j]=var; for(int i=0;i<kucing;i++) double bil_acak=random(100); double bil_pembagi=99; data_flag[i]=bil_acak/bil_pembagi; permutasi_lahan_masuk(); akses_lahan(); fungsi_tujuan_land_allocation(); hitung_nilai_fitness(); cout<<"urutan Lahan Masuk Bentukan Dari Data Random Kucing Awal : "<<endl<<endl;
125 Lampiran 2-38 write<<"urutan Lahan Masuk Bentukan Dari Data Random Kucing Awal : "<<endl<<endl; for(int i=0;i<kucing;i++) cout<<"individu ke- "<<(i+1)<<" : "<<endl; write<<"individu ke- "<<(i+1)<<" : "<<endl; for(int j=0;j<jumlahlahan;j++) cout<<urutan_lahan_masuk[i][j]<<" "; write<<urutan_lahan_masuk[i][j]<<" "; cout<<endl; write<<endl; cout<<endl; write<<endl; cout<<"variasi Bentuk Yang Dipilih Data Kucing Awal : "<<endl<<endl; write<<"variasi Bentuk Yang Dipilih Data Kucing Awal : "<<endl<<endl; for(int i=0;i<kucing;i++) cout<<"individu ke- "<<(i+1)<<" : "<<endl; write<<"individu ke- "<<(i+1)<<" : "<<endl; for(int j=0;j<jumlahlahan;j++) cout<<(variasi_bentuk[i][j]+1)<<" "; write<<(variasi_bentuk[i][j]+1)<<" "; cout<<endl<<endl; write<<endl<<endl; cout<<endl<<endl; write<<endl<<endl;
126 Lampiran 2-39 cout<<"tinggi Lahan Yang Diperoleh Masing-Masing Kucing: "<<endl<<endl; write<<"tinggi Lahan Yang Diperoleh Masing-Masing Kucing : "<<endl<<endl; for(int i=0;i<kucing;i++) cout<<"individu ke- "<<(i+1)<<" : "<<endl; write<<"individu ke- "<<(i+1)<<" : "<<endl; cout<<tinggi_total[i]<<endl<<endl; write<<tinggi_total[i]<<endl<<endl; jumlahtracing=floor(mr*kucing); jumlahseeking=kucing-jumlahtracing; class_penempatan_flag(); write<<endl<<"informasi Flag :"<<endl; cout<<endl<<"informasi_flag :"<<endl; cout<<"===================="<<endl<<endl; write<<"================="<<endl<<endl; for(int i=0;i<kucing;i++) write<<"kucing ke - "<<(i+1)<<" = "<<flag[i]<<" "<<endl; cout<<"kucing ke - "<<(i+1)<<" = "<<flag[i]<<" "<<endl; class_urutan_tinggi_lahan(); write<<endl<<"informasi Ranking Solusi :"<<endl; cout<<endl<<"informasi Ranking Solusi :"<<endl; cout<<"========================="<<endl<<endl; write<<"====================="<<endl<<endl; for(int i=0;i<kucing;i++) write<<"rank Ke - "<<(i+1)<<" = kucing ke - "<<(data_urutan_fungsitujuan[i]+1)<<endl; cout<<"rank Ke - "<<(i+1)<<" = kucing ke - "<<(data_urutan_fungsitujuan[i]+1)<<endl;
127 Lampiran 2-40 class_penentuan_xbest(); cout<<endl<<" x-best Terpilih Kucing - "<<(data_urutan_fungsitujuan[0]+1)<<endl; spc[data_urutan_fungsitujuan[0]]=1; write<<endl<<"informasi Nilai SPC :"<<endl; cout<<endl<<"informasi Nilai SPC :"<<endl; cout<<"========================="<<endl<<endl; write<<"====================="<<endl<<endl; for(int i=0;i<kucing;i++) write<<"kucing ke - "<<(i+1)<<" = "<<spc[i]<<endl; cout<<"kucing ke - "<<(i+1)<<" = "<<spc[i]<<endl; //belum di review class_klasifikasi_kucing(); write<<endl<<" Masuk Tahap Seeking :"<<endl; cout<<endl<<" Masuk Tahap Seeking :"<<endl; cout<<" ======================="<<endl; write<<" ===================="<<endl; int dimensi=cdc*jumlahlahan; for(int i=0;i<jumlahseeking;i++) if(spc[grup_seeking[i]]==1) for(int j=0;j<smp;j++) for(int k=0;k<jumlahlahan;k++) Memory_pool[j][k]=data_random[grup_seeking[i]][k]; for(int k=0;k<jumlahlahan;k++)
128 Lampiran 2-41 terpilih[k]=-1; if(j>0) z=0; counter=0; do while(z<dimensi) sum=0; choose=random(jumlahlahan-1); for(int i=0;i<jumlahlahan;i++) if(choose==terpilih[i]) sum=sum+1; else if(choose!=terpilih[i]) sum=sum+0; while(sum!=0); Memory_pool[j][choose]=Memory_pool[j][choose]+pow(- 1,z)*srd*Memory_pool[j][choose]; terpilih[counter]=choose; counter++; z++;
129 Lampiran 2-42 for(int h=0;h<jumlahlahan;h++) write_dimension[j][h]=terpilih[h]; else if(spc[grup_seeking[i]]==0) z=0; for(int j=0;j<smp;j++) for(int k=0;k<jumlahlahan;k++) Memory_pool[j][k]=data_random[grup_seeking[i]][k]; for(int k=0;k<jumlahlahan;k++) terpilih[k]=-1; counter=0; while(z<dimensi) do sum=0; choose=random(jumlahlahan-1); for(int i=0;i<jumlahlahan;i++) if(choose==terpilih[i]) sum=sum+1; else if(choose!=terpilih[i]) sum=sum+0; while(sum!=0);
130 Lampiran 2-43 Memory_pool[j][choose]=Memory_pool[j][choose]+pow(- 1,z)*srd*Memory_pool[j][choose]; terpilih[counter]=choose; counter++; z++; for(int h=0;h<jumlahlahan;h++) write_dimension[j][h]=terpilih[h]; cout<<endl<<"profil MEMORY POOL KUCING KE - "<<(grup_seeking[i]+1)<<" : "<<endl; write<<endl<<"profil MEMORY POOL KUCING KE - "<<(grup_seeking[i]+1)<<" : "<<endl; cout<<endl<<"dimensi Yang Berubah = "<<dimensi<<endl; write<<endl<<"dimensi Yang Berubah = "<<dimensi<<endl; cout<<"proses Seeking Kucing ke- "<<(grup_seeking[i]+1)<<endl; cout<<"nilai SPC = "<<spc[grup_seeking[i]]<<endl; cout<<"================================================="<<e ndl<<endl; write<<"proses Seeking Kucing ke- "<<(grup_seeking[i]+1)<<endl; write<<"nilai SPC = "<<spc[grup_seeking[i]]<<endl; write<<"================================================="<< endl<<endl; for(int i=0;i<smp;i++) cout<<"dimensi Berubah Copy-"<<(i+1)<<" = "; write<<"dimensi Berubah Copy-"<<(i+1)<<" = "; for(int j=0;j<jumlahlahan;j++)
131 Lampiran 2-44 if(write_dimension[i][j]!=-1) cout<<(write_dimension[i][j]+1)<<" "; write<<(write_dimension[i][j]+1)<<" "; cout<<endl; write<<endl; permutasi_lahan_masuk_mp(); pilihan_variasi_mp(); akses_lahan_mp(); fungsi_tujuan_land_allocation_mp(); hitung_nilai_fitness_mp(); cout<<endl<<"urutan Lahan Masuk Memory Pool Kucing - "<<(grup_seeking[i]+1)<<endl<<endl; write<<endl<<"urutan Lahan Masuk Memory Pool Kucing - "<<(grup_seeking[i]+1)<<endl<<endl; for(int i=0;i<smp;i++) cout<<"individu ke- "<<(i+1)<<" : "<<endl; write<<"individu ke- "<<(i+1)<<" : "<<endl; for(int j=0;j<jumlahlahan;j++) cout<<urutan_lahan_masuk_mp[i][j]<<" "; write<<urutan_lahan_masuk_mp[i][j]<<" "; cout<<endl<<endl; write<<endl<<endl; cout<<endl<<endl; write<<endl<<endl;
132 Lampiran 2-45 cout<<endl<<" Variasi Bentuk Yang Dipilih Memory Pool Kucing - "<<(grup_seeking[i]+1)<<endl<<endl; write<<endl<<"variasi Bentuk Yang Dipilih Memory Pool Kucing - "<<(grup_seeking[i]+1)<<endl<<endl; for(int i=0;i<smp;i++) cout<<"individu ke- "<<(i+1)<<" : "<<endl; write<<"individu ke- "<<(i+1)<<" : "<<endl; for(int j=0;j<jumlahlahan;j++) cout<<(variasi_bentuk_mp[i][j]+1)<<" "; write<<(variasi_bentuk_mp[i][j]+1)<<" "; cout<<endl<<endl; write<<endl<<endl; cout<<endl<<"hasil Tinggi Lahan Dari Memory Pool Individu - "<<(grup_seeking[i]+1)<<endl<<endl; write<<endl<<"hasil Tinggi Lahan Dari Memory Pool Individu - "<<(grup_seeking[i]+1)<<endl<<endl; for(int i=0;i<smp;i++) cout<<"copy-"<<(i+1)<<" = "<<tinggi_total_mp[i]<<endl; write<<"copy-"<<(i+1)<<" = "<<tinggi_total_mp[i]<<endl; hitungprobabilitasterpilih(); double bilrandom=random(99); double bilbagi=99; double random_smp=bilrandom/bilbagi; roulettewheel(grup_seeking[i],random_smp); cout<<endl<<"tabulasi Roulette Wheel : "<<endl; write<<endl<<"tabulasi Roulette Wheel : "<<endl; for(int i=0;i<smp;i++) write<<"probabilitas copy - "<<(i+1)<<" = "<<probabilitas[i]<<", Probabilitas relatif = "<<probabilitasr[i]<<endl;
133 Lampiran 2-46 cout<<"probabilitas copy - "<<(i+1)<<" = "<<probabilitas[i]<<", Probabilitas relatif = "<<probabilitasr[i]<<endl; cout<<endl<<"nilai Probabilitas Kumulatif : "<<endl; write<<endl<<"nilai Probabilitas Kumulatif : "<<endl; for(int i=0;i<smp;i++) write<<"probabilitas Kumulatif copy - "<<(i+1)<<" = "<<probabilitask[i]<<endl; cout<<"probabilitas Kumulatif copy - "<<(i+1)<<" = "<<probabilitask[i]<<endl; cout<<endl<<"nilai Random = "<<random_smp<<" posisi kucing Terpilih = "<<(indeks_terpilih_roulette+1); write<<endl<<"nilai Random = "<<random_smp<<" posisi kucing Terpilih = "<<(indeks_terpilih_roulette+1); cout<<endl<<"best Seeking Dalam Memory Pool Kucing ke- "<<(grup_seeking[i]+1)<<", copy ke- "<<(indeks_bestseeking+1); write<<endl<<"best Seeking Dalam Memory Pool Kucing ke- "<<(grup_seeking[i]+1)<<", copy ke- "<<(indeks_bestseeking+1); cout<<endl<<endl; write<<endl<<endl; simpan_terbaik_seeking(); cout<<endl<<"best Seeking Secara Global : "<<endl<<endl; write<<endl<<"best Seeking Secara Global : "<<endl<<endl; cout<<endl<<"urutan Lahan Masuk : "<<endl<<endl; write<<endl<<"urutan Lahan Masuk : "<<endl<<endl; for(int j=0;j<jumlahlahan;j++) cout<<lahan_best[j]<<" "; write<<lahan_best[j]<<" "; cout<<endl<<endl<<"variasi yang dipilih : "<<endl<<endl; write<<endl<<endl<<"variasi yang dipilih : "<<endl<<endl; for(int j=0;j<jumlahlahan;j++)
134 Lampiran 2-47 cout<<(variasi_best[j]+1)<<" "; write<<(variasi_best[j]+1)<<" "; cout<<endl<<endl<<"dengan Tinggi Lahan : "<<tinggi_best<<endl; write<<endl<<endl<<"dengan Tinggi Lahan : "<<tinggi_best<<endl; seeking_counter++; //mulai tahap tracing cout<<endl; write<<endl; for(int b=0;b<jumlahtracing;b++) double bilrandom=random(100); double bilpembagi=99; for(int l=0;l<jumlahlahan;l++) copy_cat[l]=data_random[grup_tracing[b]][l]; for(int l=0;l<jumlahlahan;l++) double random_tracing=bilrandom/bilpembagi; double selisih_xbest=x_best[l]-copy_cat[l]; double hasil_pengali=c1*random_tracing*selisih_xbest; data_kecepatan[grup_tracing[b]][l]=data_kecepatan[grup_tracing[b]][l]+hasil_pen gali; for(int l=0;l<jumlahlahan;l++)
135 Lampiran 2-48 data_random[grup_tracing[b]][l]=data_random[grup_tracing[b]][l]+data_k ecepatan[grup_tracing[b]][l]; if(data_random[grup_tracing[b]][l]<0) data_random[grup_tracing[b]][l]=data_random[grup_tracing[b]][l]*-1; permutasi_lahan_masuk(); akses_lahan(); fungsi_tujuan_land_allocation(); hitung_nilai_fitness(); class_urutan_tinggi_lahan(); class_penentuan_terbaik_tracing(); cout<<endl<<"best Tracing Secara Global : "<<endl<<endl; write<<endl<<"best Tracing Secara Global : "<<endl<<endl; cout<<endl<<"urutan Lahan Masuk : "<<endl<<endl; write<<endl<<"urutan Lahan Masuk : "<<endl<<endl; for(int j=0;j<jumlahlahan;j++) cout<<lahan_best_tracing[j]<<" "; write<<lahan_best_tracing[j]<<" "; cout<<endl<<endl<<"variasi Terpilih : "<<endl<<endl; write<<endl<<endl<<"variasi Terpilih : "<<endl<<endl; for(int j=0;j<jumlahlahan;j++) cout<<(variasi_best_tracing[j]+1)<<" "; write<<(variasi_best_tracing[j]+1)<<" "; cout<<endl<<endl<<"dengan Tinggi Lahan : "<<tinggi_best_tracing<<endl; write<<endl<<endl<<"dengan Tinggi Lahan : "<<tinggi_best_tracing<<endl; compare_best_tracing_dan_best_seeking();
136 Lampiran 2-49 if(iterasi<11) int counter_sa; counter_sa=data_urutan_fungsitujuan[kucing-1]; cout<<endl<<endl; cout<<"pemprosesan SIMULATED ANNEALING "<<endl; write<<endl<<endl; write<<"pemprosesan SIMULATED ANNEALING "<<endl; cout<<" "<<endl; cout<<"kucing ke- "<<counter_sa<<" Mengalami Proses Annealing "<<endl; cout<<" "<<endl<<endl; write<<" "<<endl; write<<"kucing ke- "<<counter_sa<<" Mengalami Proses Annealing "<<endl; write<<" "<<endl; suhu_sekarang=suhu_awal; for(int j=0;j<jumlahlahan;j++) solusi_sa[j]=data_random[counter_sa][j]; do cout<<" "<<endl; cout<<" Suhu Sekarang ="<<suhu_sekarang<<endl; write<<endl; write<<" "<<endl; write<<" Suhu Sekarang ="<<suhu_sekarang<<endl; copy_tinggi_cat(); select_1=random(jumlahlahan-1); select_2=random(jumlahlahan-1); do
137 Lampiran 2-50 while(select_1==select_2 select_1>select_2); write<<" Data kucing Lama :"<<endl<<endl;; for(int sel=0;sel<jumlahlahan;sel++) write<<data_random[counter_sa][sel]<<" "; cout<<endl; write<<endl; mutatecounter=(select_2-select_1)/2; j=select_1;j<=select_1+mutatecounter;j++) solusi_sa[j]=solusi_sa[select_2]; solusi_sa[select_2]=tempsa; for(int tempsa=solusi_sa[j]; select_2--; double random_sa_rejection=random(100); double random_sa_rejection_divisor=99; random_sa=(random_sa_rejection/random_sa_rejection_divisor)+0.5; //proses hitung fungsi write<<endl; write<<"data Kucing Mengalami Mutasi Inversi di kolom -"<<(select_1+1)<<" sampai kolom -"<<(select_2+1)<<" : "<<endl; write<<endl; for(int sel=0;sel<jumlahlahan;sel++) write<<solusi_sa[sel]<<" "; write<<endl<<endl; permutasi_lahan_masuk_sa(); pilihan_variasi_sa();
138 Lampiran 2-51 akses_lahan_sa(); fungsi_tujuan_land_allocation_sa(); fitness_comparation_beforeaftermutate(counter_sa); if(status==1) cout<<"solusi Hasil Mutasi Lebih Baik (Solusi Diterima)"<<endl; write<<"solusi Hasil Mutasi Lebih Baik (Solusi Diterima)"<<endl; if(status==2) cout<<"solusi Hasil Mutasi Lebih Buruk Atau = (Diterima Karena Probabilitas)"<<endl; write<<"solusi Hasil Mutasi Lebih Buruk Atau = (Diterima Karena Probabilitas)"<<endl; if(status==3) cout<<"solusi Hasil Mutasi Lebih Buruk (Solusi Baru Ditolak)"<<endl; write<<"solusi Hasil Mutasi Lebih Buruk (Solusi Baru Ditolak)"<<endl; suhu=suhu_sekarang*alpha; suhu_sekarang=suhu; write<<endl; cout<<"cat->new CAT ="<<tinggi_total_copy[counter_sa]<<"- >"<<tinggi_total[counter_sa]<<endl; write<<"cat->new CAT ="<<tinggi_total_copy[counter_sa]<<"- >"<<tinggi_total[counter_sa]<<endl; while(suhu_sekarang>=suhu_akhir); if(iterasi==max_iterasi)
139 Lampiran 2-52 form_hasil_akhir(); getch();
140 Lampiran 3-1 Lampiran 3: Hasil Running Program untuk Data 13 Lahan Komponen Best Seeking Secara Global : Urutan Lahan Masuk : Variasi yang dipilih : Dengan Tinggi Lahan : 50 Best Tracing Secara Global : Urutan Lahan Masuk : Variasi Terpilih : Dengan Tinggi Lahan : 69 ////////////////////////////////////////////////////////////////// /// IMPLEMENTASI ALGORITMA CSO PADA MASALAH PENJADWALAN /// /// LAND ALLOCATION /// /// FORM HASIL AKHIR /// ////////////////////////////////////////////////////////////////// Tinggi Terendah Dari Proses Land Allocation =50 Urutan Lahan Masuk Terbaik : URAIAN BENTUK LAHAN
141 Lampiran 3-2 Lahan KE 3 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 11 MENGGUNAKAN VARIASI BENTUK KE 5 Lahan KE 10 MENGGUNAKAN VARIASI BENTUK KE 5 Lahan KE 7 MENGGUNAKAN VARIASI BENTUK KE 5 Lahan KE 4 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 2 MENGGUNAKAN VARIASI BENTUK KE 4 Lahan KE 6 MENGGUNAKAN VARIASI BENTUK KE 4 Lahan KE 8 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 1 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 13 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 9 MENGGUNAKAN VARIASI BENTUK KE 5 Lahan KE 5 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 12 MENGGUNAKAN VARIASI BENTUK KE 1
142 Lampiran 4-1 Lampiran 4: Hasil Running Program untuk Data 75 Lahan Komponen Iterasi ke 1 ====================== Urutan Lahan Masuk Bentukan Dari Data Random Kucing Awal : individu ke 1 : individu ke 2 : individu ke 3 : individu ke 4 : individu ke 5 : individu ke 6 : individu ke 7 : individu ke 8 :
143 Lampiran individu ke 9 : individu ke 10 : individu ke 11 : individu ke 12 : individu ke 13 : individu ke 14 : individu ke 15 : individu ke 16 :
144 Lampiran 4-3 individu ke 17 : individu ke 18 : individu ke 19 : individu ke 20 : individu ke 21 : individu ke 22 : individu ke 23 : individu ke 24 : individu ke 25 :
145 Lampiran individu ke 26 : individu ke 27 : individu ke 28 : individu ke 29 : individu ke 30 : individu ke 31 : individu ke 32 : individu ke 33 :
146 Lampiran 4-5 individu ke 34 : individu ke 35 : individu ke 36 : individu ke 37 : individu ke 38 : individu ke 39 : individu ke 40 : individu ke 41 : individu ke 42 :
147 Lampiran individu ke 43 : individu ke 44 : individu ke 45 : individu ke 46 : individu ke 47 : individu ke 48 : individu ke 49 : individu ke 50 :
148 Lampiran 4-7 individu ke 51 : individu ke 52 : individu ke 53 : individu ke 54 : individu ke 55 : individu ke 56 : individu ke 57 : individu ke 58 : individu ke 59 :
149 Lampiran individu ke 60 : individu ke 61 : individu ke 62 : individu ke 63 : individu ke 64 : individu ke 65 : individu ke 66 : individu ke 67 :
150 Lampiran 4-9 individu ke 68 : individu ke 69 : individu ke 70 : individu ke 71 : individu ke 72 : individu ke 73 : individu ke 74 : individu ke 75 : individu ke 76 :
151 Lampiran individu ke 77 : individu ke 78 : individu ke 79 : individu ke 80 : individu ke 81 : individu ke 82 : individu ke 83 : individu ke 84 :
152 Lampiran 4-11 individu ke 85 : individu ke 86 : individu ke 87 : individu ke 88 : individu ke 89 : individu ke 90 : individu ke 91 : individu ke 92 : individu ke 93 :
153 Lampiran individu ke 94 : individu ke 95 : individu ke 96 : individu ke 97 : individu ke 98 : individu ke 99 : individu ke 100 : Variasi Bentuk Yang Dipilih Data Kucing Awal :
154 Lampiran 4-13 individu ke 1 : individu ke 2 : individu ke 3 : individu ke 4 : individu ke 5 : individu ke 6 : individu ke 7 : individu ke 8 :
155 Lampiran 4-14 individu ke 9 : individu ke 10 : individu ke 11 : individu ke 12 : individu ke 13 : individu ke 14 : individu ke 15 : individu ke 16 :
156 Lampiran individu ke 17 : individu ke 18 : individu ke 19 : individu ke 20 : individu ke 21 : individu ke 22 : individu ke 23 :
157 Lampiran 4-16 individu ke 24 : individu ke 25 : individu ke 26 : individu ke 27 : individu ke 28 : individu ke 29 : individu ke 30 : individu ke 31 :
158 Lampiran 4-17 individu ke 32 : individu ke 33 : individu ke 34 : individu ke 35 : individu ke 36 : individu ke 37 : individu ke 38 : individu ke 39 :
159 Lampiran individu ke 40 : individu ke 41 : individu ke 42 : individu ke 43 : individu ke 44 : individu ke 45 : individu ke 46 :
160 Lampiran 4-19 individu ke 47 : individu ke 48 : individu ke 49 : individu ke 50 : individu ke 51 : individu ke 52 : individu ke 53 : individu ke 54 :
161 Lampiran 4-20 individu ke 55 : individu ke 56 : individu ke 57 : individu ke 58 : individu ke 59 : individu ke 60 : individu ke 61 : individu ke 62 :
162 Lampiran individu ke 63 : individu ke 64 : individu ke 65 : individu ke 66 : individu ke 67 : individu ke 68 : individu ke 69 :
163 Lampiran 4-22 individu ke 70 : individu ke 71 : individu ke 72 : individu ke 73 : individu ke 74 : individu ke 75 : individu ke 76 : individu ke 77 :
164 Lampiran 4-23 individu ke 78 : individu ke 79 : individu ke 80 : individu ke 81 : individu ke 82 : individu ke 83 : individu ke 84 : individu ke 85 :
165 Lampiran individu ke 86 : individu ke 87 : individu ke 88 : individu ke 89 : individu ke 90 : individu ke 91 : individu ke 92 :
166 Lampiran 4-25 individu ke 93 : individu ke 94 : individu ke 95 : individu ke 96 : individu ke 97 : individu ke 98 : individu ke 99 : individu ke 100 :
167 Lampiran 4-26 Urutan Lahan Masuk : Variasi yang dipilih : Dengan Tinggi Lahan : 222 Best Tracing Secara Global : Urutan Lahan Masuk : Variasi Terpilih : Dengan Tinggi Lahan : 287
168 Lampiran 4-27 ////////////////////////////////////////////////////////////////// /// IMPLEMENTASI ALGORITMA CSO PADA MASALAH PENJADWALAN /// /// LAND ALLOCATION /// /// FORM HASIL AKHIR /// ////////////////////////////////////////////////////////////////// Tinggi Minimal Dari Proses Land Allocation =222 Urutan Lahan Masuk Terbaik : URAIAN BENTUK LAHAN : Lahan KE 13 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 72 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 37 MENGGUNAKAN VARIASI BENTUK KE 4 Lahan KE 68 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 41 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 51 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 62 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 7 MENGGUNAKAN VARIASI BENTUK KE 4 Lahan KE 55 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 53 MENGGUNAKAN VARIASI BENTUK KE 5 Lahan KE 44 MENGGUNAKAN VARIASI BENTUK KE 5 Lahan KE 4 MENGGUNAKAN VARIASI BENTUK KE 4 Lahan KE 22 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 39 MENGGUNAKAN VARIASI BENTUK KE 4 Lahan KE 74 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 6 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 64 MENGGUNAKAN VARIASI BENTUK KE 2
169 Lampiran 4-28 Lahan KE 30 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 25 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 27 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 63 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 69 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 15 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 17 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 33 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 28 MENGGUNAKAN VARIASI BENTUK KE 4 Lahan KE 23 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 5 MENGGUNAKAN VARIASI BENTUK KE 4 Lahan KE 56 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 12 MENGGUNAKAN VARIASI BENTUK KE 4 Lahan KE 11 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 42 MENGGUNAKAN VARIASI BENTUK KE 4 Lahan KE 29 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 34 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 19 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 10 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 40 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 57 MENGGUNAKAN VARIASI BENTUK KE 4 Lahan KE 14 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 43 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 49 MENGGUNAKAN VARIASI BENTUK KE 5 Lahan KE 20 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 66 MENGGUNAKAN VARIASI BENTUK KE 4 Lahan KE 2 MENGGUNAKAN VARIASI BENTUK KE 2
170 Lampiran 4-29 Lahan KE 58 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 50 MENGGUNAKAN VARIASI BENTUK KE 5 Lahan KE 70 MENGGUNAKAN VARIASI BENTUK KE 5 Lahan KE 59 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 21 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 47 MENGGUNAKAN VARIASI BENTUK KE 5 Lahan KE 65 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 35 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 67 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 3 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 9 MENGGUNAKAN VARIASI BENTUK KE 4 Lahan KE 61 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 75 MENGGUNAKAN VARIASI BENTUK KE 5 Lahan KE 16 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 73 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 54 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 26 MENGGUNAKAN VARIASI BENTUK KE 5 Lahan KE 48 MENGGUNAKAN VARIASI BENTUK KE 5 Lahan KE 52 MENGGUNAKAN VARIASI BENTUK KE 5 Lahan KE 18 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 45 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 8 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 36 MENGGUNAKAN VARIASI BENTUK KE 1 Lahan KE 46 MENGGUNAKAN VARIASI BENTUK KE 5 Lahan KE 60 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 32 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 71 MENGGUNAKAN VARIASI BENTUK KE 4
171 Lampiran 4-30 Lahan KE 31 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 38 MENGGUNAKAN VARIASI BENTUK KE 3 Lahan KE 1 MENGGUNAKAN VARIASI BENTUK KE 2 Lahan KE 24 MENGGUNAKAN VARIASI BENTUK KE 3
BAB II TINJAUAN PUSTAKA. Job shop scheduling problem (JSSP) adalah permasalahan optimasi
BAB II TINJAUAN PUSTAKA 2.1 Job Shop Scheduling Problem (JSSP) Job shop scheduling problem (JSSP) adalah permasalahan optimasi kombinatorial. Misalkan terdapat n buah job atau pekerjaan, yaitu J 1, J 2,,
PENERAPAN ALGORITMA CAT SWARM OPTIMIZATION (CSO) UNTUK MENYELESAIKAN MULTI - DEPOT VEHICLE ROUTING PROBLEM (MDVRP) SKRIPSI
PENERAPAN ALGORITMA CAT SWARM OPTIMIZATION (CSO) UNTUK MENYELESAIKAN MULTI - DEPOT VEHICLE ROUTING PROBLEM (MDVRP) SKRIPSI FATIMATUS ZAHRO PROGRAM STUDI S-1 MATEMATIKA DEPARTEMEN MATEMATIKA FAKULTAS SAINS
SKRIPSI HYBRID ALGORITMA CAT SWARM OPTIMIZATION (CSO) DAN TABU SEARCH (TS) UNTUK PENYELESAIAN PERMUTATION FLOWSHOP SCHEDULING PROBLEM (PFSP)
SKRIPSI HYBRID ALGORITMA CAT SWARM OPTIMIZATION (CSO) DAN TABU SEARCH (TS) UNTUK PENYELESAIAN PERMUTATION FLOWSHOP SCHEDULING PROBLEM (PFSP) QORIMA EMILA PUSPARANI PROGRAM STUDI S1 MATEMATIKA DEPARTEMEN
PENERAPAN ALGORITMA CAT SWARM OPTIMIZATION (CSO) UNTUK MENYELESAIKAN QUADRATIC ASSIGNMENT PROBLEM (QAP)
S K R I P S I PROGRAM STUDI S-1 MATEMATIKA DEPARTEMEN MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS AIRLANGGA 2015 i PENERAPAN ALGORITMA CAT SWARM OPTIMIZANON (CSO} UNTUK MENYELESAIKAN SUADRATTC,
LANGKAH-LANGKAH MENULISKAN PROGRAM DALAM TURBO C++
I.PENDAHULUAN 1. 1. ALGORITMA Algoritma adalah urutan aksi-aksi yang dinyatakan dengan jelas dan tidak rancu untuk memecahkan suatu masalah dalam rentang waktu tertentu. Setiap aksi harus dapat dikerjakan
IMPLEMENTASI ALGORITMA CAT SWARM OPTIMIZATION DALAM MENYELESAIKAN JOB SHOP SCHEDULING PROBLEM (JSSP)
E-Jurnal Matematika Vol. 5 (3), Agustus 2016, pp. 90-97 ISSN: 2303-1751 IMPLEMENTASI ALGORITMA CAT SWARM OPTIMIZATION DALAM MENYELESAIKAN JOB SHOP SCHEDULING PROBLEM (JSSP) I Wayan Radika Apriana 1, Ni
HYBRID ALGORITMA PARTICLE SWARM OPTIMIZATION (PSO) DENGAN SIMULATED ANNEALING (SA) PADA TRAVELING SALESMAN PROBLEM (TSP) SKRIPSI
HYBRID ALGORITMA PARTICLE SWARM OPTIMIZATION (PSO) DENGAN SIMULATED ANNEALING (SA) PADA TRAVELING SALESMAN PROBLEM (TSP) SKRIPSI ANISATUL FUAIDAH PROGRAM STUDI S-1 MATEMATIKA DEPARTEMEN MATEMATIKA FAKULTAS
PENGENALAN C++ Bab 1
PENGENALAN C++ Bab 1 1.1 SEJARAH C++ Bahasa C++ diciptakan oleh Bjarne Stroustrup di AT&T Bell Laboratories awal tahun 1980-an berdasarkan C ANSI (American National Standard Institute). Pertama kali, prototype
MODUL PRAKTIKUM ALGORITMA DAN PEMOGRAMAN I. Oleh : Wahyu Widodo, S.Kom
MODUL PRAKTIKUM ALGORITMA DAN PEMOGRAMAN I Oleh : Wahyu Widodo, S.Kom Pertemuan I Pengantar Algoritma dan Pengenalan C++ 1. 1. ALGORITMA Kata algoritma berasal dari kata-kata di bawah ini : Al Khuwarizmi
Komentar, Identifier, Konstanta dan Variabel
PEMROGRAMAN BERORIENTASI OBJEK Komentar, Identifier, Konstanta dan Variabel Budhi Irawan, S.Si, M.T KOMENTAR PROGRAM Dalam proses pengembangan sebuah program, pasti akan disibukan dengan penulisan kode-kode
BAB 2 LANDASAN TEORI
BAB 2 LANDASAN TEORI 2.1 Travelling Salesman Problem (TSP) Travelling Salesmen Problem (TSP) termasuk ke dalam kelas NP hard yang pada umumnya menggunakan pendekatan heuristik untuk mencari solusinya.
Struktur Bahasa C dan C++
Elemen Program Struktur Bahasa C dan C++ Bahasa C merupakan bahasa pendahulu dari bahasa C++. Pencipta C adalah Brian W. Kernighan dan Dennis M. Ritchie pada sekitar tahun 1972. C adalah bahasa pemrograman
ALGORITHM 7 C++ Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.com
ALGORITHM 7 C++ Dahlia Widhyaestoeti, S.Kom [email protected] dahlia74march.wordpress.com Struktur program dalam C++ C sebagai bahasa pendahulunya C++ C merupakan termasuk bahasa pemrograman
MODUL PRAKTIKUM ALGORITMA DAN PEMROGRAMAN
MODUL PRAKTIKUM ALGORITMA DAN PEMROGRAMAN PROGRAM STUDI TEKNIK KOMPUTER FAKULTAS TEKNIK UNIVERSITAS ISLAM 45 BEKASI 2015 1 Peraturan : 1. Mahasiswa harus berpakaian rapi dalam mengikuti praktikum. 2. Mahasiswa
Bahasa C. Dosen : Dhamayanti
Bahasa C Dosen : Dhamayanti C dan C++ Bahasa C merupakan bahasa pendahulu dari bahasa C++. Pencipta C adalah Brian W. Kernighan dan Dennis M. Ritchie pada sekitar tahun 1972. C adalah bahasa pemrograman
BAB 3 ANALISIS DAN PERANCANGAN APLIKASI
27 BAB 3 ANALISIS DAN PERANCANGAN APLIKASI 3.1 Analisis Pada subbab ini akan diuraikan tentang analisis kebutuhan untuk menyelesaikan masalah jalur terpendek yang dirancang dengan menggunakan algoritma
ERWIEN TJIPTA WIJAYA, ST.,M.KOM
ERWIEN TJIPTA WIJAYA, ST.,M.KOM DEFINISI ALGEN adalah algoritma yang memanfaatkan proses seleksi alamiah yang dikenal dengan evolusi Dalam evolusi, individu terus menerus mengalami perubahan gen untuk
BAB II TINJAUAN PUSTAKA
BAB II TINJAUAN PUSTAKA 2.1 Tinjauan Pustaka (Samuel, Toni & Willi 2005) dalam penelitian yang berjudul Penerapan Algoritma Genetika untuk Traveling Salesman Problem Dengan Menggunakan Metode Order Crossover
Pendekatan Algoritma Genetika pada Peminimalan Fungsi Ackley menggunakan Representasi Biner
Vol. 7, 2, 108-117, Januari 2011 Pendekatan Algoritma Genetika pada Peminimalan Fungsi Ackley menggunakan Representasi Biner Jusmawati Massalesse Abstrak Tulisan ini dimaksudkan untuk memperlihatkan proses
PENGENALAN C++ DADANG MULYANA 2012
PENGENALAN C++ dadang mulyana 202 PENGENALAN C++ DADANG MULYANA 202 Bahasa C merupakan bahasa pendahulu dari bahasa C++. Pencipta C adalah Brian W. Kernighan dan Dennis M. Ritchie pada sekitar tahun
BAB III PERANCANGAN. Gambar 3.1 di bawah ini mengilustrasikan jalur pada TSP kurva terbuka jika jumlah node ada 10:
BAB III PERANCANGAN Pada bagian perancangan ini akan dipaparkan mengenai bagaimana mencari solusi pada persoalan pencarian rute terpendek dari n buah node dengan menggunakan algoritma genetika (AG). Dari
PEMROGRAMAN TERSTRUKTUR OLEH : IR. H. SIRAIT, MT
PEMROGRAMAN TERSTRUKTUR C++ OLEH : IR. H. SIRAIT, MT PEMROGRAMAN C++ C sebagai bahasa pendahulunya C++ C merupakan termasuk bahasa pemrograman tingkat menengah. Pencipta C adalah Brian W. Kernighan dan
BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI
BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI 2.1 Tinjauan Pustaka. Penelitian serupa mengenai penjadwalan matakuliah pernah dilakukan oleh penelliti yang sebelumnya dengan metode yang berbeda-neda. Berikut
Dasar Pemrograman Mikrokontroler dengan Bahasa C
Dasar Pemrograman Mikrokontroler dengan Bahasa C Pokok Bahasan: 1. Penggunaan Fungsi (Using Functions) 2. Penanaman bahasa rakitan di dalam Program 'C' Tujuan Belajar: Setelah mempelajari dalam bab ini,
SWARM GENETIC ALGORITHM, SUATU HIBRIDA DARI ALGORITMA GENETIKA DAN PARTICLE SWARM OPTIMIZATION. Taufan Mahardhika 1
SWARM GENETIC ALGORITHM, SUATU HIBRIDA DARI ALGORITMA GENETIKA DAN PARTICLE SWARM OPTIMIZATION Taufan Mahardhika 1 1 Prodi S1 Kimia, Sekolah Tinggi Analis Bakti Asih 1 [email protected] Abstrak Swarm
BAB 2 LANDASAN TEORI
8 BAB 2 LANDASAN TEORI Pada bab ini akan dibahas beberapa konsep dasar dan beberapa definisi yang akan digunakan sebagai landasan berpikir dalam melakukan penelitian ini sehingga mempermudah penulis untuk
ABSTRAK. Universitas Kristen Maranatha
ABSTRAK Dalam beberapa tahun terakhir ini, peranan algoritma genetika terutama untuk masalah optimisasi, berkembang dengan pesat. Masalah optimisasi ini beraneka ragam tergantung dari bidangnya. Dalam
APLIKASI SIMULATED ANNEALING UNTUK MENYELESAIKAN TRAVELLING SALESMAN PROBLEM
Buletin Ilmiah Mat. Stat. dan Terapannya (Bimaster) Volume 03, No. 1 (2015), hal 25 32. APLIKASI SIMULATED ANNEALING UNTUK MENYELESAIKAN TRAVELLING SALESMAN PROBLEM Edi Samana, Bayu Prihandono, Evi Noviani
BAB 2 LANDASAN TEORI. 2.1 Algoritma
13 BAB 2 LANDASAN TEORI 2.1 Algoritma Dalam matematika dan komputasi, algoritma merupakan kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap
PENERAPAN ALGORITMA GENETIKA UNTUK TRAVELING SALESMAN PROBLEM DENGAN MENGGUNAKAN METODE ORDER CROSSOVER DAN INSERTION MUTATION
PENERAPAN ALGORITMA GENETIKA UNTUK TRAVELING SALESMAN PROBLEM DENGAN MENGGUNAKAN METODE ORDER CROSSOVER DAN INSERTION MUTATION Samuel Lukas 1, Toni Anwar 1, Willi Yuliani 2 1) Dosen Teknik Informatika,
Algoritma Evolusi Dasar-Dasar Algoritma Genetika
Algoritma Evolusi Dasar-Dasar Algoritma Genetika Imam Cholissodin [email protected] Pokok Bahasan 1. Pengantar 2. Struktur Algoritma Genetika 3. Studi Kasus: Maksimasi Fungsi Sederhana 4. Studi
1.PENDAHULUAN 1.1 Latar Belakang
1.PENDAHULUAN 1.1 Latar Belakang Pemakaian tenaga listrik dapat naik turun sebanding dengan besar kecilnya kegiatan dilakukan oleh manusia dalam periode tertentu. Untuk memenuhi kebutuhan listrik yang
IT234 - Algoritma dan Struktur Data. Ramos Somya
IT234 - Algoritma dan Struktur Data Ramos Somya Asal kata Algoritma berasal dari nama seorang ilmuan Persian yang bernama Abu Ja far Mohammed lbn Musa al-khowarizmi, yang menulis kitab al jabr w al-muqabala
PENGANTAR BAHASA C++
PENGANTAR BAHASA C++ SEJARAH SINGKAT BAHASA C Program C merupakan bahasa komputer yang sangat singkat & tidak memiliki kepanjangan. Bahasa ini diciptakan oleh Dennis Ritchie sekitar tahun 1972. Hingga
SIMULASI OPTIMASI PENEMPATAN KAPASITOR MENGGUNAKAN LOGIKA FUZZY DAN ALGORITMA GENETIKA PADA SISTEM TEGANGAN MENENGAH REGION JAWA BARAT
SIMULASI OPTIMASI PENEMPATAN KAPASITOR MENGGUNAKAN LOGIKA FUZZY DAN ALGORITMA GENETIKA PADA SISTEM TEGANGAN MENENGAH REGION JAWA BARAT Gahara Nur Eka Putra NRP : 1022045 E-mail : [email protected] ABSTRAK
BAB 2 LANDASAN TEORI. 2.1 Algoritma Genetika
6 BAB 2 LANDASAN TEORI 2.1 Algoritma Genetika Algoritma genetika merupakan metode pencarian yang disesuaikan dengan proses genetika dari organisme-organisme biologi yang berdasarkan pada teori evolusi
APLIKASI ALGORITMA GENETIKA UNTUK PENENTUAN TATA LETAK MESIN
APLIKASI ALGORITMA GENETIKA UNTUK PENENTUAN TATA LETAK MESIN Hari Purnomo, Sri Kusumadewi Teknik Industri, Teknik Informatika Universitas Islam Indonesia Jl. Kaliurang Km 4,5 Yogyakarta [email protected],
Algoritma Evolusi Real-Coded GA (RCGA)
Algoritma Evolusi Real-Coded GA (RCGA) Imam Cholissodin [email protected] Pokok Bahasan 1. Siklus RCGA 2. Alternatif Operator Reproduksi pada Pengkodean Real 3. Alternatif Operator Seleksi 4.
BAB 3 METODOLOGI Metode Penelitian. Dalam melakukan penelitian akan permasalahan ini, penulis menggunakan metode
BAB 3 METODOLOGI 3.1. Metode Penelitian Dalam melakukan penelitian akan permasalahan ini, penulis menggunakan metode rapid application development (RAD), dengan alur pengerjaan sebagai berikut: Gambar
BAB III ANALISA MASALAH DAN RANCANGAN PROGRAM
BAB III ANALISA MASALAH DAN RANCANGAN PROGRAM III.1. Analisa Masalah Perkembangan game dari skala kecil maupun besar sangat bervariasi yang dapat dimainkan oleh siapa saja tanpa memandang umur, dari anak
BAB III. Metode Penelitian
BAB III Metode Penelitian 3.1 Diagram Alir Penelitian Secara umum diagram alir algoritma genetika dalam penelitian ini terlihat pada Gambar 3.1. pada Algoritma genetik memberikan suatu pilihan bagi penentuan
PENGENALAN PROGRAM C++
1 PENGENALAN PROGRAM C++ SEJARAH BAHASA C C adalah bahasa pemrograman yang dapat dikatakan berada antara bahasa beraras rendah (bahasa yang berorientasi kepada mesin) dan bahasa beraras tinggi (bahasa
TUGAS RESUME MATERI KULIAH ALGORITMA DAN STRUKTUR DATA STRATEGI ALGORITMA : H
TUGAS RESUME MATERI KULIAH ALGORITMA DAN STRUKTUR DATA STRATEGI ALGORITMA NAMA NIM : HERIANTI : H12111003 FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM JURUSAN MATEMATIKA PROGRAM STUDI STATISTIKA UNIVERSITAS
BAB II KAJIAN PUSTAKA. Pada bab kajian pustaka berikut ini akan dibahas beberapa materi yang meliputi
BAB II KAJIAN PUSTAKA Pada bab kajian pustaka berikut ini akan dibahas beberapa materi yang meliputi graf, permasalahan optimasi, model matematika dari objek wisata di Yogyakarta, dan algoritma genetika
SUMBER BELAJAR PENUNJANG PLPG
SUMBER BELAJAR PENUNJANG PLPG 2017 [TIK] BAB VIII PEMROGRAMAN BERORIENTASI OBJEK [Alfa Faridh Suni] KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL GURU DAN TENAGA KEPENDIDIKAN 2017 BAB VIII
Rosihan Ari Yuana, S.Si, M.Kom Lisensi Dokumen: BAB I. PENDAHULUAN C++ Oleh:
PEMROGRAMAN C++ Oleh: Rosihan Ari Yuana, S.Si, M.Kom [email protected] Lisensi Dokumen: Copyright 2005 Dokumen ini dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
Lingkup Metode Optimasi
Algoritma Genetika Lingkup Metode Optimasi Analitik Linier Non Linier Single Variabel Multi Variabel Dgn Kendala Tanpa Kendala Numerik Fibonacci Evolusi Complex Combinasi Intelijen/ Evolusi Fuzzy Logic
Optimasi Masalah Pemuatan Peti Kemas Pada PT. Trias Sentosa
Optimasi Masalah Pemuatan Peti Kemas Pada PT. Trias Sentosa Hans Marsha 1, I Gede Agus Widyadana 2 Abstract: PT. Trias Sentosa is a flexible packaging film manufacturing company. Customers who buy from
P3 Pengantar Pemrograman C
P3 Pengantar Pemrograman C A. Sidiq Purnomo Prodi Teknik Informatika & Prodi Sistem Informasi Universitas Mercu Buana Yogyakarta Tujuan Mahasiswa dapat mengetahui dan memahami sejarah bahasa C, struktur
Part 2 - Algoritma & Pemrograman Konsep dasar Pemrograman
Part 2 - Algoritma & Pemrograman Konsep dasar Pemrograman Apa itu Program? Program adalah deretan instruksi yang digunakan untuk mengendalikan komputer, sehingga komputer dapat melakukan tindakan sesuai
ADLN Perpustakaan Universitas Airlangga SKRIPSI UMI LAILATUL MUYASSAROH
ALGORITMA PARTICLE SWARM OPTIMIZATION DENGAN LOCAL SEARCH (PSO-LS) SEBAGAI METODE PENYELESAIAN UNCAPACITATED FACILITY LOCATION PROBLEM (UFLP) SKRIPSI UMI LAILATUL MUYASSAROH PROGRAM STUDI S-1 MATEMATIKA
Analisis Operator Crossover pada Permasalahan Permainan Puzzle
Analisis Operator Crossover pada Permasalahan Permainan Puzzle Kun Siwi Trilestari [1], Ade Andri Hendriadi [2] Program Studi Teknik Informatika, Fakultas Ilmu Komputer, Universitas Singaperbanga Karawang
BAB II LANDASAN TEORI
17 BAB II LANDASAN TEORI 2.1 Algoritma Dalam matematika dan komputasi, algoritma merupakan kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap
Konsep Dasar Pemrograman Dan Pengenalan C++
PRAKTIKUM 1 DAN 2 Konsep Dasar Pemrograman Dan Pengenalan C++ I. KONSEP DASAR PEMROGRAMAN Program adalah deretan instruksi yang digunakan untuk mengendalikan komputer, sehingga komputer dapat melakukan
BAB III ALGORITMA MEMETIKA DALAM MEMPREDIKSI KURS VALUTA ASING. Untuk memberikan penjelasan mengenai prediksi valuta asing
BAB III ALGORITMA MEMETIKA DALAM MEMPREDIKSI KURS VALUTA ASING Untuk memberikan penjelasan mengenai prediksi valuta asing menggunakan algoritma memetika, akan diberikan contoh sebagai berikut. Contoh Misalkan
Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut
Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut 1. Pengenalan Bahasa C++ a. Elemen Bahasa C+ Bahasa C++ ditulis dari beberapa elemen, antara lain: Pernyataan Satu atau beberapa ekspresi
BAB 2 DASAR TEORI. 2.1 Teka-Teki Silang
BAB 2 DASAR TEORI 2.1 Teka-Teki Silang Teka-teki silang atau disingkat TTS adalah suatu permainan yang mengharuskan penggunanya untuk mengisi ruang-ruang kosong dengan huruf-huruf yang membentuk sebuah
BAB 1 PENDAHULUAN. 1.1 Latar Belakang
1 BAB 1 PENDAHULUAN 1.1 Latar Belakang Salah satu permasalahan optimasi kombinatorial yang terkenal dan sering dibahas adalah traveling salesman problem. Sejak diperkenalkan oleh William Rowan Hamilton
BAHASA PEMROGRAMAN C
BAHASA PEMROGRAMAN C A. Pengenalan Bahasa C diciptakan oleh Dennis Ritchie tahun 1972 di Bell Laboratories. Kelebihan Bahasa C: - Bahasa C tersedia hampir di semua jenis computer. - Kode bahasa C sifatnya
KONSEP ALGORITMA GENETIK BINER UNTUK OPTIMASI PERENCANAAN JADWAL KEGIATAN PERKULIAHAN
Jurnal Teknik dan Ilmu Komputer KONSEP ALGORITMA GENETIK BINER UNTUK OPTIMASI PERENCANAAN JADWAL KEGIATAN PERKULIAHAN (Binary Genetic Algorithm Concept to Optimize Course Timetabling) Iwan Aang Soenandi
ALGORITMA (KOMPUTER) : ATURAN PENULISAN DAN STRUKTUR DASARNYA
ALGORITMA (KOMPUTER) : ATURAN PENULISAN DAN STRUKTUR DASARNYA I. Pendahuluan Algoritma dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami. Algoritma dapat ditulis dalam bahasa natural/bahasa
P - 3 Bab 2 : Pengantar Pemrograman C
P - 3 Bab 2 : Pengantar Pemrograman C 2.1 Tujuan Mahasiswa dapat mengetahui dan memahami sejarah bahasa C, struktur program C dan alur eksekusi program C 2.2 Materi 1. Sejarah C 2. Interprenter dan Compiler
ABSTRAK. Job shop scheduling problem merupakan salah satu masalah. penjadwalan yang memiliki kendala urutan pemrosesan tugas.
ABSTRAK Job shop scheduling problem merupakan salah satu masalah penjadwalan yang memiliki kendala urutan pemrosesan tugas. Pada skripsi ini, metode yang akan digunakan untuk menyelesaikan job shop scheduling
Bab II Konsep Algoritma Genetik
Bab II Konsep Algoritma Genetik II. Algoritma Genetik Metoda algoritma genetik adalah salah satu teknik optimasi global yang diinspirasikan oleh proses seleksi alam untuk menghasilkan individu atau solusi
UJI KINERJA DAN SIMULASI PENENTUAN JARAK TERPENDEK DENGAN SIMULATED ANNEALING PADA SUHU TETAP DAN SUHU BERUBAH
UJI KINERJA DAN SIMULASI PENENTUAN JARAK TERPENDEK DENGAN SIMULATED ANNEALING PADA SUHU TETAP DAN SUHU BERUBAH Dian Savitri, S.Si, M.Si Jurusan Teknik Sipil Fakultas Teknik Unesa [email protected]
BAB III PEMBAHASAN. Berikut akan diberikan pembahasan mengenai penyelesaikan CVRP dengan
BAB III PEMBAHASAN Berikut akan diberikan pembahasan mengenai penyelesaikan CVRP dengan Algoritma Genetika dan Metode Nearest Neighbour pada pendistribusian roti di CV. Jogja Transport. 3.1 Model Matetematika
BAB 4 PENGENALAN BAHASA C
Bab 4 Pengenalan Bahasa C 35 BAB 4 PENGENALAN BAHASA C TUJUAN PRAKTIKUM 1. Mengetahui sejarah perkembangan bahasa C. 2. Mengerti struktur program bahasa C. 3. Mengerti konsep tipe data, variabel, & operator
APLIKASI ALGORITMA GENETIKA DALAM PENENTUAN DOSEN PEMBIMBING SEMINAR HASIL PENELITIAN DAN DOSEN PENGUJI SKRIPSI
Prosiding Seminar Nasional Matematika dan Terapannya 2016 p-issn : 2550-0384; e-issn : 2550-0392 APLIKASI ALGORITMA GENETIKA DALAM PENENTUAN DOSEN PEMBIMBING SEMINAR HASIL PENELITIAN DAN DOSEN PENGUJI
BAB II TINJAUAN PUSTAKA
BAB II TINJAUAN PUSTAKA 2.1 Fuzzy Local Binary Pattern (FLBP) Fuzzifikasi pada pendekatan LBP meliputi transformasi variabel input menjadi variabel fuzzy, berdasarkan pada sekumpulan fuzzy rule. Dalam
BAB II LANDASAN TEORI
BAB II LANDASAN TEORI 2.1 Penjadwalan Penjadwalan adalah penempatan sumber daya (resource) dalam satu waktu. Penjadwalan mata kuliah merupakan persoalan penjadwalan yang umum dan sulit dimana tujuannya
BAB III PEMBAHASAN. menggunakan model Fuzzy Mean Absolute Deviation (FMAD) dan penyelesaian
BAB III PEMBAHASAN Dalam bab ini akan dibahas mengenai pembentukan portofolio optimum menggunakan model Fuzzy Mean Absolute Deviation (FMAD) dan penyelesaian model Fuzzy Mean Absolute Deviation (FMAD)
BAB II LANDASAN TEORI
27 BAB II LANDASAN TEORI 2.1. Penelitian Terkait Penelitian terkait yang menggunakan algoritma genetika untuk menemukan solusi dalam menyelesaikan permasalahan penjadwalan kuliah telah banyak dilakukan.
Pengantar Kecerdasan Buatan (AK045218) Algoritma Genetika
Algoritma Genetika Pendahuluan Struktur Umum Komponen Utama Seleksi Rekombinasi Mutasi Algoritma Genetika Sederhana Referensi Sri Kusumadewi bab 9 Luger & Subblefield bab 12.8 Algoritma Genetika 1/35 Pendahuluan
PENDEKATAN FIREFLY ALGORITHM (FA) UNTUK MENYELESAIKAN MASALAH PENGEPAKAN PERSEGI TIGA DIMENSI SKRIPSI
PENDEKATAN FIREFLY ALGORITHM (FA) UNTUK MENYELESAIKAN MASALAH PENGEPAKAN PERSEGI TIGA DIMENSI SKRIPSI DESSY PITON S BUNGA PERTIWI PROGRAM STUDI S-1 MATEMATIKA DEPARTEMEN MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI
BAB II TINJAUAN PUSTAKA
6 BAB II TINJAUAN PUSTAKA Pada bagian pada bagian ini akan diuraikan tentang tinjauan pustaka dan landaran teori yang sesuai dengan ACO dan AG. 2.1 Algoritma Ant Colony Optimization Secara umum pencarian
Zbigniew M., Genetic Alg. + Data Structures = Evolution Program, Springler-verlag.
Zbigniew M., Genetic Alg. + Data Structures = Evolution Program, Springler-verlag. 12/11/2009 1 Ditemukan oleh Holland pada tahun 1975. Didasari oleh fenomena evolusi darwin. 4 kondisi yg mempengaruhi
MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman
I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman Jurusan Teknik Informatika Fakultas Teknik Universitas Maritim Raja Ali Haji ALGORITMA DAN PEMOGRAMAN I. ALGORITMA II. BAHASA
SKRIPSI HYBRID BACKPROPAGATION DENGAN FIREFLY ALGORITHM DAN SIMULATED ANNEALING UNTUK KLASIFIKASI CALON PENERIMA PINJAMAN BANK BERDASARKAN RESIKO
SKRIPSI HYBRID BACKPROPAGATION DENGAN FIREFLY ALGORITHM DAN SIMULATED ANNEALING UNTUK KLASIFIKASI CALON PENERIMA PINJAMAN BANK BERDASARKAN RESIKO GILANG FATHIRA MUTMA INAH PROGRAM STUDI S-1 MATEMATIKA
BAB I PENDAHULUAN. jumlah ketersediaan yang semakin menipis dan semakin mahal, membuat biaya
BAB I PENDAHULUAN 1.1 Latar Belakang Pembangkit Listrik di Indonesia pada umumnya merupakan pembangkit listrik thermal. Kebutuhan pembangkit thermal terhadap bahan bakar fosil dengan jumlah ketersediaan
TIPE DATA, VARIABLE, dan OPERATOR DELPHI
TIPE DATA, VARIABLE, dan OPERATOR DELPHI A. TIPE DATA Delphi merupakan bahasa pemrograman tingkat tinggi yang mendukung perancangan terstruktur dan berorientasi Object. Bahasa pemrograman ini berdasarkan
VARIABEL, TIPE DATA DAN EKSPRESI Bab 2
VARIABEL, TIPE DATA DAN EKSPRESI Bab 2 2.1 IDENTIFIER Indentifier adalah nama yang diberikan untuk nama objek, nama fungsi, nama variable, dll ( sifatnya case sensitive ). Identifier pada C++ terdiri dari
BAB II LANDASAN TEORI. berawal dari suatu ide untuk menyimpan segitiga Sierpinski menggunakan
BAB II LANDASAN TEORI Metode kompresi citra fraktal merupakan metode kompresi citra yang berawal dari suatu ide untuk menyimpan segitiga Sierpinski menggunakan Iterated Function System (IFS). Segitiga
ALGORITMA GENETIKA PADA PEMROGRAMAN LINEAR DAN NONLINEAR
Buletin Ilmiah Mat. Stat. dan Terapannya (Bimaster) Volume 5, No. 03(2016), hal 265 274. ALGORITMA GENETIKA PADA PEMROGRAMAN LINEAR DAN NONLINEAR Abdul Azis, Bayu Prihandono, Ilhamsyah INTISARI Optimasi
BAB 2 LANDASAN TEORI
7 BAB 2 LANDASAN TEORI 2.1 Penjadwalan Perkuliahan Penjadwalan memiliki pengertian durasi dari waktu kerja yang dibutuhkan untuk melakukan serangkaian untuk melakukan aktivitas kerja[10]. Penjadwalan juga
BAB III KONSEP DAN PERANCANGAN APLIKASI
BAB III KONSEP DAN PERANCANGAN APLIKASI 3.1 Konsep Pada bab ini penulis akan membahas konsep mengenai perangkat lunak yang digunakan serta akan dibahas mengenai tujuan, kegunaan dan untuk siapa aplikasi
PENYELESAIAN QUADRATIC ASSIGNMENT PROBLEM DENGAN MENGGUNAKAN BAT ALGORITHM
PENYELESAIAN QUADRATIC ASSIGNMENT PROBLEM DENGAN MENGGUNAKAN BAT ALGORITHM SKRIPSI PRACISTA LUSIANSYAH LAKSONO PROGRAM STUDI S-1 MATEMATIKA DEPARTEMEN MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS
Optimasi Multi Travelling Salesman Problem (M-TSP) Menggunakan Algoritma Genetika
Optimasi Multi Travelling Salesman Problem (M-TSP) Menggunakan Algoritma Genetika Wayan Firdaus Mahmudy ([email protected]) Program Studi Ilmu Komputer, Universitas Brawijaya, Malang, Indonesia Abstrak.
Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom
Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom Pengantar Bahasa Pemrograman Pascal Page 1 / 11 Pengenalan Pascal Pascal merupakan salah satu bahasa pemrograman tingkat tinggi. Pemrograman
Pengenalan Bahasa C++ Oleh : Agus Priyanto, M.Kom
Pengenalan Bahasa C++ Oleh : Agus Priyanto, M.Kom Tujuan Pembelajaran Mahasiswa dapat memahami konsep dasar pemrograman dengan bahasa C++ Mahasiswa dapat membuat aplikasi sederhana menggunakan bahasa C++,
PENERAPAN ALGORITMA GENETIKA DALAM PENYELESAIAN TRAVELLING SALESMAN PROBLEM WITH PRECEDENCE CONSTRAINTS (TSPPC)
PENERAPAN ALGORITMA GENETIKA DALAM PENYELESAIAN TRAVELLING SALESMAN PROBLEM WITH PRECEDENCE CONSTRAINTS (TSPPC) Yayun Hardianti 1, Purwanto 2 Universitas Negeri Malang E-mail: [email protected] ABSTRAK:
SKRIPSI HYBRIDRADIAL BASIS FUNCTION(RBF) DENGAN ALGORITMA GENETIKA DAN ALGORITMA SIMULATED ANNEALING UNTUK PREDIKSI KONSUMSI LISTRIK
SKRIPSI HYBRIDRADIAL BASIS FUNCTION(RBF) DENGAN ALGORITMA GENETIKA DAN ALGORITMA SIMULATED ANNEALING UNTUK PREDIKSI KONSUMSI LISTRIK LUTHFI HIDAYATI PROGRAM STUDI S-1 MATEMATIKA DEPARTEMEN MATEMATIKA FAKULTAS
Keg. Pembelajaran 2 : Mengenal Bahasa C++
Keg. Pembelajaran 2 : Mengenal Bahasa C++ 1. Tujuan Kegiatan Pembelajaran Setelah mempelajari materi kegiatan pembelajaran ini mahasiswa akan dapat : 1) Mengenal secara baik sintak-sintak dalam bahasa
BAB III IMPLEMENTASIALGORITMA GENETIK DAN ACS PADA PERMASALAHAN TRAVELLING SALESMAN PROBLEM
BAB III IMPLEMENTASIALGORITMA GENETIK DAN ACS PADA PERMASALAHAN TRAVELLING SALESMAN PROBLEM 3.1 TRAVELLING SALESMAN PROBLEM Sebelum membahas pencarian solusi Travelling Salesman Problem menggunakan algoritma
Penjadwalan Job Shop pada Empat Mesin Identik dengan Menggunakan Metode Shortest Processing Time dan Genetic Algorithm
Jurnal Telematika, vol.9 no.1, Institut Teknologi Harapan Bangsa, Bandung ISSN: 1858-251 Penjadwalan Job Shop pada Empat Mesin Identik dengan Menggunakan Metode Shortest Processing Time dan Genetic Algorithm
Aplikasi Algoritma Genetika Untuk Menyelesaikan Travelling Salesman Problem (TSP)
JTRISTE, Vol.1, No.2, Oktober 2014, pp. 50~57 ISSN: 2355-3677 Aplikasi Algoritma Genetika Untuk Menyelesaikan Travelling Salesman Problem (TSP) STMIK Handayani Makassar [email protected] Abstrak
BAB II KAJIAN TEORI. memindahkan barang dari pihak supplier kepada pihak pelanggan dalam suatu supply
BAB II KAJIAN TEORI Berikut diberikan beberapa teori pendukung untuk pembahasan selanjutnya. 2.1. Distribusi Menurut Chopra dan Meindl (2010:86), distribusi adalah suatu kegiatan untuk memindahkan barang
Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak
Modular Programming Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak mudah dihandle. dl Kesulitan: sulit mencari dan mengingat variabel-variabel aiabel yang sudah
2. Sebuah prosedur langkah demi langkah yang pasti untuk menyelesaikan sebuah masalah disebut : a. Proses b. Program c. Algoritma d. Prosesor e.
1. Dalam menyusun suatu program, langkah pertama yang harus dilakukan adalah : a.membuat program b. Membuat Algoritma c. Membeli komputer d. Proses e. Mempelajari program 2. Sebuah prosedur langkah demi
PENERAPAN ALGORITMA GENETIKA PADA PERENCANAAN LINTASAN KENDARAAN Achmad Hidayatno Darjat Hendry H L T
PENERAPAN ALGORITMA GENETIKA PADA PERENCANAAN LINTASAN KENDARAAN Achmad Hidayatno Darjat Hendry H L T Abstrak : Algoritma genetika adalah algoritma pencarian heuristik yang didasarkan atas mekanisme evolusi
