• Tidak ada hasil yang ditemukan

Masalah Pemotongan Persediaan (Cutting Stock Problem)

BAB III MASALAH PEMOTONGAN PERSEDIAAN

A. Masalah Pemotongan Persediaan (Cutting Stock Problem)

BAB IV. PENERAPAN ALGORITMA PSO UNTUK MENYELESAIKAN MASALAH PEMOTONGAN ROL KERTAS

BAB V. PENUTUP A. Kesimpulan B. Saran

DAFTAR PUSTAKA LAMPIRAN

10

BAB II

LANDASAN TEORI

A. Program Linear

Program linear adalah sebuah metode matematis yang berkarakteristik linear untuk menemukan suatu penyelesaian optimal dengan cara memaksimumkan atau meminimumkan fungsi obyektif atau tujuan terhadap suatu susunan kendala. Istilah program linear secara eksplisit telah menunjukkan karakteristiknya. Model matematika harus berupa fungsi linear dan penyelesaian optimal diturunkan melalui teknik optimasi linear.

Bentuk baku model matematis program linear dapat dilihat: Fungsi obyektif/tujuan:

Maksimumkan/minimumkan = ∑ =

Terhadap fungsi kendala-kendala

∑ {=}

=

(2.1)

dengan : Variabel keputusan ke-j : Parameter fungsi tujuan ke-j : Kapasitas kendala ke-i

: Parameter fungsi tujuan ke-i untuk variabel keputusan ke-j

∶ , , … , ∶ , , … ,

dengan setiap pertidaksamaan yang memiliki simbol, , , =, hanya dipilih salah satu. Fungsi obyektif atau fungsi tujuan disebut juga fungsi linear. Dengan disebut koefisien teknis, disebut koefisien ongkos, dan disebut suku tetap di

ruas kanan disingkat “suku tetap” atau “ruas kanan”. Jika , = , … , memenuhi semua kendala, maka disebut penyelesaian layak. Penyelesaian layak yang juga mengoptimumkan disebut penyelesaian optimum.

Setiap masalah minimum dapat dilihat seperti masalah maksimum dan sebaliknya. Ini dapat terlihat dari pengamatan berikut

=

= − ⁡ − ∑

=

(2.2)

Itu berarti untuk meminimumkan fungsi tujuan kita dapat memaksimumkan negatif dari fungsi tujuannya kemudian menegatifkan lagi hasil maksimumnya.

Solusi yang digunakan untuk menyelesaikan masalah program linear yaitu dengan metode grafik dan metode simpleks. Metode grafik digunakan untuk memecahkan persoalan model program linear dua variabel. Lalu pada tahun 1947 G. Dantzig mengembangkan metode yang dapat memecahkan persoalan model program linear dengan lebih dari dua variabel yang disebut metode simpleks. Namun kedua metode tersebut tidak akan dibahas di sini.

B. Program Linear Bilangan Bulat

Penyelesaian kasus masalah program linear dapat menghasilkan nilai optimal berupa bilangan pecahan. Padahal dalam kasus di dunia nyata penyelesaian masalah harus berupa bilangan bulat terutama apabila variabel-variabel keputusannya

mewakili item yang utuh dan tidak dapat dipecah seperti pada: masalah Knapsack dan masalah pemotongan persediaan. Program linear bilangan bulat adalah sebuah model penyelesaian matematis yang memungkinkan solusi masalah program linear yang berupa bilangan pecahan diubah menjadi bilangan bulat tanpa meninggalkan optimalitas penyelesaian. Program linear bilangan bulat secara umum terbagi menjadi 3 jenis yaitu program linear bilangan bulat murni (pure), program linear bilangan bulat campuran (mixed), dan program linear bilangan bulat 0-1 (binary). Program linear bilangan bulat murni terjadi apabila semua variabel dalam solusi optimal merupakan bilangan bulat. Sedangkan program linear bilangan bulat campuran terjadi apabila variabelnya ada yang bukan bilangan bulat. Selanjutnya untuk program linear bilangan bulat 0-1 (biner) secara khusus mensyaratkan agar semua variabel dalam solusi optimal harus merupakan bilangan bulat bernilai 0 atau 1.

