Anda di halaman 1dari 23

BAB I Pendahuluan 1.

1 Latar belakang Optimasi telah menjadi area riset yang cukup aktif selama beberapa dekade terakhir. Dengan semakin kompleksnya persoalan optimasi di dunia nyata, maka algoritme optimasi yang lebih baik selalu dibutuhkan. Partikel Swarm Optimizer (PSO) merupakan teknik yang relatif baru. PSO adalah teknik optimasi stokastik (suatu proses yang tingkah lakunya nondeterministik, sehingga keadaan selanjutnya dari suatu keadaan ditentukan oleh aksi-aksi yang dapat diperkirakan oleh proses itu sendiri dan oleh elemen acak) berbasiskan populasi yang dikembangkan oleh Dr. Eberhart dan Dr. Kennedy di tahun 1995, yang terinspirasi oleh tingkah laku sosial kawanan burung atau ikan yang mencari makan secara kolaboratif. Setiap anggota dalam kawanan tersebut mengadaptasi pola pencariannya dengan mempelajari pengalamannya sendiri & pengalaman anggota kawanan yang lain. Dalam PSO, anggota kawanan disebut partikel merepresentasikan solusi potensial yang merupakan sebuah titik di dalam ruang pencarian (search space). Global optimum dianggap sebagai lokasi makanan. Setiap partikel mempunyai nilai fitness dan kecepatan untuk mengatur arah terbangnya sesuai dengan pengalaman terbaik kawanan untuk mencari global optimum di dalam ruang solusi D-dimensional. PSO cukup mudah diimplementasikan dan secara empiris menunjukkan performa yang bagus dalam berbagai persoalan optimasi. Suatu persoalan optimasi pada dasarnya dapat dideskripsikan sebagai pengaturan atau pengisian nilai sekumpulan variabel pada suatu fungsi sedemikian rupa sehingga keluaran fungsi tersebut mendekati nilai yang diharapkan (minimum atau maksimum). Fungsi tersebut dinamakan dengan fungsi objektif atau kriteria dan jika fungsi objektif dapat didekomposisi menjadi beberapa fungsi objektif yang lebih spesifik dan maka persoalan optimasi diberi label sebagai persoalan optimasi multiobjektif atau persoalan optimasi multikriteria. Topik pembahasan ini secara umum membahas teknik optimasi yang berbasis pada populasi objek atau agen dan interaksinya dalam menyelesaikan persoalan bersama. Beberapa teknik yang diceritakan mulai dari algoritma evolusioner seperti algoritma genetik dan pemrograman genetik, memetic algorithm, hingga ACO (Ant Colony

Optimization) dan PSO (Partikel Swarm Optimization). Kedua topik terakhir merupakan topik yang dibahas secara lebih mendalam lewat review (dan atau implementasi). Tetapi dalam makalah ini kami akan membahas tentang Algoritma PSO dan penerapannya. 1.2 Perumusan Masalah Perumusan masalah dari makalah ini adalah bagaimana cara kerja algoritma Partikel Swarm Optimization (PSO) dalam menyelesaikan suatu kasus.

1.3 Tujuan Tujuan dari pembuatan makalah ini adalah Untuk mengetahui pembahasan algoritma Partikel Swarm Optimization (PSO)

