• Tidak ada hasil yang ditemukan

MODIFIKASI STEPSIZE PADA METODE STEEPEST DESCENT DALAM PENGOPTIMUMAN FUNGSI: KASUS FUNGSI KUADRATIK DIAGONAL FACHRIADI FADHILLAH

N/A
N/A
Protected

Academic year: 2021

Membagikan "MODIFIKASI STEPSIZE PADA METODE STEEPEST DESCENT DALAM PENGOPTIMUMAN FUNGSI: KASUS FUNGSI KUADRATIK DIAGONAL FACHRIADI FADHILLAH"

Copied!
40
0
0

Teks penuh

(1)

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

(2)
(3)

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

(4)

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 Ya- xiang 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

(5)

Skripsi

sebagai salah satu syarat untuk memperoleh gelar Sarjana Sains

pada

Departemen Matematika

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

(6)
(7)

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:

(8)

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

(9)

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

(10)

DAFTAR TABEL

1 Hasil untuk fungsi dua variabel 8

2 Hasil untuk fungsi tiga variabel 9

3 Hasil untuk fungsi sepuluh variabel 9

4 Hasil untuk fungsi 25 variabel 10

DAFTAR GAMBAR

1 Perbandingan waktu metode Ya-xiang Yuan, metode BB,

dan metode steepest descent 11 2 Perbandingan banyak iterasi metode Ya-xiang Yuan, metode BB,

dan metode steepest descent 11

DAFTAR LAMPIRAN

1 Metode Ya-xiang Yuan untuk dua variabel 13

2 Metode Ya-xiang Yuan untuk tiga variabel 14

3 Metode Ya-xiang Yuan untuk sepuluh variabel 16

4 Metode Ya-xiang Yuan untuk 25 variabel 18

5 Metode steepest descent untuk dua variabel 20

6 Metode steepest descent untuk tiga variabel 21

7 Metode steepest descent untuk sepuluh variabel 22

8 Metode steepest descent untuk 25 variabel 23

9 Metode BB untuk dua variabel 25

10 Metode BB untuk tiga variabel 26

11 Metode BB untuk sepuluh variabel 27

12 Metode BB untuk 25 variabel 28

(11)

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.

(12)

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𝑥𝑇𝐻𝑥,

(13)

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:

𝑓(𝑥2+ 𝑡 𝑔1

‖𝑔1+ 𝑢 𝑔2

‖𝑔2) = (‖𝑔0

2‖)

𝑇

(𝑡 𝑢) + 1 2⁄ (𝑡

𝑢)𝑇(

𝑔1𝑇𝐻𝑔1

‖𝑔12

⁄ 𝑔1𝑇𝐻𝑔2

‖𝑔1‖‖𝑔2

⁄ 𝑔1𝑇𝐻𝑔2

‖𝑔1‖‖𝑔2

⁄ 𝑔2𝑇𝐻𝑔2

‖𝑔22

) (𝑡 𝑢).

Berdasarkan pencarian exact line pada iterasi pertama, diperoleh 𝛼1 = ‖𝑔12/ 𝑔1𝑇𝐻𝑔1 dan 𝑔1𝑇𝐻𝑔2 = −‖𝑔22/𝛼1 yang diperoleh dari:

𝑥𝑘+1= 𝑥𝑘− 𝛼𝑘𝑔𝑘 𝑓(𝑥𝑘+1) = 𝑓(𝑥𝑘− 𝛼𝑘𝑔𝑘) 𝑓(𝑥𝑘+1) = 𝑓(𝑥𝑘− 𝛼𝑘𝑔𝑘).

Karena 𝛼𝑘 = argmin {𝑓(𝑥𝑘− 𝛼𝑘𝑔𝑘)}, diperlukan syarat 𝑓(𝑥𝑘+1) = 0 sehingga:

𝑓(𝑥𝑘− 𝛼𝑘𝑔𝑘) = 0 −𝑓(𝑥𝑘− 𝛼𝑘𝑔𝑘) 𝑇𝑔𝑘 = 0

−(𝑔 + 𝐻(𝑥𝑘− 𝛼𝑘𝑔𝑘))𝑇(𝑔 + 𝐻𝑥) = 0