Untuk masalah program linear bilangan bulat yang kasusnya besar, metode yang biasa digunakan yaitu metode pemotongan bidang (Cutting Plane), dan metode cabang dan batas (Branch and Bound). Namun disini hanya akan dibahas metode cabang dan batas untuk penyelesaian masalah program linear bilangan bulat.

Metode Pencabangan dan Pembatasan (Branch and Bound Method)

Metode cabang dan batas adalah suatu metode yang sangat sederhana namun sering digunakan untuk menyelesaikan masalah program linear bilangan bulat

(integer). Metode ini diusulkan pertama kali oleh A. H. Land dan A. G. Doig pada tahun 1960.

Metode ini secara umum dimulai dengan mencari solusi masalah program linear tanpa menambahkan syarat bahwa penyelesaian optimalnya harus berupa bilangan bulat.

1. Jika secara kebetulan penyelesaian optimal yang didapat berupa bilangan bulat, maka penyelesaian ini juga merupakan penyelesaian masalah program linear bulatnya.

2. Jika penyelesaian yang didapat bukan bilangan bulat, maka selanjutnya kendala baru yang membatasi nilai salah satu variabel yang tidak bulat ditambahkan.

3. Penambahan ini mengakibatkan terbaginya daerah layak menjadi 2 bagian sehingga terbentuklah 2 sub-masalah baru yang kemudian harus diselesaikan. Dengan kata lain, terjadi pencabangan dari masalah aslinya menjadi 2 sub-masalah baru.

4. Batas untuk nilai fungsi obyektif atau fungsi tujuan kemudian dapat ditentukan. Batas ini dapat digunakan untuk mengeliminasi sub-masalah yang tidak diperlukan dan menentukan apakah penyelesaian optimalnya sudah tercapai.

5. Jika penyelesaian yang didapat belum optimal, maka sub-masalah baru dipilih dan proses pencabangan berlanjut.

Untuk lebih jelasnya, metode ini bekerja sebagai berikut. Metode ini diawali dengan mencari penyelesaian optimal bagi masalah program linear biasa. Jadi

syarat bahwa nilai dari variabel-variabelnya harus berupa bilangan bulat diabaikan untuk sementara. Apabila dalam penyelesaian ini diperoleh variabel-variabel yang tidak bulat, katakanlah maka pasti dapat ditemukan dua bilangan bulat tak negatif dan + sehingga ⁡ < ⁡ < ⁡ + . Selanjutnya, masalah program linear bulat di atas dicabangkan menjadi dua masalah program linear bulat baru dengan menambahkan kendala

⁡ dan ⁡

⁡ + .