BAB II PEMBAHASAN 2.1 Landasan Teori 2.1.1 Algoritma Dalam Algortima adalah jantung ilmu computer atau informatika. Banyak cabang dari ilmu komputer yang diacu dalan terminologi algoritma,misalnya algoritma perutean (routing) pesan di dalam jaringan komputer, algoritma berensenham untuk menggambar garis lurus (bidang grafik kumputer), algoritma Knuth-Morris-Pratt untuk mencari suatu pola di dalam teks (bidang information retrievel), dan sebagainya. Ditinjau dari asal usul kata, kata algoritma sendiri mempunyai sejarah yang cukup aneh. Kata ini tidak muncul di dalam kamus Webster sampai akhir tahun 1957. Orang hanya menemukan kata algorism yang berarti proses menghitung dengan angka Arab. Anda dikatakan algorist jika Anda menggunakan angka Arab. Para ahli bahasa berusaha menemukan asal kata algorism ini, namun hasilnya kurang memuaskan. Akhirnya para ahli sejarah matematika menemukan asal mula kata tersebut. Kata algorism berasal dari nama penulis buku arab yang terkenal, yaitu Abu Jaafar Muhammad Ibnu Musa al-Khuwarizmi (al-Khuwarizmi dibaca orang barat menjadi algorism).Al-Khuwarizmi menulis buku yang berjudul Kital al jabar wal-muqabala, yang artinya Buku pemugaran dan pengurangan (The book of restoration and reduction). Dari judul buku ini kita juga memperoleh akar kata aljabar (algebra). Perubahan dari kata algorism menjadi algoritm muncul karena kata algorism sering dikelirukan dengan arithmetic, sehingga akhiran sm beubah menjadi thm. Karena perhitungan dengan angka Arab sudah menjadi hal yang biasa/lumrah, maka lambat laun kata algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna aslinya. Dalam bahasa Indonesia, kata algorithm diserap menjadi algoritma. Pada tahun 1950, kata algoritma perama kali digunakan pada algoritma Euclidean (Euclids algorithm). Euclid, seorang matematikawan Yunani (lahir pada tahun 350 M), dalam bukunya yang berjudul Element menuliskan langkah-langkah untuk menemukan pembagi bersama terbesar (common greatest divisor atau gcd), dari dua buah bilangan bulat, m dan n (tapi Euclid tidak menyebut metodenya itu sebagai

algoritma, baru abad modernlah ornag-orang menybut metodenya itu sebagai algoritma Euclidean), Pembagi terbesar dari dua buah bilangan bulat tak-negatif adalah bilangan bulat positif terbesar yang habis membagi kedua bilangan tersebut. Misalnya,m=80dann=12. Semua factor pembagi adalah 1, 2, 4, 5, 8, 10, 16, 20, 40, 80 Dan semua factor pembagi 12 adalah 1, 2, 3, 4, 6, 12 Maka gcd(80,12)=4 Langkah-langkah mencari gcd(80,12) dengan algoritma Euclidean sebagai berikut : 80 dibagi 12 hasilnya = 6, sisa = 8 (atau: 80 = 6.12 + 8) 12 dibagi 8 hasilnya = 1, sisa = 4 (atau: 12 = 1.8 + 4) 8 dibagi 4 hasilnya = 2, sisa = 0 (atau: 8 = 4.2 + 0) Karena pembagian yang terakhir menghasilkan 0, maka sisa pembagian terakhir sebelum 0, yaitu 4, menjadi gcd(80,12). Jadi, gcd(80,12) = gcd(12,8) = gcd(4,0) = 4. Contoh-contoh algoritma yang sudah dijelaskan di atas memberi dua pesan penting. Pertama, sebuah algoritma harus benar. Kedua, algoritma harus berhenti, dan setelah berhenti,algoritma membri hasil yang benar. Menurut Donald E. Knuth dalam bukunya yang berjudul The art of Computer Programming, sebuah algoritma harus mempunyai lima ciri penting: 1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah trbatas. 2. Setiap langkah harus didefinisikan dengan tepat dan tidak brarti-dua (ambiguous). Misalnya, pernyataan bagilah p dengan sejumlah beberapa bilangan bulat positif,pernyataan ini dapat bermakna ganda. Berapakah yang dimaksud dengan beberapa? Algoritma menjadi jelas jika langkah tersebut ditulis bagilah p dengan 10 buah bilangan bulat positif. 3. Algoritma memiliki nol atau lebih masukan (input). Maukan ialah besaran yang diberikan kepada algoritma untuk diproses. Algoritma Euclidean mempunyai dua buah masukan, m dan n. 4. Algortima mempunyai nol atau lebih keluaran (output). Keluaran dapat berupa pesan atau besaran yang memiliki hubungan dengan masukan.

5. Algoritma harus sangkil (effective). Setiap langkah harus sederhana shingga dapat dikerjakan dalam sejumlah waktu yang masuk akal. . 2.1.2 Algoritma Pencarian Dalam ilmu komputer, sebuah algoritma pencarian dijelaskan secara luas adalah sebuah algoritma yang menerima masukan berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah tersebut, yang biasanya didapat dari evaluasi beberapa kemungkinan solusi. Sebagian besar algoritma yang dipelajari oleh ilmuwan komputer adalah algoritma pencarian. Himpunan semua kemungkinan solusi dari sebuah masalah disebut ruang pencarian. Algortima pencarian brute-force atau pencarian naif/uninformed menggunakan metode yang sederhana dan sangat intuitif pada ruang pencarian, sedangkan algoritma pencarian informed menggunakan heuristik untuk menerapkan pengetahuan tentang struktur dari ruang pencarian untuk berusaha mengurangi banyaknya waktu yang dipakai dalam pencarian. 2.1.3 Algoritma Metaheuristik Heuristik berasal dari kata Yunani heuriskein yang berarti seni untuk menemukan strategi dalam menyelesaikan persoalan sedangkan meta berarti metodologi tingkat tinggi atau lanjut (Talbi, 2009). Didalam ilmu komputer, metode heuristik merupakan suatu teknik untuk penyelesaian permasalahan yang tidak menekankan pada pembuktian apakah solusi yang didapatkan adalah benar (pembuktian apakah suatu solusi adalah benar merupakan fokus dari metode penyelesaian analitik), tetapi lebih menekankan pada performa komputasi dan kesederhanaan. Metode heuristik menggunakan konsep pendekatan. Menurut Talbi (2009), metaheuristik dapat didefinisikan sebagai metode lanjut (advanced) berbasis heuristic untuk menyelesaikan persoalan optimisasi secara efficient. Di dalam wikipedia, metaheuristik didefinisikan sebagai metode optimisasi yang dilakukan dengan memperbaiki kandidat penyelesaian secara iteratif sesuai merupakan suatu metode penyelesaian yang

dengan fungsi objektifnya. Metode ini mampu menghasilkan penyelesaian yang baik dalam waktu yang cepat (acceptable), tetapi tidak menjamin bahwa penyelesaian yang dihasilkan merupakan penyelesaian terbaik (optimal). Metode metaheuristik banyak dipakai dalam optimisasi stokastik (optimisasi stokastim merupakan optimisasi yang memiliki derajat ketidakpastian atau random). Menurut Blum and Roli (Blum & Roli, 2003), metaheuristik memiliki beberapa karakteristik dasar yaitu: a) b) Metaheuristik adalah strategi yang memandu proses pencarian Tujuan dari metaheuristik adalah untuk menjelajahi ruang pencarian secara