−(𝑔 + 𝐻𝑥− 𝛼𝑘𝐻(𝑔𝑘)𝑇(𝑔 + 𝐻𝑥) = 0

−(𝑔 + 𝐻𝑥)𝑇(𝑔 + 𝐻𝑥) + 𝛼𝑘(𝑔 + 𝐻𝑥)𝑇𝐻(𝑔 + 𝐻𝑥) = 0

(14)

4

−𝑔𝑘𝑇𝑔𝑘+ 𝛼𝑘𝑔𝑘𝑇𝐻𝑔𝑘 = 0 𝛼𝑘𝑔𝑘𝑇𝐻𝑔𝑘 = 𝑔𝑘𝑇𝑔𝑘

𝛼𝑘 = 𝑔𝑘𝑇𝑔𝑘 𝑔𝑘𝑇𝐻𝑔𝑘

𝛼

𝑘

=

‖𝑔𝑘2

𝑔𝑘𝑇𝐻𝑔𝑘

.

Dengan menggunakan notasi 𝛼2 = ‖𝑔22/𝑔2𝑇𝐻𝑔2, didapat bahwa:

𝑓(𝑥2+ 𝑡 𝑔1

‖𝑔1+ 𝑢 𝑔2

‖𝑔2) = (‖𝑔0

2‖)

𝑇

(𝑡 𝑢) + 1 2⁄ (𝑡

𝑢)𝑇(

1⁄𝑎1 −‖𝑔2

𝑎1‖𝑔1

−‖𝑔2

𝑎1‖𝑔1

⁄ 1

𝑎2

) (𝑡 𝑢).

Oleh karena itu, dapat diketahui nilai minimum dari fungsi objektifnya adalah:

( 𝑡

𝑢

) = −

‖𝑔 ‖𝑔1‖‖𝑔2

12/𝑎2−‖𝑔22/𝑎1

( ‖𝑔

2

‖𝑔

1

‖ )

, yang diperoleh dari:

𝑑𝑓 𝑑𝑡 = 0 2𝑡

𝑎1 −2𝑢‖𝑔2‖ 𝑎1‖𝑔1‖ = 0 2𝑡‖𝑔1‖ − 2𝑢‖𝑔2‖ = 0

𝑡‖𝑔1‖ − 𝑢‖𝑔2‖ = 0 (1) 𝑑𝑓

𝑑𝑢= 0

‖𝑔2‖ + 𝑢

𝑎2 − 𝑡‖𝑔2‖ 𝑎1‖𝑔1‖= 0

−𝑡𝑎2‖𝑔2‖ + 𝑢𝑎1‖𝑔1‖ = −𝑎1𝑎2‖𝑔1‖‖𝑔2‖. (2) Kemudian dilakukan eliminasi pada persamaan (1) dan (2)

(15)

5 (1) * 𝑎2‖𝑔2‖ 𝑡𝑎2‖𝑔1‖‖𝑔2‖ − 𝑢𝑎2‖𝑔22 = 0 (3) (2) * ‖𝑔1‖ −𝑡𝑎2‖𝑔1‖‖𝑔2‖ + 𝑢𝑎1‖𝑔12 = −𝑎1𝑎2‖𝑔12‖𝑔2‖ (4) (3) + (4) 𝑢𝑎1‖𝑔12− 𝑢𝑎2‖𝑔22 = −𝑎1𝑎2‖𝑔12‖𝑔2

𝑢 = − 𝑎1𝑎2‖𝑔12‖𝑔2‖ 𝑎1‖𝑔12− 𝑎2‖𝑔22

𝑢 = −

‖𝑔 ‖𝑔12‖𝑔2

12 𝑎2

⁄ −‖𝑔22 𝑎1

.

Subtitusikan 𝑢 ke persamaan (1) diperoleh:

𝑡 = −

‖𝑔 ‖𝑔1‖‖𝑔22

12 𝑎2

⁄ −‖𝑔22 𝑎1

.

Untuk mendapatkan 𝑥4 = 𝑥2+ 𝑡∗ 𝑔1

‖𝑔1+ 𝑢∗ 𝑔2

‖𝑔2 , perlu diketahui bahwa arah gradien 𝑔3 paralel terhadap vektor residual 𝑥4− 𝑥3. Untuk itu, diperlukan dua arah:

(𝑡

𝑢) − ( 0

−𝛼2‖𝑔2‖) dan

( 0

‖𝑔2‖) + (

1⁄𝑎1 −‖𝑔2

𝑎1‖𝑔1

−‖𝑔2

𝑎1‖𝑔1

⁄ 1

𝑎2

) ( 0

−𝛼2‖𝑔2‖)

adalah dua buah arah yang paralel. Dua arah tersebut paralel terhadap masing- masing:

(

‖𝑔2

‖𝑔1‖ − 𝛼2(‖𝑔12

𝛼2 −‖𝑔22

𝛼1 )/‖𝑔1‖) dan

(𝛼2‖𝑔2‖/𝛼1‖𝑔1‖ 1 − 𝛼2/𝛼2 ). Dapat diasumsikan:

(

‖𝑔2

‖𝑔1‖ − 𝛼2(‖𝑔12

𝛼2 −‖𝑔22

𝛼1 )/‖𝑔1‖) = 𝜆 (𝛼2‖𝑔2‖/𝛼1‖𝑔1‖ 1 − 𝛼2/𝛼2 )

(16)

6

untuk λ ∈ ℜ. Berdasarkan baris pertama didapatkan 𝜆 = 𝛼1‖𝑔1‖/𝛼2. Kemudian nilai λ tersebut disubtitusikan ke baris kedua pada persamaan di atas sehingga diperoleh:

1 − 𝛼

2

(

1

𝛼2

‖𝑔22

𝛼1‖𝑔12

) =

𝛼1

𝛼2

𝛼1

𝛼2

.

Persamaan di atas ekuivalen dengan:

( 1

𝛼1𝛼2− ‖𝑔22

(𝛼1‖𝑔1‖)2) 𝛼22− (1 𝛼1− 1

𝛼2) 𝛼2+ 1 = 0. (3)

Karena 𝐻 definit positif, diketahui bahwa:

𝛤 = 1

𝛼1𝛼2− ‖𝑔22

(𝛼1‖𝑔1‖)2 > 0.

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‖𝑔22‖𝑠12+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

(17)

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𝑘 = 𝑥2𝑘−1− 𝛼2𝑘−1 𝑔2𝑘−1

Step 3 Jika ‖𝑔(𝑥2𝑘)‖ ≤ 𝜀 maka berhenti;

Step 4 Hitung stepsize dengan pencarian exact line 𝛼2𝑘 , Tetapkan

𝛼2𝑘 = 2

√(1 𝛼⁄ 2𝑘−1 − 1 𝛼⁄ 2𝑘 )2+ 4‖𝑔2𝑘2⁄‖𝑠2𝑘−12+ 1 𝛼⁄ 2𝑘−1 + 1 𝛼⁄ 2𝑘 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.

(18)

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.

Tabel 1 Hasil untuk fungsi dua variabel

Ya-xiang Yuan Steepest Descent BB

n Iterasi Waktu (s) Iterasi Waktu (s) Iterasi Waktu (s) 2 10 3 0,166250 14 0,952635 5 0,265793

3 0,164151 6 0,474521 5 0,272782

3 0,167652 6 0,441272 5 0,289684

3 0,163253 15 0,993925 9 0,406331

3 0,155448 16 1,070552 7 0,345200 100 3 0,191924 5 0,391837 5 0,261558

3 0,161772 25 1,644183 13 0,535388

3 0,157719 8 0,592578 7 0,342918

3 0,159453 5 0,392321 5 0,268820

3 0,156356 8 0,569770 5 0,269873 Rata-rata 3 0,164398 10,8 0,752359 6,6 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.

𝜎𝑛

(19)

9

Tabel 2 Hasil untuk fungsi tiga variabel

Ya-xiang Yuan Steepest Descent BB

n Iterasi Waktu (s) Iterasi Waktu (s) Iterasi Waktu (s) 3 10 8 0,352896 12 0,889177 9 0,487921 6 0,288516 55 3,814177 13 0,631213 7 0,320067 54 3,790647 17 0,788778 3 0,170093 9 0,693719 5 0,320157 12 0,523204 22 1,599422 14 0,681257 100 8 0,399514 18 1,351256 9 0,483705

11 0,470182 102 6,948871 15 0,717084

11 0,493538 36 2,514216 13 0,651547 8 0,353545 30 2,144351 15 0,714584 9 0,407075 26 1,884509 9 0,484089 Rata-rata 8,3 0,371715 36,4 2,426633 11,9 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.

Tabel 3 Hasil untuk fungsi sepuluh variabel

Ya-xiang Yuan Steepest Descent BB

n Iterasi Waktu (s) Iterasi Waktu (s) Iterasi Waktu (s) 10 10 23 2,349185 34 5,079649 23 2,055472 19 2,016547 33 3,560591 17 1,670175 17 1,745476 26 2,741951 17 1,638760 15 1,614203 21 2,308352 13 1,369932 20 2,062425 36 3,897925 18 1,682789 100 27 2,821865 63 6,637803 25 2,430587 36 3,617917 75 7,750232 26 2,311006

65 6,452713 311 31,104918 45 3,758671

29 3,001316 49 5,749044 27 2,413808 35 3,413009 65 7,332228 31 2,699278 Rata-rata 28,6 2,909466 71,3 7,898116 24,2 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

𝜎𝑛

𝜎𝑛

(20)

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.

Tabel 4 Hasil untuk fungsi 25 variabel

Ya-xiang Yuan Steepest Descent BB

n Iterasi Waktu (s) Iterasi Waktu (s) Iterasi Waktu (s) 25 10 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 100 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 Rata-rata

-rata 46,7 11,666209 148,4 28,067809 39,4 7,150179 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).

𝜎𝑛

(21)

11

Gambar 1 Perbandingan waktu metode Ya-xiang Yuan, metode BB, dan metode steepest descent

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 Ya- xiang Yuan baik untuk fungsi dengan dua, tiga, sepuluh, maupun 25 variabel (Gambar 2).

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

0,000000 5,000000 10,000000 15,000000 20,000000 25,000000 30,000000

Waktu (s)

2 3 10 25

Ya-xiang Yuan 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

0 20 40 60 80 100 120 140 160

Banyak Iterasi

(22)

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.

(23)

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);

(24)

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);

(25)

15

hasil;

F = subs(f,{x1,x2,x3},{y(end,1),y(end,2),y(end,3)});

(26)

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)})

(27)

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;

(28)

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))

(29)

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;

(30)

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

(31)

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

(32)

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

(33)

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

(34)

24

N

iterasi = k toc

(35)

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

Referensi

Dokumen terkait