MODIFIKASI STEPSIZE PADA METODE STEEPEST DESCENT DALAM PENGOPTIMUMAN FUNGSI: KASUS FUNGSI KUADRATIK DIAGONAL
FACHRIADI FADHILLAH
DEPARTEMEN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2014
PERNYATAAN MENGENAI SKRIPSI DAN SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA* Dengan ini saya menyatakan bahwa skripsi berjudul Modifikasi Stepsize pada Metode Steepest Descent dalam Pengoptimuman Fungsi: Kasus Fungsi Kuadratik Diagonal adalah benar karya saya dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir skripsi ini. Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut Pertanian Bogor. Bogor, Desember 2014 Fachriadi Fadhillah NIM G54100023
ABSTRAK FACHRIADI FADHILLAH. Modifikasi Stepsize pada Metode Steepest Descent dalam Pengoptimuman Fungsi: Kasus Fungsi Kuadratik Diagonal. Dibimbing oleh BIB PARUHUM SILALAHI dan MUHAMMAD ILYAS. Metode steepest descent adalah salah satu metode untuk menemukan titik optimum suatu fungsi tanpa kendala. Metode ini menggunakan stepsize yang diperoleh dari pencarian exact line. Metode ini mungkin menuju ke titik optimum dengan lambat. Beberapa penelitian telah dilakukan untuk mengatasi kelemahan ini dengan mengubah stepsize. Beberapa stepsize baru antara lain dikembangkan oleh Ya-xiang Yuan, Barzilai, dan Borwein. Karya ilmiah ini membandingkan waktu penyelesaian dan banyaknya iterasi untuk metode steepest descent, metode Yaxiang Yuan, dan metode Barzilai-Borwein dalam menyelesaikan suatu permasalahan pengoptimuman tanpa kendala untuk kasus fungsi kuadratik diagonal. Hasil numerik yang diperoleh menunjukan bahwa metode Ya-xiang Yuan dapat menemukan titik optimum hanya dengan tiga iterasi saja untuk fungsi dengan dua variabel. Selanjutnya metode Ya-xiang Yuan sangat efisien untuk masalah dengan dimensi kecil, sedangkan metode Barzilai-Borwein menunjukan hasil yang lebih baik untuk masalah dengan dimensi besar. Kata kunci: Modifikasi stepsize, Pengoptimuman fungsi tanpa kendala, Steepest descent
ABSTRACT FACHRIADI FADHILLAH. A Stepsize Modification for Steepest Descent Method in Optimization of a Function: a Diagonal Quadratic Function Case. Supervised by BIB PARUHUM SILALAHI and MUHAMMAD ILYAS. The steepest descent is one of the methods for unconstrained optimization. This method uses stepsize which is obtained by using exact line searches. The exact line searches along steepest descent direction may found the optimum point slowly. A number of researches have been conducted for solving this weakness by changing the stepsize. Some new stepsizes were developed by Ya-xiang Yuan, Barzilai, and Borwein. In this paper, the execution times and the number of iterations of the steepest descent method, the Ya-xiang Yuan method, and the Barzilai-Borwein method will be compared in solving an unconstrained optimization for diagonal quadratic function case. Numerical results showed that the Ya-xiang Yuan method can find the optimum point within three iterations for two variables functions. Furthermore, the Ya-xiang Yuan method is the most efficient for small scale problems, while the Barzilai-Borwein method showed better results for large scale problems. Keywords: Optimization of unconstrained function, Steepest descent, Stepsize modification
MODIFIKASI STEPSIZE PADA METODE STEEPEST DESCENT DALAM PENGOPTIMUMAN FUNGSI: KASUS FUNGSI KUADRATIK DIAGONAL
Skripsi sebagai salah satu syarat untuk memperoleh gelar Sarjana Sains pada Departemen Matematika
DEPARTEMEN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2014 FACHRIADI FADHILLAH
Judul Skripsi : Modifikasi Stepsize pada Metode Steepest Descent dalam Pengoptimuman Fungsi: Kasus Fungsi Kuadratik Diagonal Nama : Fachriadi Fadhillah NIM : G54100023
Disetujui oleh
Dr Ir Bib Paruhum Silalahi, MKom Pembimbing I
Muhammad Ilyas, MSi MSc Pembimbing II
Diketahui oleh
Dr Toni Bakhtiar, MSc Ketua Departemen
Tanggal Lulus:
PRAKATA Puji dan syukur penulis panjatkan kepada Allah subhanahu wa taβala atas segala karunia-Nya sehingga karya ilmiah ini berhasil diselesaikan. Judul karya ilmiah ini adalah Modifikasi Stepsize pada Metode Steepest Descent dalam Pengoptimuman Fungsi: Kasus Fungsi Kuadratik Diagonal. Terima kasih penulis ucapkan kepada Bapak Dr Ir Bib Paruhum Silalahi, Mkom dan Bapak Muhammad Ilyas, Msi MSc selaku pembimbing, serta Bapak Ruhiyat, SSi MSi yang telah banyak memberi saran, motivasi, dan bimbingan dalam penulisan karya ilmiah ini, serta kepada seluruh staf Departemen Matematika. Terima kasih juga penulis ucapkan kepada Bapak Chairul Chaniago, Ibu Radiah Azita, Rully Novriansyah, Redyan Febriansyah, Yoanka Khairunissa, Risya Ari Purnama, Tinneke Hakim Putri, Voira Alyssa Febriansyah, serta seluruh keluarga, atas segala doa dan kasih sayangnya. Ucapan terima kasih juga penulis berikan kepada para sahabat Erjodi Cahyo, Aisatul Mustaqimah, Intan Nabilla, Adi Kiswanto, Rayfan Ambrian, Laras Febi Amelia, Fachri Aditya, Annisyia Zarina, Zeta Fadilla, Annisa Primanitasari, Kiki Septiani, Gerry Kristian, Diah Putri Pertiwi, Chika Katelia, Nena Apriliana, seluruh mahasiswa Departemen Matematika Angkatan 45, 46, 47, 48, dan 49 serta teman-teman sekalian di luar Departemen Matematika baik di dalam Institut Pertanian Bogor maupun di luar Institut Pertanian Bogor atas kritik, saran, dan doanya selama pembuatan karya ilmiah ini. Semoga karya ilmiah ini bermanfaat.
Bogor, Desember 2014 Fachriadi Fadhillah
DAFTAR ISI DAFTAR TABEL
vi
DAFTAR GAMBAR
vi
DAFTAR LAMPIRAN
vi
PENDAHULUAN
1
Latar Belakang
1
Tujuan Penelitian
1
TINJAUAN PUSTAKA
2
HASIL DAN PEMBAHASAN
2
Metode Ya-xiang Yuan
2
Metode Barzilai Borwein
6
Hasil Numerik
7
Algoritme Ya-xiang Yuan
7
Algoritme Steepest Descent
7
Algoritme Barzilai-Borwein
8
SIMPULAN
12
DAFTAR PUSTAKA
12
LAMPIRAN
13
RIWAYAT HIDUP
30
DAFTAR TABEL 1 2 3 4
Hasil untuk fungsi dua variabel Hasil untuk fungsi tiga variabel Hasil untuk fungsi sepuluh variabel Hasil untuk fungsi 25 variabel
8 9 9 10
DAFTAR GAMBAR 1 Perbandingan waktu metode Ya-xiang Yuan, metode BB, dan metode steepest descent 2 Perbandingan banyak iterasi metode Ya-xiang Yuan, metode BB, dan metode steepest descent
11 11
DAFTAR LAMPIRAN 1 Metode Ya-xiang Yuan untuk dua variabel 2 Metode Ya-xiang Yuan untuk tiga variabel 3 Metode Ya-xiang Yuan untuk sepuluh variabel 4 Metode Ya-xiang Yuan untuk 25 variabel 5 Metode steepest descent untuk dua variabel 6 Metode steepest descent untuk tiga variabel 7 Metode steepest descent untuk sepuluh variabel 8 Metode steepest descent untuk 25 variabel 9 Metode BB untuk dua variabel 10 Metode BB untuk tiga variabel 11 Metode BB untuk sepuluh variabel 12 Metode BB untuk 25 variabel
13 14 16 18 20 21 22 23 25 26 27 28
1
PENDAHULUAN Latar Belakang Permasalahan mengenai pengoptimuman adalah mencari penyelesaian terbaik dari suatu masalah. Masalah yang ditemui terdiri atas fungsi tujuan dan kendala yang dapat berupa fungsi linear maupun nonlinear. Terdapat beberapa metode untuk menyelesaikan masalah pengoptimuman dengan kelebihan dan kekurangan yang berbeda untuk masing-masing metode. Salah satu metode yang digunakan dalam masalah pengoptimuman bersifat iteratif, yaitu dimulai dari titik awal π₯1 yang sudah ditentukan, kemudian bergerak ke titik π₯2 hingga titik π₯π , yaitu titik yang mendekati atau sama dengan nilai optimal. Metode-metode tersebut dapat diklasifikasikan ke dalam dua kelompok, yaitu metode dengan menggunakan gradien dan metode tanpa menggunakan gradien. Untuk metode dengan menggunakan gradien, diperlukan syarat fungsi tujuan terturunkan. Contoh metode dengan menggunakan gradien yaitu metode steepest descent, metode Newton, dan metode conjugate gradien. Contoh metode tanpa menggunakan gradien yaitu metode Rosenbrock dan metode Nelder-Mead (Klerk et al. 2005). Masalah yang digunakan pada karya ilmiah ini adalah masalah pengoptimuman nonlinear tanpa kendala, yaitu mencari nilai π₯ yang meminimumkan suatu fungsi π(π₯) dan metode yang digunakan adalah metode steepest descent. Metode steepest descent bergerak dengan langkah-langkah yang saling tegak lurus. Tepatnya, jika {π₯π } adalah barisan steepest descent untuk fungsi π(π₯), maka untuk setiap bilangan asli π β₯ 0 , vektor yang menghubungkan π₯πβ1 dengan π₯π tegak lurus dengan vektor yang menghubungkan π₯π dengan π₯π+1. Perlu diketahui, pencarian dengan arah steepest descent untuk menuju ke suatu titik mungkin berjalan dengan lambat (Yuan 2006). Metode steepest descent memerlukan iterasi yang banyak untuk menemukan solusi minimum karena gerak langkahnya yang berliku-liku (zigzag). Barzilai dan Borwein (1988) berusaha menyempurnakan metode ini dengan mengubah stepsize. Pada karya ilmiah ini akan dibahas tentang modifikasi metode steepest descent dengan mengubah stepsize. Algoritme yang baru ini akan menempatkan stepsize yang baru pada iterasi genap sedangkan pada setiap iterasi ganjil tetap menggunakan stepsize pada steepest descent. Algoritme ini didasarkan pada artikel yang ditulis oleh Yuan (2006). Setelah itu akan dilakukan simulasi sebagai perbandingan dengan metode steepest descent dan metode BB. Pengolahan data dilakukan dengan menggunakan bantuan software MATLAB R2010a. Tujuan Penelitian Penulisan karya ilmiah ini bertujuan untuk: 1. Merekonstruksi penggunaan stepsize baru pada metode steepest descent. 2. Membandingkan waktu penyelesaian dan banyaknya iterasi yang dilakukan pada metode steepest descent yang telah dimodifikasi, Barzilai dan Borwein, dan steepest descent.
2
TINJAUAN PUSTAKA Metode steepest descent adalah metode gradien sederhana untuk pengoptimuman tanpa kendala: min π(π₯),
π₯βββΏ
dengan π(π₯) adalah fungsi kontinu dan terturunkan di βπ . Metode ini memiliki bentuk sebagai berikut: π₯π+1 = π₯π + πΌπ (βππ ), dengan ππ = π(π₯π ) = β π(π₯π ) adalah vektor gradien dari π(π₯) di π₯π dan πΌπ > 0 adalah stepsize. Arah pencarian dalam metode ini berbanding terbalik dengan arah gradien, yaitu dengan arah menurun tercuram (steepest descent), sehingga metode ini diberi nama steepest descent. Arah curam menurun yang diterapkan dalam metode ini sendiri dipercaya merupakan arah terbaik dalam artian metode ini dapat mengurangi fungsi objektif sebanyak mungkin. Stepsize πΌπ dapat diperoleh dengan pencarian exact line: πΌπ = argmin{π(π₯π + π(βππ ))}. Metode steepest descent selalu konvergen. Secara teori metode ini tidak akan berhenti atau akan terus melakukan iterasi sampai kriteria penghentian terpenuhi. Namun, untuk kasus yang sangat sederhana saat fungsi objektif π(π₯) merupakan fungsi kuadrat konveks sempurna, yaitu: 1
π(π₯) = ππ π₯ + 2 π₯ π π»π₯, dengan π β βπ , π» β βπΓπ simetris dan definit positif. Asumsikan kita menggunakan stepsize yang didapat dari pencarian exact line, metode ini dapat membutuhkan waktu yang cukup lama untuk memperoleh hasil (Yuan 2006).
HASIL DAN PEMBAHASAN Metode Ya-xiang Yuan Untuk analisis pada bab ini, diasumsikan bahwa fungsi objektif adalah sebagai berikut: π(π₯) = ππ π₯ + 12π₯ π π»π₯,
3 dengan π β βπ dan π» β βπΓπ simetris dan definit positif. Pada dasarnya, metode baru ini adalah pengembangan dari metode steepest descent. Dapat dilihat pada metode baru ini pencarian exact line harus dilakukan pada iterasi terakhir sebelum algoritme berhasil menemukan solusinya. Diasumsikan pula bahwa digunakan pencarian exact line pada iterasi pertama supaya kita tidak menghindari keberuntungan apabila ada kasus di mana algoritme dapat menemukan solusi pada iterasi pertama. Oleh karena itu, dibuatlah algoritme sebagai berikut: π₯2 = π₯1 β πΌ1β π1 π₯3 = π₯2 β πΌ2 π2 π₯4 = π₯3 β πΌ3β π3 , di mana πΌ1β dan πΌ3β didapat dari pencarian exact line dan π₯4 adalah solusi. Perlu dicari formula untuk πΌ2 sehingga π₯4 akan menjadi nilai minimum dari fungsi objektif. Metode ini disebut metode Ya-xiang Yuan. Untuk mempermudah analisis, dipelajari kasus di mana π1 dan π2 adalah dua buah sumbu. Sesuai dengan pencarian exact line pada iterasi pertama, gradien π1 dan π2 adalah ortogonal. Oleh karena itu kita dapat menampilkan semua vektor π₯ sebagai kombinasi linear dari π1 dan π2 . Misalkan diberikan fungsi: π
π
0
π
π‘ π’
π(π₯2 + π‘ βπ1β + π’ βπ2 β) = (βπ β) ( ) 1
2
2
π1π π»π1β π1π π»π2β βπ1 ββπ2 β π‘ βπ1 β2 π‘ π + 1β2 ( ) ( π ) ( ). π’ π’ π1 π»π2β π2π π»π2β 2 βπ1 ββπ2 β βπ2 β Berdasarkan pencarian exact line pada iterasi pertama, diperoleh πΌ1β = βπ1 β2 / π1π π»π1 dan π1π π»π2 = ββπ2 β2 /πΌ1β yang diperoleh dari: π₯π+1 = π₯π β πΌπβ ππ π(π₯π+1) = π(π₯π β πΌπβ ππ ) π β² (π₯π+1 ) = π β² (π₯π β πΌπβ ππ ). Karena πΌπβ = argmin {π(π₯π β πΌπβ ππ )}, diperlukan syarat π β² (π₯π+1 ) = 0 sehingga: π β² (π₯π β πΌπβ ππ ) = 0 βπ β² (π₯π β πΌπβ ππ ) π ππ = 0 π
β(π + π»(π₯π β πΌπβ ππ )) (π + π»π₯) = 0 β(π + π»π₯ β πΌπβ π»(ππ )π (π + π»π₯) = 0 β(π + π»π₯)π (π + π»π₯) + πΌπβ (π + π»π₯)π π»(π + π»π₯) = 0
4
βπππ ππ + πΌπβ πππ π»ππ = 0 πΌπβ πππ π»ππ = πππ ππ πΌπβ
πππ ππ = π ππ π»ππ
πΌπβ =
βππ β2 πππ π»ππ
.
Dengan menggunakan notasi πΌ2β = βπ2 β2 /π2π π»π2 , didapat bahwa: 0 π π‘ π(π₯2 + π‘ βπ β + π’ βπ β) = (βπ β) ( ) π’ 1 2 2 ββπ2 β 1β β βπβ βπ β π π π‘ π‘ 1 1 1 1 + β2 ( ) ( ) ( ). π’ π’ ββπ2 β 1β β βπβ βπ β π2 1 1 π1
π2
Oleh karena itu, dapat diketahui nilai minimum dari fungsi objektifnya adalah:
βπ β βπ ββπ β π‘β ( β ) = β βπ β2/π1β ββπ2 β2/πβ ( 2 ), π’ 1 2 2 1 βπ1 β yang diperoleh dari: ππ =0 ππ‘ 2π‘ 2π’βπ2 β β =0 π1β π1β βπ1 β 2π‘βπ1 β β 2π’βπ2 β = 0 π‘βπ1 β β π’βπ2 β = 0
(1)
ππ =0 ππ’ βπ2 β +
π’ π‘βπ2 β β β β βπ β = 0 π2 π1 1
βπ‘π2β βπ2 β + π’π1β βπ1 β = βπ1β π2β βπ1 ββπ2 β. Kemudian dilakukan eliminasi pada persamaan (1) dan (2)
(2)
5 (1) * π2β βπ2 β (2) * βπ1 β
π‘π2β βπ1 ββπ2 β β π’π2β βπ2 β2 = 0 βπ‘π2β βπ1 ββπ2 β + π’π1β βπ1 β2 = βπ1β π2β βπ1 β2 βπ2 β
(3) + (4)
(3) (4)
π’π1β βπ1β2 β π’π2β βπ2 β2 = βπ1β π2β βπ1 β2 βπ2 β π1β π2β βπ1 β2 βπ2 β π’= β β π1 βπ1 β2 β π2β βπ2 β2 βπ1 β2 βπ2 β 2 2 1 β β ββπ2 β β β π2 π1β
π’ = β βπ
.
Subtitusikan π’ ke persamaan (1) diperoleh: βπ1 ββπ2 β2 2 2 1 β β ββπ2 β β π2β π1β
π‘ = β βπ Untuk mendapatkan π₯4 = π₯2 + π‘ β
π1 βπ1 β
.
π
+ π’β βπ2 β , perlu diketahui bahwa arah 2
gradien π3 paralel terhadap vektor residual π₯4 β π₯3 . Untuk itu, diperlukan dua arah:
dan
0 π‘β ( β) β ( ) βπΌ π’ 2 βπ2 β ββπ2 β 1β β βπβ βπ β π1 0 0 1 1 )( ) (βπ β) + ( βπΌ2 βπ2 β ββπ2 β 2 1 βπβ βπ β βπβ 1 2 1
adalah dua buah arah yang paralel. Dua arah tersebut paralel terhadap masingmasing: βπ2 β βπ1β2 βπ2 β2 ( ) βπ1 β β πΌ2 ( β β β )/βπ1 β πΌ1 πΌ2
dan
πΌ2 βπ2 β/πΌ1β βπ1 β ( ). 1 β πΌ2 /πΌ2β
Dapat diasumsikan: βπ2 β πΌ βπ β/πΌ1β βπ1 β βπ1 β2 βπ2 β2 ( ) = π( 2 2 ) 1 β πΌ2 /πΌ2β βπ1 β β πΌ2 ( β β β )/βπ1 β πΌ1 πΌ2
6
untuk Ξ» β β. Berdasarkan baris pertama didapatkan π = πΌ1β βπ1 β/πΌ2 . Kemudian nilai Ξ» tersebut disubtitusikan ke baris kedua pada persamaan di atas sehingga diperoleh:
1 β πΌ2 (
βπ2 β2
1
β β
πΌ2
πΌ1β βπ1
πΌβ
πΌβ
2
2
) = πΌ1β β πΌ1β . β2
Persamaan di atas ekuivalen dengan: βπ2 β2 1 1 1 2 β ( ( β ββ β ) πΌ β ) πΌ + 1 = 0. 2 πΌ1β πΌ2β 2 πΌ1 πΌ2 (πΌ1 βπ1 β)2
(3)
Karena π» definit positif, diketahui bahwa: π€=
βπ2 β2 1 β > 0. πΌ1β πΌ2β (πΌ1β βπ1 β)2
Dari persamaan (3) diperoleh dua solusi positif untuk πΌ2 yaitu: (1βπΌ1β +1βπΌ2β )Β±β(1βπΌ1β +1βπΌ2β )2 β4π€ 2π€
.
Dari dua solusi tersebut dipilih nilai yang lebih kecil dan dapat dituliskan sebagai berikut:
πΌ2 =
2 β(1βπΌ1β β1βπΌ2β )2 +4βπ2 β2 ββπ 1 β2 +1βπΌ1β +1βπΌ2β
,
dengan π 1 = π₯2 β π₯1 = βπΌ1β π1. πΌ2 inilah yang disebut stepsize baru dan kemudian akan diaplikasikan ke dalam metode hasil modifikasi steepest descent. Metode Barzilai-Borwein Gagasan utama dari metode Barzilai-Borwein ini adalah dengan menggunakan hasil pada iterasi sebelumnya untuk menentukan stepsize. Metode ini kemudian dikenal dengan metode BB. Iterasi yang digunakan adalah sebagai berikut: π₯π+1 = π₯π β π·π ππ , di mana π·π = ππ πΌ. Metode ini memiliki dua buah stepsize: ππ =
π π πβ1 π πβ1 π π πβ1 π¦πβ1
7 dan
ππ =
π π¦ π πβ1 πβ1 , π π¦πβ1 π¦πβ1
dengan π πβ1 = π₯π β π₯πβ1 dan π¦πβ1 = ππ β ππβ1. Pada karya ilmiah ini hanya digunakan satu buah stepsize yaitu:
ππ =
π π πβ1 π πβ1 π π¦ π πβ1 πβ1
.
Hasil Numerik Algoritme yang digunakan pada karya ilmiah ini adalah sebagai berikut: Algoritme Ya-xiang Yuan Step 1 Masukan titik awal π₯1 . 0< π βͺ 1. Hitung π1 , Tetapkan k=1. β Step 2 Hitung stepsize dengan pencarian exact line πΌ2πβ1 ; Tetapkan β π2πβ1 π₯2π = π₯2πβ1 β πΌ2πβ1 Step 3 Jika βπ(π₯2π )β β€ π maka berhenti; β Step 4 Hitung stepsize dengan pencarian exact line πΌ2π , Tetapkan πΌ2π =
2 β β 2 β β β 1βπΌ2π ) + 4βπ2π β2 ββπ 2πβ1 β2 + 1βπΌ2πβ1 + 1βπΌ2π β(1βπΌ2πβ1
dan π₯2π+1 = π₯2π β πΌ2π π2π Jika βπ2π+1 β β€ π maka berhenti; Step 5 k=k+1, kembali ke Step 2. Algoritme Steepest Descent Step 1 Masukan titik awal π₯0 . 0< π βͺ 1. Hitung π1 , Tetapkan k=0. Step 2 Hitung stepsize dengan pencarian exact line πΌπβ ; Tetapkan π₯π+1 = π₯π β πΌπβ ππ Step 3 Jika βπ(π₯π )β β€ π maka berhenti; Step 4 k=k+1, kembali ke Step 2.
8
Algoritme Barzilai-Borwein Step 1. Diberikan π₯0 πβπ , 0< π βͺ 1. Tetapkan k=0. Step 2. Jika β₯ ππ β₯β€ π, stop; lainnya ππ = βππ . Step 3. Jika k=0, menentukan π0 dengan pencarian exact line; selainnya dengan π π
π
menghitung ππ dengan ππ = π ππβ1π¦πβ1 . πβ1 πβ1
Step 4. Tentukan π₯π+1 = π₯π + ππ ππ . Step 5. π = π + 1, kembali ke Step 2. Fungsi yang digunakan adalah fungsi kuadratik diagonal, yaitu fungsi yang dibangkitkan secara acak dengan ketentuan sebagai berikut: π(π₯) = (π₯ β π₯ β )π diag(π1 , β¦ , ππ )(π₯ β π₯ β ).
π₯ β βπ .
Jumlah variabel yang digunakan dilambangkan dengan π di mana nilai π=2,3,10,25. Vektor π₯πβ (π = 1, β¦ , π) β [β5,5] yang dipilih secara acak. Diberikan ππ = cond(10,100) dan ππ (π = 1, β¦ , π) di mana nilainya diperoleh secara acak dengan interval [1, ππ ]. Untuk semua kasus diberikan titik awal adalah vektor nol (0, . . . ,0)π dan kriteria penghentian adalah βππ β β€ 10β6 . Untuk setiap kasus, dilakukan lima kali pengulangan.
n 2
ππ
10
100
Rata-rata
Tabel 1 Hasil untuk fungsi dua variabel Ya-xiang Yuan Steepest Descent Iterasi Waktu (s) Iterasi Waktu (s) Iterasi 3 0,166250 14 0,952635 5 3 0,164151 6 0,474521 5 3 0,167652 6 0,441272 5 3 0,163253 15 0,993925 9 3 0,155448 16 1,070552 7 3 0,191924 5 0,391837 5 3 0,161772 25 1,644183 13 3 0,157719 8 0,592578 7 3 0,159453 5 0,392321 5 3 0,156356 8 0,569770 5 3 0,164398 10,8 0,752359 6,6
BB Waktu (s) 0,265793 0,272782 0,289684 0,406331 0,345200 0,261558 0,535388 0,342918 0,268820 0,269873 0,325835
Untuk fungsi dengan dua variabel, metode Ya-xiang Yuan hanya membutuhkan maksimal tiga iterasi untuk menemukan solusi minimumnya (Tabel 1). Metode ini memiliki waktu yang paling cepat dan banyaknya iterasi paling sedikit dibandingkan metode BB dan steepest descent.
9
n 3
ππ
10
100
Rata-rata
Tabel 2 Hasil untuk fungsi tiga variabel Ya-xiang Yuan Steepest Descent Iterasi Waktu (s) Iterasi Waktu (s) Iterasi 8 0,352896 12 0,889177 9 6 0,288516 55 3,814177 13 7 0,320067 54 3,790647 17 3 0,170093 9 0,693719 5 12 0,523204 22 1,599422 14 8 0,399514 18 1,351256 9 11 0,470182 102 6,948871 15 11 0,493538 36 2,514216 13 8 0,353545 30 2,144351 15 9 0,407075 26 1,884509 9 8,3 0,371715 36,4 2,426633 11,9
BB Waktu (s) 0,487921 0,631213 0,788778 0,320157 0,681257 0,483705 0,717084 0,651547 0,714584 0,484089 0,596034
Untuk fungsi dengan tiga variabel, metode Ya-xiang Yuan memiliki waktu yang paling cepat dan banyaknya iterasi paling sedikit dibandingkan metode BB dan steepest descent. Pada salah satu percobaan, metode Ya-xiang Yuan dan metode BB menghasilkan banyak iterasi yang sama yaitu sebesar sembilan iterasi, namun waktu yang dibutuhkan metode Ya-xiang Yuan lebih cepat daripada metode BB (Tabel 2). Berdasarkan nilai rata-rata, metode Ya-xiang Yuan dan BB hanya membutuhkan waktu kurang dari satu sekon untuk menemukan solusi, sedangkan metode steepest descent membutuhkan waktu lebih dari dua sekon.
ππ n 10 10
100
Rata-rata
Tabel 3 Hasil untuk fungsi sepuluh variabel Ya-xiang Yuan Steepest Descent Iterasi Waktu (s) Iterasi Waktu (s) Iterasi 23 2,349185 34 5,079649 23 19 2,016547 33 3,560591 17 17 1,745476 26 2,741951 17 15 1,614203 21 2,308352 13 20 2,062425 36 3,897925 18 27 2,821865 63 6,637803 25 36 3,617917 75 7,750232 26 65 6,452713 311 31,104918 45 29 3,001316 49 5,749044 27 35 3,413009 65 7,332228 31 28,6 2,909466 71,3 7,898116 24,2
BB Waktu (s) 2,055472 1,670175 1,638760 1,369932 1,682789 2,430587 2,311006 3,758671 2,413808 2,699278 2,265746
Untuk fungsi dengan sepuluh variabel, metode BB memiliki waktu yang paling cepat dan banyaknya iterasi paling sedikit dibandingkan metode Ya-xiang Yuan dan steepest descent. Pada salah satu percobaan, metode Ya-xiang Yuan dan metode BB menghasilkan banyaknya iterasi yang sama yaitu sebesar 17 iterasi, namun waktu yang dibutuhkan metode BB lebih cepat daripada metode Ya-xiang Yuan (Tabel 3). Berdasarkan nilai rata-rata, metode BB membutuhkan waktu
10
sekitar dua sekon untuk menemukan solusi minimumnya, metode Ya-xiang Yuan membutuhkan waktu hampir tiga sekon, dan metode steepest descent membutuhkan waktu sekitar tujuh sekon.
ππ n 25 10
100
Tabel 4 Hasil untuk fungsi 25 variabel Ya-xiang Yuan Steepest Descent BB Iterasi Waktu (s) Iterasi Waktu (s) Iterasi Waktu (s) 33 8,323247 70 12,596562 33 5,938817 31 7,952204 64 11,993606 27 5,167664 31 8,029839 68 12,730917 27 5,266595 33 8,415656 72 13,408431 29 5,481138 33 9,730223 74 13,550629 29 5,522943 62 15,998245 216 40,280921 53 9,297413 45 11,524196 132 24,407456 35 6,487686 39 10,020371 170 31,759268 37 6,798567 81 20,716241 304 61,059319 69 11,826102 79 20,283904 314 58,890976 55 9,714863 46,7 11,666209 148,4 28,067809 39,4 7,150179
Rata-rata -rata Untuk fungsi dengan 25 variabel, metode BB memiliki waktu yang paling cepat dan banyaknya iterasi paling sedikit dibandingkan metode Ya-xiang Yuan dan steepest descent. Pada salah satu percobaan, metode Ya-xiang Yuan dan metode BB menghasilkan banyaknya iterasi yang sama yaitu sebesar 33 iterasi, namun waktu yang dibutuhkan metode BB lebih cepat daripada metode Ya-xiang Yuan (Tabel 4). Berdasarkan nilai rata-rata, metode BB membutuhkan waktu sekitar tujuh sekon untuk menemukan solusi minimumnya, metode Ya-xiang Yuan membutuhkan waktu sekitar 11 sekon, dan metode steepest descent membutuhkan waktu sekitar 28 sekon Perbandingan waktu eksekusi dan banyaknya iterasi untuk metode Ya-xiang Yuan, metode BB, dan metode steepest descent dalam bentuk grafik, ditunjukkan pada Gambar 1 dan Gambar 2. Untuk fungsi dengan dua dan tiga variabel, metode Ya-xiang Yuan memiliki waktu yang paling cepat untuk menemukan solusi dibandingkan metode BB dan steepest descent, sedangkan untuk fungsi dengan sepuluh dan 25 variabel, metode BB memiliki waktu yang paling cepat untuk menemukan solusi dibandingkan metode Ya-xiang Yuan dan steepest descent. Metode steepest descent memiliki waktu yang paling lambat dibandingkan metode BB dan Ya-xiang Yuan baik untuk fungsi dengan dua, tiga, sepuluh, maupun 25 variabel (Gambar 1).
11 30,000000
Waktu (s)
25,000000 20,000000 15,000000 10,000000 5,000000 0,000000
2
3
10
25
Ya-xiang Yuan
0,164398
0,371715
2,909466
11,666209
SD
0,752359
2,426633
7,898116
28,067809
BB
0,325835
0,596034
2,265746
7,150179
Gambar 1 Perbandingan waktu metode Ya-xiang Yuan, metode BB, dan metode steepest descent
160 140
Banyak Iterasi
120 100 80 60 40 20 0 Ya-xiang Yuan
2
3
10
25
3
8,3
28,6
46,7
SD
10,8
36,4
71,3
148,4
BB
6,6
11,9
24,2
39,4
Gambar 2 Perbandingan banyak iterasi metode Ya-xiang Yuan, metode BB, dan metode steepest descent Untuk fungsi dengan dua dan tiga variabel, metode Ya-xiang Yuan memiliki iterasi paling sedikit dibandingkan metode BB dan steepest descent, sedangkan untuk fungsi dengan sepuluh dan 25 variabel, metode BB memiliki iterasi paling sedikit dibandingkan metode Ya-xiang Yuan dan steepest descent. Metode steepest descent memiliki banyaknya iterasi yang paling besar dibandingkan metode BB dan Yaxiang Yuan baik untuk fungsi dengan dua, tiga, sepuluh, maupun 25 variabel (Gambar 2).
12
SIMPULAN Modifikasi dengan memberikan stepsize baru yang dilakukan pada metode Ya-xiang Yuan dapat menemukan solusi suatu masalah nonlinear tanpa kendala dengan waktu yang lebih cepat dan jumlah iterasi yang lebih sedikit dibandingkan metode Barzilai-Borwein dan metode steepest descent untuk masalah dimensi kecil. Hasil percobaan bahkan menunjukan bahwa metode Ya-xiang Yuan dapat menemukan nilai minimum dengan tiga iterasi saja untuk fungsi dua variabel. Untuk masalah dengan dimensi yang besar, metode Barzilai-Borwein memberikan kinerja yang lebih baik dibandingkan metode Ya-xiang Yuan maupun metode steepest descent.
DAFTAR PUSTAKA Barzilai J, Borwein JM. 1988. Two point step size gradient methods. IMA J Numer Anal 8(1): 141-148. doi:10.1093/imanum/8.1.141. Klerk E, Roos C, Terlaky T. 2005. Optimization. Delft(ND): Delft University of Technology. Yuan, Y. 2006. A new stepsize for the steepest descent method. Journal of Computational Mathematics 24(2): 149-156.
13 Lampiran 1 Metode Ya-xiang Yuan untuk dua variabel clear; clc; tic; syms x1 x2 v2=[x1,x2]; xb=randi([-5,5],2,1); b=randi(100,1,2); B=diag(b); f1=v2+xb.'; f=expand(f1*B*f1.') x = [x1 x2]; y = [0 0]; tol = 10^(-6); gradien = jacobian(f,x) a = jacobian(gradien,x); A = subs(a,x,y) g = -subs(gradien,x,y) Set_alpha=[]; set_LS=[]; k=1; while norm(g)>tol if (mod(k,2)==1) alfa = g*g'/(g*A*g'); y1 = y(k,:)+alfa*g; y = [y; y1] Set_alpha=[Set_alpha single(alfa)]; k = k+1; g = -subs(gradien,{x1,x2},{y(k,1),y(k,2)}) A = subs(a,{x1 x2},{y(k,1),y(k,2)}); nilai = subs(f,{x1,x2},{y(k,1),y(k,2)}); uji = norm(g); else alfa = g*g'/(g*A*g'); Set_alpha=[Set_alpha single(alfa)]; s =y(k,:)- y(k-1,:); L1 = sqrt((1/Set_alpha(k-1)1/Set_alpha(k)).^2+4*g*g'/(s*s')); L2 = 1/Set_alpha(k-1)+1/Set_alpha(k); alfa_new = single(2/(L1+L2)); set_LS=[set_LS;alfa_new]; y1 = y(k,:)+ alfa_new*g; y = [y; y1] k = k+1; g = -subs(gradien,{x1,x2},{y(k,1),y(k,2)}) A = subs(a,{x1 x2},{y(k,1),y(k,2)}); nilai = subs(f,{x1,x2},{y(k,1),y(k,2)}); uji = norm(g); end end toc; iterasi = k-1 uji_konvergensi = norm(g);
14
Lampiran 2 Metode Ya-xiang Yuan untuk tiga variabel clear; clc; tic; syms x1 x2 x3 v2=[x1,x2,x3]; xb=randi([-5,5],3,1); b=randi(100,1,3); B=diag(b); f1=v2+xb.'; f=expand(f1*B*f1.') x = [x1 x2 x3]; y = [0 0 0]; tol = 10^(-6); gradien = jacobian(f,x) a = jacobian(gradien,x); A = subs(a,x,y); g = -subs(gradien,x,y) Set_alpha=[]; set_LS=[]; k=1; while norm(g)>tol if (mod(k,2)==1) L = g*g'/(g*A*g'); y1 = y(k,:)+L*g; y = [y; y1]; Set_alpha=[Set_alpha single(L)]; k = k+1; g = -subs(gradien,{x1,x2,x3},{y(k,1),y(k,2),y(k,3)}); A = subs(a,{x1 x2 x3},{y(k,1),y(k,2),y(k,3)}); hasil = subs(f,{x1,x2,x3},{y(k,1),y(k,2),y(k,3)}); else L = g*g'/(g*A*g'); Set_alpha=[Set_alpha single(L)]; s =y(k,:)- y(k-1,:); L1 = sqrt((1/Set_alpha(k-1)1/Set_alpha(k)).^2+4*g*g'/(s*s')); L2 = 1/Set_alpha(k-1)+1/Set_alpha(k); LS = single(2/(L1+L2)); set_LS=[set_LS;LS];
y1 = y(k,:)+ LS*g; y = [y; y1] ; k = k+1; g = -subs(gradien,{x1,x2,x3},{y(k,1),y(k,2),y(k,3)}); A = subs(a,{x1 x2 x3},{y(k,1),y(k,2),y(k,3)}); hasil = subs(f,{x1,x2,x3},{y(k,1),y(k,2),y(k,3)}); end end y toc; iterasi = k-1 uji_konvergensi = norm(g);
15 hasil; F = subs(f,{x1,x2,x3},{y(end,1),y(end,2),y(end,3)});
16
Lampiran 3 Metode Ya-xiang Yuan untuk sepuluh variabel clear; clc; tic; syms x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 v2=[x1,x2,x3,x4,x5,x6,x7,x8,x9,x10]; xb=randi([-5,5],10,1); b=randi(100,1,10); B=diag(b); f1=v2+xb.'; f=expand(f1*B*f1.') x = [x1 x2 x3 x4 x5 x6 x7 x8 x9 x10]; y = [0 0 0 0 0 0 0 0 0 0]; tol = 10^(-8) gradien = jacobian(f,x) a = jacobian(gradien,x); A = subs(a,x,y) g = -subs(gradien,x,y) Set_alpha=[]; set_LS=[]; k=1; while norm(g)>tol if (mod(k,2)==1) alfa = g*g'/(g*A*g') y1 = y(k,:)+alfa*g y = [y; y1] Set_alpha=[Set_alpha single(alfa)] k = k+1; g = subs(gradien,x,{y(k,1),y(k,2),y(k,3),y(k,4),y(k,5),y(k,6),y(k,7),y (k,8),y(k,9),y(k,10)}) A = subs(a,x,{y(k,1),y(k,2),y(k,3),y(k,4),y(k,5),y(k,6),y(k,7),y(k,8), y(k,9),y(k,10)}) nilai = subs(f,x,{y(k,1),y(k,2),y(k,3),y(k,4),y(k,5),y(k,6),y(k,7),y(k,8), y(k,9),y(k,10)}) uji = norm(g) else alfa = g*g'/(g*A*g') Set_alpha=[Set_alpha single(alfa)] s =y(k,:)- y(k-1,:) L1 = sqrt((1/Set_alpha(k-1)1/Set_alpha(k)).^2+4*g*g'/(s*s')) L2 = 1/Set_alpha(k-1)+1/Set_alpha(k) alfa_new = single(2/(L1+L2)) set_LS=[set_LS;alfa_new]
y1 = y(k,:)+ alfa_new*g y = [y; y1] k = k+1; g = subs(gradien,x,{y(k,1),y(k,2),y(k,3),y(k,4),y(k,5),y(k,6),y(k,7),y (k,8),y(k,9),y(k,10)})
17 A = subs(a,x,{y(k,1),y(k,2),y(k,3),y(k,4),y(k,5),y(k,6),y(k,7),y(k,8), y(k,9),y(k,10)}) nilai = subs(f,x,{y(k,1),y(k,2),y(k,3),y(k,4),y(k,5),y(k,6),y(k,7),y(k,8), y(k,9),y(k,10)}) uji = norm(g) end end y iterasi = k-1 f toc;
18
Lampiran 4 Metode Ya-xiang Yuan untuk 25 variabel clear; clc; tic; syms x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 v2=[x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18 ,x19,x20,x21,x22,x23,x24,x25]; xb=randi([-5,5],25,1); b=randi(100,1,25); B=diag(b); f1=v2+xb.'; f=expand(f1*B*f1.') x = [x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25]; y = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; tol = 10^(-6) gradien = jacobian(f,x) a = jacobian(gradien,x); A = subs(a,x,y) g = -subs(gradien,x,y) Set_alpha=[]; set_LS=[]; k=1; while norm(g)>tol if (mod(k,2)==1) alfa = g*g'/(g*A*g') y1 = y(k,:)+alfa*g y = [y; y1] Set_alpha=[Set_alpha single(alfa)] k = k+1; g = subs(gradien,x,{y(end,1),y(end,2),y(end,3),y(end,4),y(end,5),y(end ,6),y(end,7),y(end,8),y(end,9),y(end,10),y(end,11),y(end,12),y(end ,13),y(end,14),y(end,15),y(end,16),y(end,17),y(end,18),y(end,19),y (end,20),y(end,21),y(end,22),y(end,23),y(end,24),y(end,25)}) A = subs(a,x,{y(k,1),y(k,2),y(k,3),y(k,4),y(k,5),y(k,6),y(k,7),y(k,8), y(k,9),y(k,10),y(k,11),y(k,12),y(k,13),y(k,14),y(k,15),y(k,16),y(k ,17),y(k,18),y(k,19),y(k,20),y(k,21),y(k,22),y(k,23),y(k,24),y(k,2 5)}) nilai = subs(f,x,{y(k,1),y(k,2),y(k,3),y(k,4),y(k,5),y(k,6),y(k,7),y(k,8), y(k,9),y(k,10),y(k,11),y(k,12),y(k,13),y(k,14),y(k,15),y(k,16),y(k ,17),y(k,18),y(k,19),y(k,20),y(k,21),y(k,22),y(k,23),y(k,24),y(k,2 5)}) uji = norm(g) else alfa = g*g'/(g*A*g') Set_alpha=[Set_alpha single(alfa)] s =y(k,:)- y(k-1,:) L1 = sqrt((1/Set_alpha(k-1)1/Set_alpha(k)).^2+4*g*g'/(s*s')) L2 = 1/Set_alpha(k-1)+1/Set_alpha(k) alfa_new = single(2/(L1+L2))
19 set_LS=[set_LS;alfa_new]
y1 = y(k,:)+ alfa_new*g y = [y; y1] k = k+1; g = subs(gradien,x,{y(k,1),y(k,2),y(k,3),y(k,4),y(k,5),y(k,6),y(k,7),y (k,8),y(k,9),y(k,10),y(k,11),y(k,12),y(k,13),y(k,14),y(k,15),y(k,1 6),y(k,17),y(k,18),y(k,19),y(k,20),y(k,21),y(k,22),y(k,23),y(k,24) ,y(k,25)}) A = subs(a,x,{y(k,1),y(k,2),y(k,3),y(k,4),y(k,5),y(k,6),y(k,7),y(k,8), y(k,9),y(k,10),y(k,11),y(k,12),y(k,13),y(k,14),y(k,15),y(k,16),y(k ,17),y(k,18),y(k,19),y(k,20),y(k,21),y(k,22),y(k,23),y(k,24),y(k,2 5)}) nilai = subs(f,x,{y(k,1),y(k,2),y(k,3),y(k,4),y(k,5),y(k,6),y(k,7),y(k,8), y(k,9),y(k,10),y(k,11),y(k,12),y(k,13),y(k,14),y(k,15),y(k,16),y(k ,17),y(k,18),y(k,19),y(k,20),y(k,21),y(k,22),y(k,23),y(k,24),y(k,2 5)}) uji = norm(g) end end y iterasi = k-1 f toc;
20
Lampiran 5 Metode steepest descent untuk dua variabel Contoh: clear clc tic syms x1 x2 lambda f = 32*x1^2 - 192*x1 + 93*x2^2 - 186*x2 + 381; x = [x1 x2]; x0 = [0,0]; tol = 10^(-6); %Hitung Gradien f(x1,x2); Gradien = jacobian(f,x) S_cek = subs(f,[x1 x2],{x0(1),x0(2)}) %Subtitusi Gradien f(x0,y0) k = 0; N = []; N =[N; x0(1) x0(2)]; S = subs(Gradien,[x1 x2],{x0(1),x0(2)}) while norm(S) > tol LGM = lambda*(-S); y0 = x0+LGM; fsub = subs(f,[x1,x2],{y0(1),y0(2)}); difsub = diff(fsub,lambda); Lsub = solve(difsub,lambda); LM = min(single(Lsub)); y0 = subs(y0,lambda,LM); k = k+1; N = [N;y0(1) y0(2)]; x0 = y0; S = subs(Gradien,[x1 x2],{x0(1),x0(2)}); %L(k) = LM end iterasi = k N toc clf(figure(1)) figure(1) ezcontour(f,[-1,4],[-1,4]) grid on hold on plot(N(:,1),N(:,2),'-ko','LineWidth',2,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','g',... 'MarkerSize',3) axis square
21 Lampiran 6 Metode steepest descent untuk tiga variabel Contoh: clear clc tic syms x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 lambda f = 6*x1^2 + 24*x1 + 10*x2^2 - 80*x2 + 7*x3^2 + 28*x3 + 212; x = [x1 x2 x3]; x0 = [0,0,0]; tol = 10^(-6); %Hitung Gradien f(x1,x2); Gradien = jacobian(f,x) S_cek = subs(f,x,{x0(1),x0(2),x0(3)}) %Subtitusi Gradien f(x0,y0) k = 0; N = []; N =[N; x0(1) x0(2) x0(3)]; S = subs(Gradien,x,{x0(1),x0(2),x0(3)}) while norm(S) > tol LGM = lambda*(-S); y0 = x0+LGM; fsub = subs(f,x,{y0(1),y0(2),y0(3)}); difsub = diff(fsub,lambda); Lsub = solve(difsub,lambda); LM = min(single(Lsub)); y0 = subs(y0,lambda,LM); k = k+1; N = [N;y0(1) y0(2) y0(3)]; x0 = y0; S = subs(Gradien,x,{x0(1),x0(2),x0(3)}); %L(k) = LM end iterasi = k N toc
22
Lampiran 7 Metode steepest descent untuk sepuluh variabel Contoh: clear clc tic syms x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 lambda f = 68*x1^2 - 408*x1 + 70*x2^2 + 280*x2 + 7*x3^2 - 28*x3 + 920; x = [x1 x2 x3 x4 x5 x6 x7 x8 x9 x10]; x0 = [0,0,0,0,0,0,0,0,0,0]; tol = 10^(-6); %Hitung Gradien f(x1,x2); Gradien = jacobian(f,x) S_cek = subs(f,x,{x0(1),x0(2),x0(3)}) %Subtitusi Gradien f(x0,y0) k = 0; N = []; N =[N; x0(1) x0(2) x0(3) x0(4) x0(5) x0(6) x0(7) x0(8) x0(9) x0(10)]; S = subs(Gradien,x,{x0(1),x0(2),x0(3),x0(4),x0(5),x0(6),x0(7),x0(8),x0 (9),x0(10)}) while norm(S) > tol LGM = lambda*(-S); y0 = x0+LGM; fsub = subs(f,x,{y0(1),y0(2),y0(3),y0(4),y0(5),y0(6),y0(7),y0(8),y0(9),y0 (10)}); difsub = diff(fsub,lambda); Lsub = solve(difsub,lambda); LM = min(single(Lsub)); y0 = subs(y0,lambda,LM); k = k+1; N = [N;y0(1) y0(2) y0(3) y0(4) y0(5) y0(6) y0(7) y0(8) y0(9) y0(10)]; x0 = y0; S = subs(Gradien,x,{x0(1),x0(2),x0(3),x0(4),x0(5),x0(6),x0(7),x0(8),x0 (9),x0(10)}); %L(k) = LM end iterasi = k N toc
23 Lampiran 8 Metode steepest descent untuk 25 variabel Contoh: clear clc tic syms x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 lambda f = 38*x1^2 - 152*x1 + 41*x10^2 + 82*x10 + 84*x11^2 + 168*x11 + 14*x12^2 - 56*x12 + 7*x13^2 + 9*x14^2 + 36*x14 + 17*x15^2 + 136*x15 + 33*x16^2 + 132*x16 + 31*x17^2 - 310*x17 + 2*x18^2 + 8*x18 + 54*x19^2 - 108*x19 + 55*x2^2 + 220*x2 + 10*x20^2 - 20*x20 + 15*x21^2 - 120*x21 + 64*x22^2 + 384*x22 + 86*x23^2 344*x23 + 98*x24^2 - 588*x24 + 58*x25^2 - 232*x25 + 57*x3^2 228*x3 + 40*x4^2 + 320*x4 + 40*x5^2 + 320*x5 + 52*x6^2 - 104*x6 + 66*x7^2 + 96*x8^2 + 384*x8 + 73*x9^2 + 584*x9 + 7226; x = [x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25]; x0 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; tol = 10^(-6); %Hitung Gradien f(x1,x2); Gradien = jacobian(f,x) S_cek = subs(f,x,{x0(1),x0(2),x0(3),x0(4),x0(5),x0(6),x0(7),x0(8),x0(9),x0 (10),x0(11),x0(12),x0(13),x0(14),x0(15),x0(16),x0(17),x0(18),x0(19 ),x0(20),x0(21),x0(22),x0(23),x0(24),x0(25)}) %Subtitusi Gradien f(x0,y0) k = 0; N = []; N =[N; x0(1) x0(2) x0(3) x0(4) x0(5) x0(6) x0(7) x0(8) x0(9) x0(10) x0(11) x0(12) x0(13) x0(14) x0(15) x0(16) x0(17) x0(18) x0(19) x0(20) x0(21) x0(22) x0(23) x0(24) x0(25)] S = subs(Gradien,x,{x0(1),x0(2),x0(3),x0(4),x0(5),x0(6),x0(7),x0(8),x0 (9),x0(10),x0(11),x0(12),x0(13),x0(14),x0(15),x0(16),x0(17),x0(18) ,x0(19),x0(20),x0(21),x0(22),x0(23),x0(24),x0(25)}) while norm(S) > tol LGM = lambda*(-S); y0 = x0+LGM; fsub = subs(f,x,{y0(1),y0(2),y0(3),y0(4),y0(5),y0(6),y0(7),y0(8),y0(9),y0 (10),y0(11),y0(12),y0(13),y0(14),y0(15),y0(16),y0(17),y0(18),y0(19 ),y0(20),y0(21),y0(22),y0(23),y0(24),y0(25)}); difsub = diff(fsub,lambda); Lsub = solve(difsub,lambda); LM = min(single(Lsub)); y0 = subs(y0,lambda,LM); k = k+1; N = [N;y0(1) y0(2) y0(3) y0(4) y0(5) y0(6) y0(7) y0(8) y0(9) y0(10) y0(11) y0(12) y0(13) y0(14) y0(15) y0(16) y0(17) y0(18) y0(19) y0(20) y0(21) y0(22) y0(23) y0(24) y0(25)] x0 = y0; S = subs(Gradien,x,{x0(1),x0(2),x0(3),x0(4),x0(5),x0(6),x0(7),x0(8),x0 (9),x0(10),x0(11),x0(12),x0(13),x0(14),x0(15),x0(16),x0(17),x0(18) ,x0(19),x0(20),x0(21),x0(22),x0(23),x0(24),x0(25)}); end
24
N iterasi = k toc
25 Lampiran 9 Metode BB untuk dua variabel Contoh: clear; clc; tic; syms x1 x2 f = 26*x1^2 - 52*x1 + 41*x2^2 - 328*x2 + 682 x = [x1 x2] y = [0 0] tol = 10^(-6) gradien = jacobian(f,x) g = single(-subs(gradien,{x1,x2},{y(1,1),y(1,2)})) a = jacobian(gradien,x) A = subs(a,{x1 x2},{y(1,1),y(1,2)}) F = subs(f,{x1,x2},{y(1,1),y(1,2)}) set_F = [F] set_g = [g] k=1 while norm(g)>tol if mod(k,2)==1 L = g*g'/(g*A*g') y1 = y(end,:)+L*g y = [y; y1] g = single(-subs(gradien,{x1,x2},{y(end,1),y(end,2)})) F = subs(f,{x1,x2},{y(end,1),y(end,2)}) set_F = [set_F;F] set_g = [set_g;g] else sk =y(end,:)-y(end-1,:) yk =set_g(end,:)-set_g(end-1,:) L = -sk*sk'/(sk*yk') y1 = y(end,:)+ L*set_g(end,:) y = [y; y1] g = single(-subs(gradien,{x1,x2},{y(end,1),y(end,2)})) F = subs(f,{x1,x2},{y(end,1),y(end,2)}) set_F = [set_F;F] set_g = [set_g;g] end k = k+1; end y toc; iterasi = k-1
26
Lampiran 10 Metode BB untuk tiga variabel Contoh: clear; clc; tic; syms x1 x2 x3 f = 68*x1^2 - 408*x1 + 70*x2^2 + 280*x2 + 7*x3^2 - 28*x3 + 920 x = [x1 x2 x3] y = [0 0 0] tol = 10^(-6) gradien = jacobian(f,x) g = single(-subs(gradien,{x1,x2,x3},{y(1,1),y(1,2),y(1,3)})) a = jacobian(gradien,x) A = subs(a,{x1 x2 x3},{y(1,1),y(1,2),y(1,3)}) F = subs(f,{x1,x2,x3},{y(1,1),y(1,2),y(1,3)}) set_F = [F] set_g = [g] k=1 while norm(g)>tol if mod(k,2)==1 L = g*g'/(g*A*g') y1 = y(end,:)+L*g y = [y; y1] g = single(subs(gradien,{x1,x2,x3},{y(end,1),y(end,2),y(end,3)})) F = subs(f,{x1,x2,x3},{y(end,1),y(end,2),y(end,3)}) set_F = [set_F;F] set_g = [set_g;g] else sk =y(end,:)-y(end-1,:) yk =set_g(end,:)-set_g(end-1,:) L = -sk*sk'/(sk*yk') y1 = y(end,:)+ L*set_g(end,:) y = [y; y1] g = single(subs(gradien,{x1,x2,x3},{y(end,1),y(end,2),y(end,3)})) F = subs(f,{x1,x2,x3},{y(end,1),y(end,2),y(end,3)}) set_F = [set_F;F] set_g = [set_g;g] end k = k+1; end y toc; iterasi = k-1
27 Lampiran 11 Metode BB untuk sepuluh variabel Contoh: clear; clc; tic; syms x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 f = 28*x1^2 - 56*x1 + 23*x10^2 + 138*x10 + 68*x2^2 - 136*x2 + 66*x3^2 + 396*x3 + 17*x4^2 + 102*x4 + 12*x5^2 - 72*x5 + 50*x6^2 + 96*x7^2 - 192*x7 + 35*x8^2 + 140*x8 + 59*x9^2 + 236*x9 + 1630 x = [x1 x2 x3 x4 x5 x6 x7 x8 x9 x10] y = [0,0,0,0,0,0,0,0,0,0] tol = 10^(-6) gradien = jacobian(f,x) g = single(-subs(gradien,x,y)) a = jacobian(gradien,x) A = subs(a,x,y) F = subs(f,x,y) set_F = [F] set_g = [g] k=1 while norm(g)>tol if mod(k,2)==1 L = g*g'/(g*A*g') y1 = y(end,:)+L*g y = [y; y1] g = single(subs(gradien,x,{y(end,1),y(end,2),y(end,3),y(end,4),y(end,5),y(end ,6),y(end,7),y(end,8),y(end,9),y(end,10)})) F = subs(f,x,{y(end,1),y(end,2),y(end,3),y(end,4),y(end,5),y(end,6),y( end,7),y(end,8),y(end,9),y(end,10)}) set_F = [set_F;F] set_g = [set_g;g] else sk =y(end,:)-y(end-1,:) yk =set_g(end,:)-set_g(end-1,:) L = -sk*sk'/(sk*yk') y1 = y(end,:)+ L*set_g(end,:) y = [y; y1] g = single(subs(gradien,x,{y(end,1),y(end,2),y(end,3),y(end,4),y(end,5),y(end ,6),y(end,7),y(end,8),y(end,9),y(end,10)})) F = subs(f,x,{y(end,1),y(end,2),y(end,3),y(end,4),y(end,5),y(end,6),y( end,7),y(end,8),y(end,9),y(end,10)}) set_F = [set_F;F] set_g = [set_g;g] end k = k+1; end y toc; iterasi = k-1
28
Lampiran 12 Metode BB untuk 25 variabel Contoh: clear; clc; tic; syms x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 f = 38*x1^2 - 152*x1 + 41*x10^2 + 82*x10 + 84*x11^2 + 168*x11 + 14*x12^2 - 56*x12 + 7*x13^2 + 9*x14^2 + 36*x14 + 17*x15^2 + 136*x15 + 33*x16^2 + 132*x16 + 31*x17^2 - 310*x17 + 2*x18^2 + 8*x18 + 54*x19^2 - 108*x19 + 55*x2^2 + 220*x2 + 10*x20^2 - 20*x20 + 15*x21^2 - 120*x21 + 64*x22^2 + 384*x22 + 86*x23^2 - 344*x23 + 98*x24^2 - 588*x24 + 58*x25^2 - 232*x25 + 57*x3^2 - 228*x3 + 40*x4^2 + 320*x4 + 40*x5^2 + 320*x5 + 52*x6^2 - 104*x6 + 66*x7^2 + 96*x8^2 + 384*x8 + 73*x9^2 + 584*x9 + 7226 x = [x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25] y = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] tol = 10^(-6) gradien = jacobian(f,x) g = single(-subs(gradien,x,y)) a = jacobian(gradien,x) A = subs(a,x,y) F = subs(f,x,y) set_F = [F] set_g = [g] k=1 while norm(g)>tol if mod(k,2)==1 L = g*g'/(g*A*g') y1 = y(end,:)+L*g y = [y; y1] g = single(subs(gradien,x,{y(end,1),y(end,2),y(end,3),y(end,4),y(end,5),y(end ,6),y(end,7),y(end,8),y(end,9),y(end,10),y(end,11),y(end,12),y(end ,13),y(end,14),y(end,15),y(end,16),y(end,17),y(end,18),y(end,19),y (end,20),y(end,21),y(end,22),y(end,23),y(end,24),y(end,25)})) F = subs(f,x,{y(end,1),y(end,2),y(end,3),y(end,4),y(end,5),y(end,6),y( end,7),y(end,8),y(end,9),y(end,10),y(end,11),y(end,12),y(end,13),y (end,14),y(end,15),y(end,16),y(end,17),y(end,18),y(end,19),y(end,2 0),y(end,21),y(end,22),y(end,23),y(end,24),y(end,25)}) set_F = [set_F;F] set_g = [set_g;g] else sk =y(end,:)-y(end-1,:) yk =set_g(end,:)-set_g(end-1,:) L = -sk*sk'/(sk*yk') y1 = y(end,:)+ L*set_g(end,:) y = [y; y1] g = single(subs(gradien,x,{y(end,1),y(end,2),y(end,3),y(end,4),y(end,5),y(end ,6),y(end,7),y(end,8),y(end,9),y(end,10),y(end,11),y(end,12),y(end ,13),y(end,14),y(end,15),y(end,16),y(end,17),y(end,18),y(end,19),y (end,20),y(end,21),y(end,22),y(end,23),y(end,24),y(end,25)}))
29 F = subs(f,x,{y(end,1),y(end,2),y(end,3),y(end,4),y(end,5),y(end,6),y( end,7),y(end,8),y(end,9),y(end,10),y(end,11),y(end,12),y(end,13),y (end,14),y(end,15),y(end,16),y(end,17),y(end,18),y(end,19),y(end,2 0),y(end,21),y(end,22),y(end,23),y(end,24),y(end,25)}) set_F = [set_F;F] set_g = [set_g;g] end k = k+1; end y toc; iterasi = k-1
30
RIWAYAT HIDUP Penulis dilahirkan di Jakarta pada tanggal 21 November 1992 dari ayah H. Chairul Chaniago dan ibu Hj. Radiah Azita. Penulis adalah putra keempat dari empat bersaudara. Tahun 2010 penulis lulus dari SMA Negeri 47 Jakarta dan pada tahun yang sama penulis lulus seleksi masuk Institut Pertanian Bogor (IPB) melalui jalur Undangan Seleksi Masuk IPB (USMI) dan diterima di Departemen Matematika, Fakultas Matematika dan Ilmu Pengetahuan Alam. Selama mengikuti perkuliahan, penulis pernah aktif sebagai anggota Organisasi Mahasiswa Daerah (OMDA) Jakarta Community. Penulis juga pernah aktif sebagai asisten pengajar di bimbingan belajar Matematika Kumon. Penulis juga aktif sebagai wakil ketua Futsal Kaskus Tangerang Selatan. Selain itu penulis juga pernah aktif di Futsal Matematika, Sepakbola Matematika, Atletik Matematika, Futsal FMIPA, dan Sepakbola TPB 47. Beberapa prestasi yang diraih oleh penulis antara lain ialah Juara 2 Sepakbola Olimpiade Mahasiswa IPB (OMI) tahun 2011, Juara 2 Futsal Sport Competition and Art Festival on Mipa Faculty (SPIRIT) tahun 2012, Juara 2 Sepakbola SPIRIT tahun 2012, Juara 1 Sepakbola SPIRIT tahun 2013, Juara 3 Estafet Pria SPIRIT 2013, dan Juara 2 Estafet Pria SPIRIT tahun 2014.