efficient untuk menemukan solusi optimal. c) Teknik metaheuristik berkisar dari prosedur pencarian local yang

sederhana sampai proses pembelajaran yang komplek d) e) Meteheuristik adalah metode pendekatan dan biasanya non-deterministik Metaheuristik dapat terdiri dari penggabungan beberapa mekanisme supaya

proses pencarian tidak terjebak dalam daerah terbatas di ruang pencarian. f) Konsep dasar dari metaheuristik memungkinkan pendeskripsian secara

abstrak g) Metaheuristik bersifat general/umum sehingga dapat diterapkan dalam

berbagai macam persoalan h) Metaheuristik dapat menggunakan domain pengetahuan khusus dalam

bentuk heuristik yang dikendalikan dengan strategi tingkat lanjut i) Metaheuristik dapat menggunakan pengalaman yang didapat selama

proses pencarian untuk menuntun proses pencarian. Dalam menentukan apakah metaheuristik adalah metode yang sesuai untuk menyelesaikan suatu permasalahan, ada beberapa hal yang perlu diperhatikan

misalnya kompleksitas permasalahan, ukuran input, struktur input dan waktu yang diperlukan untuk menyelesaikan masalah tersebut. Secara umum metehauristik dipakai untuk masalah-masalah yang komplek dan tidak bisa diselesaikan dengan mudah secara analitikal/eksak. Tidaklah terlalu bermanfaat menggunakan metaheuristik untuk persoalan yang dengan mudah dan cepat dapat diselesaikan secara eksak (penyelesaian eksak merupakan penyelesaian terbaik, tetapi seringkali metode ini tidak dapat diterapkan pada permasalahan optimisasi, sehingga dipakailah metode pendekatan). 2.1.4 Problem crew scheduling Problem crew scheduling merupakan permasalahan yang cukup kompleks bagi suatu maskapai penerbangan di Indonesia. Dari segi biaya yang harus dikeluarkan, biaya untuk penugasan kru (pilot, co-pilot, dan awak kabin) merupakan faktor biaya terbesar kedua setelah biaya bahan bakar (Kohl and Karish,2004). Dalam Kerati et.al.(2002) disebutkan bahwa proporsi biaya kru dari sebuah perusahaan penerbangan adalah 15-20% dari total biaya operasional. Sehingga hal ini membuat maskapai penerbangan melakukan efisiensi dalam memanfaatkan kru agar tetap kompetitif. Oleh karena itu, perusahaan penerbangan secara kontinu terus mencari jalan terbaik untuk melakukan perbaikan sistem penjadwalan agar dapat memanfaatkan sumber daya kru yang efisien. Karena jika penjadwalan kru pada maskapai terganggu, maka akan terjadi peningkatan pada biaya kru yang harus ditanggung oleh maskapai penerbangan. Sebaliknya apabila perusahaan dapat menurunkan biaya kru, maka penghematan yang dihasilkan akan cukup besar. Saat ini, penelitian mengenai crew scheduling telah banyak dilakukan, diantaranya Sangcham Kerati et.al.(2002), Kohl and Karish (2004), Abbink et.al. (2008), Medard and Sawhney (2005). Akan tetapi penelitian ini tetap menjadi topik yang menarik karena problem dalam crew scheduling merupakan problem optimasi kombinatorial yang bersifat kompleks dan sangat sulit untuk diselesaikan (Kerati et.al., 2002) dan di Indonesia penelitian ini belum banyak dilakukan. Hal ini juga berkaitan dengan adanya kebijakan dan aturan-aturan yang berbeda pada setiap perusahaan maskapai penerbangan. Untuk itu, berbagai penelitian tetap banyak dilakukan untuk mengembangkan metode untuk crew scheduling yang dapat menghasilkan output yang optimal dan memiliki kecepatan dalam computational time.

PSO dipilih dalam penelitian ini karena algoritma ini menunjukkan hasil yang bagus ketika digunakan untuk menyelesaikan beberapa masalah optimasi. Selain itu, algoritma ini memiliki beberapa keunggulan, yaitu mempunyai konsep sederhana, mudah diimplementasikan, dan efisien dalam perhitungan jika dibandingkan dengan algoritma matematika dan teknik optimisasi heuristik lainnya. Selain itu, kami menggunakan metode ini karena dalam penelitian-penelitian sebelumnya, belum ada yang menggunakan metode PSO dalam menyelesaikan problem crew scheduling. Pada penelitian terdahulu, problem crew scheduling pernah dikerjakan dengan menggunakan metode Genetic Algorithm, akan tetapi algoritma ini memerlukan waktu komputasi yang sangat lama, sedangkan masalah penjadwalan crew merupakan masalah krusial dalam penerbangan dan kecepatan dalam pembentukan jadwal merupakan faktor penting yang diperhitungkan. Untuk itu dalam penelitian ini algoritm PSO yang dari beberapa penelitian yang banyak dilakukan menghasilkan waktu komputasi yang lebih cepat, hal ini terlihat juga dari langkah-langkah pada algoritma ini tidak terlalu panjang. Penelitian ini dilengkapi batasan Fungsi optimasi yang akan digunakan yaitu meminimumkan biaya roster, meminimumkan deviasi jam terbang, dan meminimumkan total open time serta batasan roster yaitu Roster yang disusun memuat jadwal crew cockpit (pilot dan co-pilot) dengan single home base. Manfaat yang diharapkan pada penelitian ini adalah memberi alternatif metode untuk menyelesaikan masalah crew rostering problem pada maskapai penerbangan di Indonesia dan mengetahui metode yang memiliki performansi yang bagus dalam penyelesaian problem crew rostering. 2.2 Algoritma Partikel Swarm Optimization (PSO) 2.2.1 Sejarah Particle Swarm Optimization (PSO) adalah sebuah teknik stochastic optimization berdasarkan populasi yang terinspirasi oleh perilaku sosial dari pergerakan burung atau ikan (bird flocking or fish schooling). Teknik PSO dikemukakan oleh Russell C. Eberhart dan James Kennedy di tahun 1995.