Proses pencabangan ini bertujuan untuk mempersempit daerah layak sehingga dapat dilakukan eliminasi terhadap penyelesaian yang tak bulat bagi dari tinjauan selanjutnya, tetapi masih tetap mempertahankan semua penyelesaian bilangan bulat yang mungkin terhadap masalah semula. Kemudian, proses pencabangan ini terus dilakukan hingga diperoleh suatu penyelesaian bilangan bulat yang pertama. Contoh 2.1 Minimumkan = + Dengan kendala { ++ , ⁡dan⁡bilangan⁡bulat Penyelesaian:

Menyelesaikan masalah program linear tersebut sehingga mendapatkan solusi optimal = , , = , dan = , . Penyelesaian tidak berbentuk bilangan bulat maka lanjut ke langkah 2.

Selanjutnya, masalah program linear bulat di atas dicabangkan menjadi dua masalah program linear bulat baru dengan menambahkan kendala

⁡ dan

. Sehingga didapatkan dua sub-masalah baru yang harus diselesaikan sebagai berikut. Sub-masalah 1: Minimumkan = + Dengan kendala { + +

⁡ , ⁡dan⁡bilangan⁡bulat dan Sub-masalah 2: Minimumkan = + Dengan kendala { + +

, ⁡dan⁡bilangan⁡bulat

Batas untuk nilai tujuan belum dapat ditentukan karena belum mendapatkan penyelesaian bilangan bulat.

Dari submasalah 1 diperoleh penyelesaian = , = , , dan = , . Penyelesaian tidak berbentuk bilangan bulat maka lanjut ke langkah 2.

Langkah 2: Sub-masalah program linear dicabangkan menjadi dua masalah program linear bulat baru dengan menambahkan kendala

dan

.

Karena

tidak berada dalam daerah layak maka kita memilih

. Jadi, diperoleh solusi optimal yaitu = .

Dari sub-masalah 2 diperoleh penyelesaian = , = − , , dan = , . Penyelesaian tidak berbentuk bilangan bulat maka lanjut ke langkah 2.

Langkah 2: Sub-masalah program linear dicabangkan menjadi dua masalah program linear bulat baru dengan menambahkan kendala

dan

.

Karena

tidak berada dalam daerah layak maka kita memilih

sehingga

= . Jadi, diperoleh solusi optimal yaitu = , = , dan = .

C. Masalah Knapsack

Masalah Knapsack adalah masalah program linear bilangan bulat yang hanya memiliki satu kendala dan penyelesaian berupa bilangan bulat. Masalah Knapsack biasanya digunakan untuk menyusun barang ke dalam karung yang besar yang tidak dapat memuat semua barang. Permasalahan Knapsack ini mencari solusi terbaik dari semua kemungkinan susunan barang yang akan dimasukkan ke dalam karung. Masalah Knapsack dapat dituliskan sebagai berikut.

Maksimumkan = ∑=

dengan kendala

=

(2.3)

dengan adalah bilangan bulat tak negatif = , , . . . , dan merupakan banyaknya barang ke-i yang dimasukan ke dalam karung, adalah ukuran barang ke-i yang bernilai positif dan adalah ukuran atau karung yang juga bernilai positif. Diasumsikan adalah nilai barang ke-i yang bernilai positif (variabel dengan

dapat segera dihapus). Perbandingan ⁄ merupakan nilai per satuan ukuran dari barang ke-i atau sebagai efisiensi variabel . Kita asumsikan lagi efisiensi variabel diurutkan secara menurun menurut nilai yang dikandungnya:

⁄ ⁄ ⁄ (2.4)

Untuk setiap solusi optimal dari masalah Knapsack memenuhi:

− ∑

=

< (2.5)

Pertidaksamaan (2.5) artinya sisa ukuran dari karung haruslah kurang dari barang ke-m.

Masalah Knapsack memiliki dua jenis berdasarkan penyelesaiannya yaitu Knapsack (0-1) dan Knapsack bilangan bulat. Pada makalah ini akan menggunakan Knapsack bilangan bulat yang akan diselesaikan menggunakan metode cabang dan batas.

Berikut adalah tahapan untuk menyelesaikan masalah Knapsack dengan metode cabang dan batas.

1. Menentukan nilai awal yaitu = dan = .

2. Menemukan perpanjangan cabang. Untuk = + , + , . . . , maka =

⌊( − ∑= )⁄ ⌋. Biasanya untuk = ⁄ . Maka didapat solusi

terbaik , , … , .

3. Memperbaiki solusi. Jika ∑= > , maka mengganti M dengan ∑=

4. Menemukan cabang selanjutnya.

Menemukan k terbesar sedemikian hingga − dimana > . Kita dapat tuliskan ̅ = untuk = , , . . . , − .

a. Jika k=1 maka berhenti; selain itu ganti k dengan k-1.

b. Jika = , maka kembali ke 4a, selain itu ganti dengan = − . c. Pencarian cabang yang lebih baik.

Jika ∑= ̅ + �+1

�+1( − ∑= ̅) (untuk koefisien bukan

bilang-an bulat positif) atau ∑= ̅ + �+1

�+1( − ∑= ̅ ) + (untuk

koe-fisien bilangan bulat positif) maka ̅ , ̅ , … , ̅ tidak layak diperiksa. Oleh karena itu, harus kembali ke langkah 4. Selain itu, kembali ke langkah 2.

Start END Apakah =1 > Ya

Mengganti solusi sebelumnya (1∗, 2 ,…, ) dengan 1, 2,…, . Tidak M Tidak berubah Apakah terdapat = 0 dan = 1?

Mereduksi k sampai diperoleh

> 0 lalu mengganti dengan ̅ = −1, dimana

̅= untuk = 1, 2, . . . , −1.

Tidak Apakah koefisien

bilangan bulat positif? Menentukan perpanjangan cabang.

Untuk = + 1, + 2, . . . , maka

=⌊( − ∑1

=1 )⁄ ⌋ dan

didapat solusi terbaik 1∗, 2 ,…, . Apakah ∑=1 ̅+ +1 +1( − ∑=1 ̅) ? Apakah ∑=1 ̅+ +1 +1( − ∑=1 ̅) + 1 ? Ya Menentukan nilai awal yaitu = 0 dan = 0. Vektor a Tidak Tidak Mengganti M dengan ∑ =1 Ya Ya Tidak

Contoh 2.2 Maksimumkan + + + dengan kendala , + , + + Jawab:

1. Menentukan nilai awal yaitu = dan = .

2. Menemukan cabang. Untuk = + , + , . . . , maka

= ⁄ , = = ⌊( − ∑ = )⁄ ⌋ = − , . ⁄ , = = ⌊( − ∑ = )⁄ ⌋ = − , . + , . ⁄ = = ⌊( − ∑ = )⁄ ⌋ = − , . + , . + . ⁄ =

Maka didapat solusi terbaik = , = = = . 3. Menentukan apakah solusi yang diperoleh meningkat?

Karena ∑= = , > = , maka = , dan = , =

= = diganti menjadi = , = = = .

4. Didapatkan k=3 = lalu dikurangkan sampai diperoleh k=1 dimana >

. Maka kita ganti = menjadi ̅ = . 5. Apakah cabang layak untuk dieksplor?

Karena koefisien bukan bilangan bulat positif, maka kita uji pertidaksamaan berikut dengan k=1 dan ̅ = .

∑ ̅ = + + + ( − ∑ ̅ = ) ∑ ̅ = + + + ( − ∑ ̅ = ) , . + /, − , . , + = , > ,

Karena pertidaksamaan tersebut tidak terpenuhi maka cabang layak untuk dieksplor. Kembali ke langkah 2.

2. Diketahui k=1 dan = ̅ = , maka diperoleh

= ⌊( − ∑ ̅ = )⁄ ⌋ = − , . ⁄ , = = ⌊( − ∑ ̅ = )⁄ ⌋ = − , . + , . ⁄ = = ⌊( − ∑ ̅ = )⁄ ⌋ = ⌊( − , . + , . + . )⁄ ⌋ = ⁡

3. Karena ∑= = > = , , maka = dan = , = =

= diganti menjadi = , = , = , = .

4. Didapatkan k=3 = lalu dikurangkan sampai diperoleh k=2 dimana >

5. Apakah cabang layak untuk dieksplor?

Karena koefisien bukan bilangan bulat positif, maka kita uji pertidaksamaan berikut dengan k=2 dan ̅ = , ̅ = .

∑ ̅ = + + + ( − ∑ ̅ = ) ∑ ̅ = + + + ( − ∑ ̅ = ) ( . + . ) + / ( − , . + , . ) + =

Karena pertidaksamaan tersebut terpenuhi maka cabang tidak layak untuk dieksplor. Kembali ke langkah 4.

4. Didapatkan k=2 = lalu dikurangkan sampai diperoleh k=1 dimana >

dan kita ganti = dengan ̅ = . 5. Apakah cabang layak untuk dieksplor?

Karena koefisien bukan bilangan bulat positif, maka kita uji pertidaksamaan berikut dengan k=1 dan ̅ = .

∑ ̅ = + + + ( − ∑ ̅ = ) ∑ ̅ = + + + ( − ∑ ̅ = ) ( . ) + /, ( − , . )

+ , = , >

Karena pertidaksamaan tersebut tidak terpenuhi maka cabang layak untuk dieksplor. Kembali ke langkah 2.

2. Diketahui k=1 dan = ̅ = , maka diperoleh

= ⌊( − ∑ ̅ = )⁄ ⌋ = − , . ⁄ , = = ⌊( − ∑ ̅ = )⁄ ⌋ = − , . + , . ⁄ = = ⌊( − ∑ ̅ = )⁄ ⌋ = ⌊( − , . + , . + . )⁄ ⌋ = ⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡

3. Karena ∑= = = = , maka = dan = , = diganti menjadi = , = , = , = .

4. Didapatkan k=3 dimana < , maka kita ganti = dengan ̅ = . 5. Apakah cabang layak untuk dieksplor?

Karena koefisien bukan bilangan bulat positif, maka kita uji pertidaksamaan berikut dengan k=1 dan ̅ = , ̅ = , ̅ = .

∑ ̅ = + + + ( − ∑ ̅ = ) ∑ ̅ = + + + ( − ∑ ̅ = ) ( . + . + ) + / ( − , . + , . + )

+ , = , >

Karena pertidaksamaan tersebut tidak terpenuhi maka cabang layak untuk dieksplor. Kembali ke langkah 2.

2. Diketahui k=3, = ̅ = , = ̅ = , dan = ̅ = , maka diperoleh

= ⌊( − ∑ ̅

=

)⁄ ⌋ = ⌊( − , . + , . + . )⁄ ⌋

= ⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡

3. Karena ∑= = , = , maka = dan = , =

diganti menjadi = , = , = , = .

4. Didapatkan k=3 = lalu dikurangkan sampai diperoleh k=2 dimana <

, maka kita ganti = dengan ̅ = . 5. Apakah cabang layak untuk dieksplor?

Karena koefisien bukan bilangan bulat positif, maka kita uji pertidaksamaan berikut dengan k=2 dan ̅ = , ̅ = .

∑ ̅ = + + + ( − ∑ ̅ = ) ∑ ̅ = + + + ( − ∑ ̅ = ) ( . + . ) + / ( − , . + , . ) + = ,

Karena pertidaksamaan tersebut terpenuhi maka cabang tidak layak untuk dieksplor. Kembali ke langkah 4.

4. Kita peroleh k=2 dimana < , maka kita ganti = dengan ̅ = . 5. Apakah cabang layak untuk dieksplor?

Karena koefisien bukan bilangan bulat positif, maka kita uji pertidaksamaan berikut dengan k=2 dan ̅ = , ̅ = .

∑ ̅ = + + + ( − ∑ ̅ = ) ∑ ̅ = + + + ( − ∑ ̅ = ) ( . + . ) + / ( − , . + , . ) + . = ,

Karena pertidaksamaan tersebut terpenuhi maka cabang tidak layak untuk dieksplor. Kembali ke langkah 4.

4. Didapatkan k=2 = lalu dikurangkan sampai diperoleh k=1 dimana <

, maka kita ganti = dengan ̅ = . 5. Apakah cabang layak untuk dieksplor?

Karena koefisien bukan bilangan bulat positif, maka kita uji pertidaksamaan berikut dengan k=1 dan ̅ = .

∑ ̅ = + + + ( − ∑ ̅ = ) ∑ ̅ = + + + ( − ∑ ̅ = ) ( . ) + /, ( − , . )

= , >

Karena pertidaksamaan tersebut tidak terpenuhi maka cabang layak untuk dieksplor. Kembali ke langkah 2.

2. Diketahui k=1 dan = ̅ = , maka diperoleh

= ⌊( − ∑ ̅ = )⁄ ⌋ = − , . ⁄ , = = ⌊( − ∑ ̅ = )⁄ ⌋ = − , . + , . ⁄ = = ⌊( − ∑ ̅ = )⁄ ⌋ = ⌊( − , . + , . + . )⁄ ⌋ = ⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡

3. Karena ∑= = = , maka = dan = , = diganti menjadi = , = , = , = .

4. Didapatkan k=3 = lalu dikurangkan sampai diperoleh k=2 dimana <

, maka kita ganti = dengan ̅ = . 5. Apakah cabang layak untuk dieksplor?

Karena koefisien bukan bilangan bulat positif, maka kita uji pertidaksamaan berikut dengan k=2 dan ̅ = , ̅ = .

∑ ̅ = + + + ( − ∑ ̅ = ) ∑ ̅ = + + + ( − ∑ ̅ = )

( . + . ) + / ( − , . + , . )

+ , = ,

Karena pertidaksamaan tersebut terpenuhi maka cabang tidak layak untuk dieksplor. Kembali ke langkah 4.

4. Kita peroleh k=2 dimana < , maka kita ganti = dengan ̅ = . 5. Apakah cabang layak untuk dieksplor?

Karena koefisien bukan bilangan bulat positif, maka kita uji pertidaksamaan berikut dengan k=2 dan ̅ = , ̅ = .

∑ ̅ = + + + ( − ∑ ̅ = ) ∑ ̅ = + + + ( − ∑ ̅ = ) ( . + . ) + / ( − , . + , . ) + = ,

Karena pertidaksamaan tersebut terpenuhi maka cabang tidak layak untuk dieksplor. Kembali ke langkah 4.

4. Kita peroleh k=2 dimana < , maka kita ganti = dengan ̅ = . 5. Apakah cabang layak untuk dieksplor?

Karena koefisien bukan bilangan bulat positif, maka kita uji pertidaksamaan berikut dengan k=2 dan ̅ = , ̅ = .

∑ ̅ = + + + ( − ∑ ̅ = ) ∑ ̅ = + + + ( − ∑ ̅ = ) ( . + . ) + / ( − , . + , . ) + , = ,

Karena pertidaksamaan tersebut terpenuhi maka cabang tidak layak untuk dieksplor. Kembali ke langkah 4.

4. Kita peroleh k=2 dimana < , maka kita ganti = dengan ̅ = . 5. Apakah cabang layak untuk dieksplor?

Karena koefisien bukan bilangan bulat positif, maka kita uji pertidaksamaan berikut dengan k=2 dan ̅ = , ̅ = .

∑ ̅ = + + + ( − ∑ ̅ = ) ∑ ̅ = + + + ( − ∑ ̅ = ) ( . + . ) + / ( − , . + , . ) = ,

Karena pertidaksamaan tersebut terpenuhi maka cabang tidak layak untuk dieksplor. Kembali ke langkah 4.

Jadi didapatkan solusi yaitu = , = , = , = dengan = , = , = , = , = dengan = , dan = , = , = , =

dengan = . Berikut pohon enumerasi dari solusi-solusi yang sudah didapat diatas.

Gambar 2.3: Pohon enumerasi yang dihasilkan dari contoh 2.2

D. Algoritma Particle Swarm Optimization (PSO)

Algoritma Particle Swarm Optimization (PSO) meniru perilaku sosial organisme (burung atau ikan), dimana perilaku sosial terdiri dari tindakan individu dan pengaruh dari individu-individu lain dalam suatu kelompok. Tiap-tiap makhluk

= = = = = = = = = dipotong = = = = = = = dipotong = dipotong = = = = = dipotong = dipotong = dipotong = dipotong = dipotong

hidup (selanjutnya disebut partikel) akan disebar di ruang pencarian solusi (search space) yang seragam secara acak. Kemudian setiap partikel akan berusaha berpindah posisi untuk mencari posisi lain yang dapat menghasilkan fungsi obyektif atau tujuan yang lebih baik. Setiap pergerakan partikel akan dipandu oleh dua hal, posisi terbaik yang pernah ditempati partikel tersebut dan posisi terbaik yang pernah ditemui oleh seluruh partikel. Sehingga, partikel-partikel tersebut akan bekerja sama dalam mencari solusi optimal.

Kata partikel menunjukkan, misalnya, seekor burung dalam kawanan burung. Setiap individu atau partikel berperilaku secara terdistribusi dengan cara menggunakan kecerdasannya (intelligence) sendiri dan juga dipengaruhi perilaku kelompok kolektifnya. Dengan demikian, jika satu partikel atau seekor burung menemukan jalan yang tepat atau pendek menuju ke sumber makanan, sisa kelompok yang lain juga akan dapat segera mengikuti jalan tersebut meskipun lokasi mereka jauh di kelompok tersebut.

Dalam algoritma PSO, kawanan diasumsikan mempunyai ukuran tertentu dengan setiap partikel posisi awalnya terletak di suatu lokasi yang acak dalam ruang multidimensi. Setiap partikel diasumsikan memiliki dua karakteristik: posisi dan kecepatan. Setiap partikel bergerak dalam ruang berdasarkan informasi yang diterima mengenai posisi yang baik tersebut. Sebagai contoh, misalnya perilaku burung-burung dalam kawanan burung. Meskipun setiap burung mempunyai keterbatasan dalam hal kecerdasan, biasanya ia akan mengikuti kebiasaan (rule) seperti berikut:

2. Burung tersebut akan mengarahkan terbangnya ke arah rata-rata keseluruhan burung.

3. Burung akan memposisikan diri dengan rata-rata posisi burung yang lain dengan menjaga jarak sehingga jarak antar burung dalam kawanan itu tidak terlalu jauh.

Dengan demikian, perilaku kawanan burung akan didasarkan pada kombinasi dari 3 faktor simpel berikut:

1. Kohesi – terbang bersama 2. Separasi – jangan terlalu dekat

3. Penyesuaian (alignment) – mengikuti arah bersama Jadi PSO dikembangkan dengan berdasarkan pada model berikut :

1. Ketika seekor burung mendekati target atau makanan (atau bisa minimum atau maksimum dari nilai suatu fungsi tujuan) secara cepat mengirim informasi kepada burung-burung yang lain dalam kawanan tersebut.

2. Burung yang lain akan mengikuti arah menuju ke makanan tetapi tidak secara langsung.

3. Ada komponen yang tergantung pada pikiran setiap burung, yaitu memorinya tentang apa yang sudah dilewati pada waktu sebelumnya.

Pada algoritma PSO, pencarian solusi dilakukan oleh suatu populasi yang terdiri dari beberapa partikel. Populasi dibangkitkan secara acak (random) dengan batasan nilai terkecil dan terbesar. Setiap partikel merepresentasikan posisi atau

solusi dari permasalahan yang dihadapi. Setiap partikel melakukan pencarian solusi yang optimal dengan melintasi ruang pencarian (search space). Hal ini dilakukan dengan cara setiap partikel melakukan penyesuaian terhadap posisi partikel terbaik dari partikel tersebut (local best) dan penyesuaian terhadap posisi partikel terbaik dari seluruh kawanan (global best) selama melintasi ruang pencarian. Jadi, penyebaran pengalaman atau informasi terjadi di dalam partikel itu sendiri dan antara suatu partikel dengan partikel terbaik dari seluruh kawanan selama proses pencarian solusi. Setelah itu, dilakukan proses pencarian untuk mencari posisi terbaik setiap partikel dalam sejumlah iterasi tertentu sampai didapatkan posisi yang relatif tetap (steady) dengan kata lain nilai fungsi mulai konvergen atau iterasi telah mencapai batas yang telah ditetapkan. Pada setiap iterasi, setiap solusi yang direpresentasikan oleh posisi partikel dievaluasi performanya dengan cara memasukkan solusi tersebut ke dalam fungsi kesesuaian (fitness function).

Setiap partikel diperlakukan seperti sebuah titik pada suatu dimensi ruang tertentu. Kemudian terdapat dua faktor yang memberikan karakter terhadap status partikel pada ruang pencarian, yaitu posisi partikel dan kecepatan partikel. Berikut ini merupakan formulasi matematis yang menggambarkan posisi dan kecepatan partikel pada suatu dimensi ruang tertentu:

� = , , ..., (2.6)

� = , , ..., (2.7)

dengan X = posisi partikel, V = kecepatan partikel, i = indeks partikel, t = iterasi ke-t, dan N = ukuran dimensi ruang. Adapun model matematika yang

menggambarkan mekanisme pembaruan status partikel kecepatan maupun posisi (updating velocity and position), adalah sebagai berikut:

� = � − + . . �− � − + . . �− � − (2.8)

� = � + � − (2.9)

dengan � = , , ..., �� merepresentasikan local best dari partikel ke-i (yang selanjutnya akan dke-isebut sebagake-i partke-icle best). Sedangkan = , , ..., �� merepresentasikan global best dari seluruh kawanan. Sedangkan dan adalah suatu konstanta yang bernilai positif yang biasanya disebut faktor pembelajaran (learning factor) atau faktor percepatan (acceleration factor). Kemudian dan adalah suatu bilangan acak (random) yang bernilai antara 0 sampai 1. Persamaan (2.8) digunakan untuk menghitung kecepatan partikel yang baru berdasarkan kecepatan sebelumnya, jarak antara posisi saat ini dengan posisi terbaik partikel (particle best), dan jarak antara posisi saat ini dengan posisi terbaik kawanan (global best). Kemudian partikel terbang menuju posisi yang baru berdasarkan persamaan (2.9). Setelah algoritma PSO ini dijalankan dengan sejumlah iterasi tertentu hingga mencapai kriteria pemberhentian, maka akan didapatkan solusi yang terletak pada posisi terbaik kawanan (global best).

Model ini akan disimulasikan dalam ruang dengan dimensi tertentu dengan sejumlah iterasi sehingga di setiap iterasi, posisi partikel akan semakin mengarah ke target yang dituju (minimasi atau maksimasi fungsi). Ini dilakukan hingga maksimum iterasi dicapai atau bisa juga digunakan kriteria penghentian yang lain yaitu nilai fungsi obyektif atau tujuan sudah konvergen ke nilai optimum.

Proses untuk mencari nilai minimum menggunakan algoritma PSO yaitu sebagai berikut :

1. Inisialisasi sekumpulan partikel secara acak atau random (setiap partikel merepresentasikan solusi yang mungkin untuk masalah optimasi). 2. Inisialisasi posisi dari setiap partikel (� ) dan kecepatan dari setiap

partikel (� ).

3. Hitung nilai kesesuaian dari setiap partikel berdasarkan formula dan model yang telah ditentukan sesuai dengan masalah optimasinya. 4. Untuk setiap partikel, bandingkan nilai kesesuaian dengan nilai

terbaiknya yang telah dicapai � (particle best), jika < , maka

diganti dengan .

5. Untuk setiap partikel, bandingkan nilai kesesuaian dengan nilai terbaik yang dicapai dalam populasi � (global best), jika < , maka

diganti dengan .

6. Berdasarkan bagian 4 dan 5, kecepatan (� ) dan posisi dari partikel () diubah.

Rumus pembaruan kecepatan (� ) :

� = � − + . . �− � − + . . � − � −

Adapun rumus pembaruan posisi (� ) adalah � = � − + � . 7. Jika telah mencapai kondisi akhir (mencapai nilai iterasi optimum atau

minimum) maka perulangan berhenti dan nilai optimumnya didapatkan namun jika belum maka diulangi pada nomor 3.

Berikut Pseudo code dari algoritma PSO :

For setiap partikel

Inisialisasi partikel

End Repeat

For setiap partikel

Hitung nilai kesesuaian

If nilai kesesuaian baru lebih baik daripada nilai kesesuian lama

Perbarui nilai kesesuian dari partikel tersebut

End End

Pilih partikel dengan nilai kesesuaian terbaik diantara semua partikel tetangganya dan simpan nilai kesesuaian terbaik tersebut

For setiap partikel

Hitung kecepatan partikel menggunakan rumus pertama di atas Perbarui posisi pertikel menggunakan rumus kedua di atas

End

Berikut ini adalah diagram alir dari algoritma PSO:

Tidak

Ya

Mulai

Bangkitkan parameter dari PSO

Inisialisasi posisi, kecepatan, dan ruang setiap partikel

Evaluasi nilai kesesuianterbaik dari tiap partikel, dan pilih Pbest dan Gbest

Hitung kembali nilai kesesuaian tiap partikel dan perbarui Pbest dan Gbest

Apakah kriteria terpenuhi?

Cetak nilai optimal dari variabel Bangkitkan iterasi dari t = 1

Cara Kerja Algoritma Particle Swarm Optimization

Misalkan kita mempunyai fungsi berikut: min f(x) dimana

Prosedur PSO dapat dijabarkan dengan langkah-langkah sebagai berikut: 1. Asumsikan bahwa ukuran kelompok atau kawanan (jumlah partikel)

adalah N. Untuk mengurangi jumlah evaluasi fungsi yang diperlukan untuk menemukan solusi, sebaiknya ukuran N tidak terlalu besar, tetapi juga tidak terlalu kecil, agar ada banyak kemungkinan posisi menuju solusi terbaik atau optimal. Jika terlalu kecil, sedikit kemungkinan menemukan posisi partikel yang baik. Terlalu besar juga akan membuat perhitungan jadi panjang. Biasanya digunakan ukuran kawanan adalah 20 sampai 30 partikel.

2. Bangkitkan populasi awal dengan rentang dan secara random sehingga didapat , , . . . , . Setelah itu, untuk mudahnya, posisi partikel j dan kecepatannya pada iterasi i dinotasikan sebagai dan . Sehingga partikel-partikel awal ini dinotasikan , , ..., dan kecepatan-kecepatan awal ini dinotasikan , , ..., . Vektor , = , , … , disebut vektor koordinat dari partikel dan vektor , = , , … , disebut vektor koordinat dari kecepatan. Evaluasi nilai fungsi tujuan untuk setiap partikel dan nyatakan dengan f[ ], f[ ], ..., f[ ].

3. Hitung kecepatan dari semua partikel. Semua partikel bergerak menuju titik optimal dengan suatu kecepatan. Awalnya semua kecepatan dari partikel diasumsikan sama dengan nol. Set iterasi = .

Dokumen terkait