Bersama dengan Ant Colony Optimization (ACO), PSO digolongkan ke dalam teknik metaheuristik optimasi swarm intelligence (SI) di mana prinsip sosio-psikologi yang mempengaruhi perilaku sosial makhluk hidup, diadopsi. Secara sederhana, sebuah sistem SI, yang diperkenalkan oleh Gerardo Beni dan Jing Wang di tahun 1989, terbentuk dari sebuah populasi yang terdiri dari individu-individu yang berinteraksi baik secara lokal satu sama lain maupun dengan lingkungan mereka dengan mengikuti aturan yang sangat sederhana [wikipedia]. Akibatnya, pengetahuan setiap individu berkembang optimal melalui interaksi sosial yang terjadi. Kemampuan berpikir bukan lagi menjadi sesuatu yang hanya bersifat pribadi melainkan juga interpersonal. Karena itulah, orang melihat PSO, demikian pula ACO, bukan hanya sekedar sebuah alat optimasi tapi juga sebuah alat yang melambangkan sosiokognisi (sociocognition) dari makhluk hidup dan lingkungannya (artificial agents), yang berdasarkan pada prinsip sosio-psikologi. Sebagai sebuah alat optimasi, PSO menawarkan suatu prosedur pencarian (search procedure) berdasarkan populasi yang di dalamnya individu-individu, yang disebut particles, mengubah posisi, atau state, mereka terhadap waktu. Mereka terbang mengitari suatu ruang pencarian multi dimensi (multidimensional search space). Selama penerbangan setiap individu menyesuaikan posisinya menurut pengalaman pribadinya, dan menurut pengalaman individu di sebelahnya, sehingga membentuk posisi terbaik yang sesuai untuk dirinya dan untuk individu di sebelahnya. Jadi, algoritma PSO menggabungkan metode-metode local search dengan metodemetode global search, yang menyeimbangkan antara eksplorasi dan eksploitasi. PSO telah sukses diterapkan di dalam pelbagai bidang penelitian dan aplikasi, termasuk pelatihan Artificial Neural Networks (ANN) dan permainan sudoku. Hal ini disebabkan karena PSO memberi hasil yang lebih baik melalui cara yang lebih cepat dan sederhana bila dibandingan dengan metode lain. Selain itu, PSO memiliki sedikit parameter untuk disesuaikan. Sehingga sebuah versi, dengan sedikit variasi, dapat bekerja dengan baik dalam banyak bentuk aplikasi, termasuk aplikasi yang spesifik dengan kebutuhan yang spesifik pula

2.2.2 Konsep Algoritma Partikel Swarm Optimization (PSO) Partikel Swarm Optimization (PSO) adalah salah satu dari teknik komputasi evolusioner, yang mana populasi pada PSO didasarkan pada penelusuran algoritma dan diawali dengan suatu populasi yang random yang disebut dengan partikel. Berbeda dengan teknik komputasi evolusioner lainnya, setiap partikel di dalam PSO juga berhubungan dengan suatu velocity. Partikel-partikel tersebut bergerak melalui penelusuran ruang dengan velocity yang dinamis yang disesuaikan menurut perilaku historisnya. Oleh karena itu, partikel-partikel mempunyai kecenderungan untuk bergerak ke area penelusuran yang lebih baik setelah melewati proses penelusuran. Partikel Swarm Optimization (PSO) mempunyai kesamaan dengan genetic algorithm yang mana dimulai dengan suatu populasi yang random dalam bentuk matriks. Namun PSO tidak memiliki operator evolusi yaitu crossover dan mutasi seperti yang ada pada genetic algorithm. Baris pada matriks disebut partikel atau dalam genetic algorithm sebagai kromosom yang terdiri dari nilai suatu variable. Setiap partikel berpindah dari posisinya semula ke posisi yang lebih baik dengan suatu velocity . Pada algoritma PSO vektor velocity diupdate untuk masing-masing partikel kemudian menjumlahkan vektor velocity tersebut ke posisi partikel. Update velocity dipengaruhi oleh kedua solusi yaitu global best yang berhubungan dengan biaya yang paling rendah yang pernah diperoleh dari suatu partikel dan solusi local best yang berhubungan dengan biaya yang paling rendah pada populasi awal. Jika solusi local best mempunyai suatu biaya yang kurang dari biaya solusi global yang ada, maka solusi local best menggantikan solusi global best . Kesederhanaan algoritma dan performansinya yang baik, menjadikan PSO telah menarik banyak perhatian di kalangan para peneliti dan telah diaplikasikan dalam berbagai persoalan optimisasi sistem tenaga seperti economic dispatch, design kontrol PID pada sistem AVR, kontrol tegangan dan daya reaktif, unit commitment dan lain sebagainya. PSO telah populer menjadi optimisasi global dengan sebagian besar permasalahan dapat diselesaikan dengan baik di mana variabelvariabelnya adalah bilangan riil.

Beberapa istilah umum yang biasa digunakan dalam Optimisasi Partikel Swarm dapat didefinisikan sebagai berikut : Swarm : populasi dari suatu algoritma. Partikel: anggota (individu) pada suatu swarm. Setiap partikel merepresentasikan suatu solusi yang potensial pada permasalahan yang diselesaikan. Posisi dari suatu partikel adalah ditentukan oleh representasi solusi saat itu. Pbest (Personal best): posisi Pbest suatu partikel yang menunjukkan posisi partikel yang dipersiapkan untuk mendapatkan suatu solusi yang terbaik. Gbest (Global best) : posisi terbaik partikel pada swarm. Velocity (vektor): vektor yang menggerakkan proses optimisasi yang menentukan arah di mana suatu partikel diperlukan untuk berpindah (move) untuk memperbaiki posisinya semula. Inertia weight : inertia weight di simbolkan w, parameter ini digunakan untuk mengontrol dampak dari adanya velocity yang diberikan oleh suatu partikel. 2.2.3 Langkah-Langkah dalam Algoritma Partikel Swarm Optimization (PSO) Prosedur standar untuk menerapkan algoritma PSO adalah sebagai berikut : a) Inisialisasi populasi dari partikel partikel dengan posisi dan velocity secara random dalam suatu ruang dimensi penelusuran. b) Evaluasi fungsi fitness optimisasi yang diinginkan di dalam variabel d pada setiap partikel. c) Membandingkan evaluasi fitness partikel dengan Pbestnya. Jika nilai yang ada lebih baik dibandingkan dengan nilai Pbestnya, maka Pbest diset sama dengan nilai tersebut dan Pi sama dengan lokasi partikel yang ada Xi dalam ruang dimensional d. d) Identifikasi partikel dalam lingkungan dengan hasil terbaik sejauh ini. e) Update velocity dan posisi partikel. f) Kembali ke step 2 sampai kriteria terpenuhi, biasanya berhenti pada nilai fitness yang cukup baik atau sampai pada jumlah maksimum iterasi. Seperti halnya dengan

algoritma evolusioner yang lain, algoritma PSO adalah sebuah populasi yang didasarkan penelusuran inisialisasi partikel secara random dan adanya interaksi diantara partikel dalam populasi. Di dalam PSO setiap partikel bergerak melalui ruang solusi dan mempunyai kemampuan untuk mengingat posisi terbaik sebelumnya dan dapat bertahan dari generasi ke generasi.

Misalkan kita mempunyai fungsi berikut min f(x) (1) dimana X(B) X X(A)

dimana X(B) adalah batas bawah dan X(A) adalah batas atas dari X. Prosedur PSO dapat dijabarkan dengan langkah-langkah sebagai berikut [2]: 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 X dengan rentang X(B) dan X(A) secara random sehingga didapat X1,X2, ...,XN. Setelah itu, untuk mudahnya,partikel j dan kecepatannya pada iterasi i dinotasikan sebagai X(i) j dan V (i) j Sehingga partikel-partikel awal ini akan menjadi X1(0),X2(0), ...,XN(0). Vektor Xj(0), (j = 1, 2, ...,N) disebut partikel atau vektor koordinat dari partikel. (seperti kromosom dalam algoritma genetika). Evaluasi nilai fungsi tujuan untuk setiap partikel dan nyatakan dengan f[X1(0)], f[X2(0)], ..., f[XN(0)] . 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 i = 1. 4. Pada iterasi ke-i, temukan 2 parameter penting untuk setiap partikel j yaitu:

(a) Nilai terbaik sejauh ini dari Xj(i) (koordinat partikel j pada iterasi i) dan nyatakan sebagai Pbest,j , dengan nilai fungsi obyektif paling rendah (kasus minimasi) , f[Xj(i)] , yang ditemui sebuah partikel j pada semua iterasi sebelumnya. Nilai terbaik untuk semua partikel Xj(i) yang ditemukan sampai iterasi ke-i, Gbest,dengan nilai fungsi tujuan paling kecil/minimum diantara semua partikel untuk semua iterasi sebelumnya, f[Xj(i)]. (b) Hitung kecepatan partikel j pada iterasi ke i dengan rumus sebagai berikut: Vj (i) = Vj(i 1) + c1r1[Pbest,j xj (i 1)] + c2r2[Gbest xj(i 1)], j = 1, 2, ...,N dimana c1 dan c2 masing-masing adalah learning rates untuk kemampuan individu (cognitive) dan pengaruh sosial (group), dan r1 dan r2 bilangan random yang berdistribusi uniforml dalam interval 0 dan 1. Jadi parameters c1 dan c2 dmenunjukkan bobot dari memory (position) sebuah partikel terhadap memory (posisi) dari kelompok(swarm). Nilai dari c1 dan c2 biasanya adalah 2 sehingga perkalian c1r1 dan c2r2 memastikan bahwa partikel-partikel akan mendekati target sekitar setengah selisihnya. (c) Hitung posisi atau koordinat partikel j pada iterasi ke-i dengan cara Xj(i) = Xj(i 1) + Vj(i); j = 1, 2, ...,N (3) Evaluasi nilai fungsi tujuan untuk setiap partikel dan nyatakan sebagai f[X1(i)], f[X2(i)], ..., f[XN(i)] . 5. Cek apakah solusi yang sekarang sudah konvergen. Jika posisi semua partikel menuju ke satu nilai yang sama, maka ini disebut konvergen. Jika belum konvergen maka langkah 4 diulang dengan memperbarui iterasi i = i + 1, dengan cara menghitung nilai baru dari Pbest,j dan Gbest. Proses iterasi ini dilanjutkan sampai semua partikel menuju ke satu titik solusi yang sama. Biasanya akan ditentukan dengan kriteria penghentian (stopping criteria), misalnya jumlah selisih solusi sekarang dengan solusi sebelumnya sudah sangat kecil. Contoh Misalkan kita mempunyai persoalan optimasi dengan satu variabel sebagai berikut f(x) = (100 x)2 (4) dimana 60 x 120

1. Tentukan jumlah partikel N = 4 Tentukan populasi awal secara random, misalkan didapat x1(0) = 80, x2(0) = 90, x3(0) = 110, x4(0) = 75. 2. Evaluasi nilai fungsi tujuan untuk setiap partikel xj(0) untuk j = 1, 2, 3, 4. dan nyatakan dengan f1 = f(80) = 400, f2 = f(90) = 100, f3 = f(110) = 100, f4 = f(75) = 625. 3. Tentukan kecepatan awal v1(0) = v2(0) = v3(0) = v4(0) = 0. Tentukan iterasi i = 1; Lalu ke langkah nomer 4. 4. Temukan Pbest,1 = 80, Pbest,2 = 90, Pbest,3 = 110, Pbest,4 = 75,Gbest = 90. Hitung v(j) dengan c1 = c2 = 1. Misalkan nilai random yang didapat, r1 = 0.4, r2 = 0.5, dengan rumus Vj(i) = Vj(i 1) + c1r1[Pbest,j xj(i 1)] + c2r2[Gbest xj(i 1)] diperoleh v1(1) = 0 + 0.4(80 80) + 0.5(90 80) = 5 v2(1) = 0 + 0.4(90 90) + 0.5(90 90) = 0 v3(1) = 0 + 0.4(110 110) + 0.5(90 110) = 10 v4(1) = 0 + 0.4(75 75) + 0.5(90 75) = 7.5 Sedangkan untuk nilai x adalah x1(1) = 80 + 5 = 85 x2(1) = 90 + 0 = 90 x3(1) = 110 10 = 100 x4(1) = 75 + 7.5 = 82.5 5. Evaluasi nilai fungsi tujuan sekarang pada partikel xj(1), f1(1) = f(85) = 225, f2(1) = f(90) = 100, f3(1) = f(100) = 0,

f4(1) = f(82.5) = 306.25. Sedangkan pada iterasi sebelumnya kita dapatkan f1(0) = f(80) = 400, f2(0) = f(90) = 100, f3(0) = f(110) = 100, f4(0) = f(75) = 625. Nilai dari f dari iterasi sebelumnya tidak ada yang lebih baik sehingga Pbest untuk masing- masing partikel sama dengan nilai x-nya. Gbest = 100 Cek apakah solusi x sudah konvergen, dimana nilai x saling dekat. Jika tidak, tingkatkan ke iterasi berikutnya i = 2. Lanjutkan ke langkah 4. 1. Pbest,1 = 85, Pbest,2 = 90, Pbest,3 = 100, Pbest,4 = 82.5,Gbest = 100 Hitung kecepatan baru dengan r1 = 0.3 dan r = 0.6 ( ini hanya sekedar contoh untuk menjelaskan penghitungan, dalam implementasi angka ini dibangkitkan secar arandom). v1(2) = 5 + 0.3(85 85) + 0.6(100 85) = 14 v2(2) = 0 + 0.3(90 90) + 0.6(100 90) = 6. v3(2) = 10 + 0.3(100 100) + 0.6(100 100) = 10 v4(2) = 7.5+ 0.3(82.5 82.5) + 0.6(100 82.5) = 18 Sedangkan untuk nilai x adalah x1(2) = 85 + 14 = 99 x2(2) = 90 + 6 = 96 x3(2) = 100 10 = 90 x4(2) = 82.5 + 18 = 100.5 2. Evaluasi nilai fungsi tujuan sekarang pada partikel xj(2), f1(2) = f(99) = 1, f2(2) = f(96) = 16, f3(2) = f(90) = 100 f4(2) = f(100.5) = 0.25. Jika dibandingkan dengan nilai f dari iterasi sebelumnya, ada nilai yang lebih baik dari nilai f sekarang yaitu f3(1) = 0, sehingga Pbest untuk partikel 3 sama dengan 100, dan

Gbest dicari dari min{1, 16, 0, 0.25} = 0 yang dicapai pada x3(1) = 100. Sehingga untuk iterasi berikutnya Pbest = (99, 96, 100, 100.5) dan Gbest = 100. Cek apakah solusi sudah konvergen, dimana nilai x saling dekat. Jika tidak konvergen, set i = 3, masuk ke iterasi berikutnya. Lanjutkan ke langkah berikutnya dengan menghitung kecepatan v dan ulangi langkah-langah selanjutnya sampai mencapai konvergen.

2.3 Studi Kasus Dalam makalah ini akan dijelaskan penggunaan Partikel Swarm Optimization (PSO) untuk menyelesaikan kasus Problem Crew Scheduling 2.3.1 Desain Kasus
Problem crew rostering yang akan diselesaikan pada penelitian ini diformulasikan dalam fungsi tujuan dan beberapa fungsi kendala. Berdasarkan model matematis pada Thesis Andik Sunarto (2010), permasalahan dalam crew rostering dapat dituliskan sebagai berikut: Index k. adalah indeks untuk kru pesawat. i. adalah indeks untuk anggota tiap jenis kru (1,,mk). j. adalah indeks rotasi/pairing yang ditugaskan untuk setiap jenis kru (1,,nk). l. jumlah hari dalam 1 bulan penjadwalan.(1,,31) Parameter

djk adalah panjang rotasi ke j yang ditugaskan pada kru ke-k. panjang rotasi diekspresikan sebagai jam terbang. dmaks,k adalah panjang flight time maksimum kru-k dalam satu bulan vjk adalah jumlah take off dalam rotasi j yang ditugaskan pada kru-k vmax,k adalah jumlah take off maksimum kru-k dalam satu bulan.

Dmin,jk adalah jumlah anggota kru-k minimum yang diperlukan untuk melengkapi rotasi-j tjk adalah jumlah total hari yang diperlukan kru-k untuk menyelesaikan rotasi j tmax,k adalah hari paling lama anggota kru-k terbang sbelum free day

Fungsi Tujuan Fungsi tujuan dalam airline crew rostering adalam meminimumkan tiga hal, yaitu total biaya roster, deviasi jam terbang antar crew member, dan open time.

1. Total biaya roster Biaya roster yang dibayarkan oleh maskapai penerbangan kepada seorang kru adalah biaya variabel (gaji/jam), sehingga biaya ini dapat diwakili oleh jam terbang aktual masing-masing kru dengan asumsi bahwa gaji/jam semua kru adalah sama. Fungsi tujuan meminimumkan biaya roster dapat diformulasikan sebagai berikut:

2. Deviasi hari terbang antar crew member Jika tk adalah hari terbang rata-rata per bulan pada anggota kru-k, maka

Sehingga fungsi minimasi deviasi total hari terbang per bulan antara anggota kru-k dapat diformulasikan sebagai berikut:

Dimana p adalah bilangan bulat positif. Dalam penelitian ini ditentukan bahwa p=1

3. Open time Open time merupakan hari dimana seorang anggota kru menganggur karena tidak ada tugas terbang. Jika jumlah hari dalam satu bulan penjadwalan adalah 31 hari, maka open time untuk anggota kru-k diformulasikan sebagai berkut:

Costrain

Constraint yang digunakan dalam problem ini berdasarkan aturan dari perusahaan. 1. Costrain flight time Pada aturan perusahaan, terdapat batasan jam terbang maksimum. Jam terbang maksimum untuk pilot sebesar 110 jam per bulan. Sehingga dmax,k = 110 untuk k =1,,7. Kendala jam terbang maksimum per bulan untuk anggota kru-k diformulasikan sebagai berikut.

2. Costrain duty period Dalam aturan perusahaan, batasan hari terbang dari maksimum yang diperbolehkan bagi seorang anggota kru-k tidak lebih dari 21 hari.

3. Costrain jumlah take off total selama satu bulan Jumlah take off maksimum yang boleh dilakukan oleh seorang pilot tidak melebihi 90 kali, sehingga vmax,k=90 untuk pilot, sedangkan untuk awak kabin tidak ada batasan take off. Kendala jumlah take off maksimum untuk anggota kru-k adalah sebagai berikut:

4. Costrain jumlah kebutuhan kru minimum setiap rotasi Jumlah kru yang diperhitungkan dalam batasan ini yaitu kru yang ber-home base di tempat yang sama, sedangkan yang tidak ber-home base di tempat yang sama tidak diperhitungkan.

5. Costrain free day (hari libur) Setelah melakukan penerbangan 7 hari berturut-turut, setiap anggota kru harus memiliki free day (hari libur).

6. Costrain rotasi free day Kendala ini mencerminkan bahwa angora kru-k tidak mendapatkan hari libur pada hari-hari pada saat rotasi-j yang sedang dilakukan belum selesai.

7. Costrain tidak boleh overlap Kendala ini digunakan untuk memastikan bahwa seorang kru tidak ditugaskan pada lebih dari satu penerbangan dalam waktu yang sama.

2.3.2 Tahapan Penyelesaian dengan Partikel Swarm Optimization (PSO)


Pada tahap ini dilakukan pengembangan algoritma untuk menyelesaikan permasalahan yang ada. Tahap pengembangan algoritma terbagi menjadi tahap penerapan algoritma dan tahap pembuatan model software. Pada tahap ini dilakukan penerapan algoritma PSO agar dapat menyelesaikan crew rostering problem.

Berikut ini merupakan tahapan dari pengembangan algoritma PSO untuk problem rostering. 1. Inisialisasi masalah

Pada tahap ini diperkenalkan masalah yang akan diselesaikan. Masalah pada penelitian ini adalah crew rostering pada maskapai dengan fungsi tujuan yaitu meminimumkan biaya roster, meminimumkan deviasi hari terbang antar crew member dan meminimumkan open time. Sedangkan constrain/kendala yang dihadapi yaitu adanya batasan berupa jam terbang maksimum, hari terbang

maksimum, jumlah take off total, jumlah kebutuhan kru minimum, kendala free day, dan kendala tidak boleh overlap.

2. Memasukkan parameter data maskapai. Data yang diperlukan untuk menyelesikan problem crew rostering ini antara lain availabilitas crew, parameter overlap antar pairing, parameter keberangkatan pairing, duty period setiap pairing, jam terbang setiap pairing, dan jumlah take off setiap pairing.

3. Inisialisasi parameter algoritma PSO Beberapa parameter algoritma PSO yang digunakan yaitu: Ukuran swarm/jumlah partikel yang dibangkitkan sebanyak 25 Learning fator aspek kognitif (c1) =2 Learning fator aspek sosial (c2) =2 Kriteria pemberhentiannya adalah jumlah iterasi yang dilakukan sebanyak 100 iterasi.

4. Inisialisasi posisi dan kecepatan awal partikel (x0 dan v0) Pada tahap ini akan, untuk posisi awal akan dibangkitkan matriks bilangan random biner (0 dan 1) dengan ukuran mk x nk sebanyak ukuran swarm yang digunakan. Untuk nilai kecepatan awal, akan dibangkitkan matriks bilangan random ukuran mk x nk sebanyak ukuran swarm yang digunakan

5. Evaluasi nilai fungsi tujuan. Dari partikel yang dibangkitkan akan dihitung nilai fungsi tujuan untuk masing-masing partikel.

6. Update nilai terbaik (Pbest dan Gbest). Dari nilai fungsi tujuan yang telah dihitung, dapat ditentukan nilai yang minimum untuk masing-masing partikel menjadi local best (Pbest) dan nilai yang paling minimum dari keseluruhan swarm menjadi nilai global best (Gbest).

7. Melakukan update kecepatan untuk semua partikel. Perumusan update velocity menggunakan menggunakan model sebagai berikut:

Ketika melakukan update kecepatan, akan digunakan inersia untuk mengontrol dampak velocity terhadap perubahan posisi partikel. Bobot inersia nilainya mengecil dengan bertambahnya iterasi digunakan dengan formula:

dimana max dan min masing-masing adalah nilai awal dan nilai akhir bobot inersia, imax adalah jumlah iterasi maksimum yang digunakan dan i adalah iterasi yang sekarang. Nilai yang digunakan adalah max = 0,9 dan min = 0,4

8. Melakukan update posisi untuk semua partikel. Karena problem crew rostering ini merupakan problem diskrit dengan output berupa nilai biner, maka digunakan update posisi dengan binary PSO, di mana posisi di update dengan menggunakan fungsi sigmoid dengan cara membangkitkan bilangan random berukuran mk x nk

sebanyak ukuran swarm dan membandingkan dengan nilai dari funsi sigmoid. Nilai x akan ditentukan berdasarkan persamaan sebagai berikut:

9. Evaluasi nilai fitness function (fungsi tujuan). Dari partikel yang dibangkitkan akan dihitung nilai fungsi tujuan untuk masing-masing partikel.

10. Melakukan pengecekan terhadap keriteria pemberhentian yang ditentukan. Apabila kriteria pemberhentian yang telah ditentukan tercapai, maka proses komputasi akan dihentikan, apabila belum tercapai, maka kembali ke langkah 6.

Aplikasi dalam Pemrograman

Inisialisasi Membiarkan f : Rn = R menjadi fitness atau beban yang harus diminimalkan. Misalkan diketahui S jumlah partikel dalam kerumunan itu, masing-masing memiliki posisi xi Rn dalam ruang-pencarian dan kecepatan sebuah vi Rn. Membiarkan pbest menjadi diketahui posisi terbaik partikel i dan biarkan gbest menjadi posisi yang paling terkenal dari seluruh mengeriap. Ini merupakan algoritma PSO dasar: a. Untuk setiap partikel i = 1, . . . ., S lakukan: b. Inisialisasi partikel posisi: xi ~ U(bb, bt), Dimana bb, bt adalah batas bawah dan atas ruang-pencarian dan U(. , .) adalah vektor acak. c. Menginisialisasi posisi paling dikenal: pbest = xi d .Menginisialisasi kecepatan: vi~ U(-(bt-bb),bt-bb)) e. Menginisialisasi posisi paling terkenal dari gerombolan: gbest = arg min (pbest) f. Sampai suatu kriteria terminasi terpenuhi (jumlah iterasi dilakukan misalnya, atau sampai kesesuaian yang memadai), ulangi: g. Untuk setiap partikel i = 1, . . . ., S lakukan: c1, c2 ~ U(0,1) vi = vi + c1r1 (pbest- xi) + c2rn (gbest- xi), xi = xi + vi, Perhatikan bahwa hal ini dilakukan tanpa perbaikan untuk fitness. f ( xi). < f (pbest) lakukan: tikel terkenal posisi: pbest = xi f (pbest). < f (gbest) update posisi swarm terbaik: gbest = pbest h. Sekarang solusi terbaik ditemukan.

- Penerapan (berikan contoh terapannya secara kasuistik)

BAB III PENUTUP 3.1 Kesimpulan Algoritma Partikel Swarm Optimization (PSO) memiliki tahapan utama dalam menyelesaikan masalah sebagai berikut: 1. A 2. D 3. 3.2 Saran

Daftar Pustaka