Pengoptimuman Fungsi Kuadratik Dengan Metode Conjugate Gradient Dan Penerapannya Menggunakan Aplikasi Android

PENGOPTIMUMAN FUNGSI KUADRATIK DENGAN
METODE CONJUGATE GRADIENT DAN
PENERAPANNYA MENGGUNAKAN APLIKASI ANDROID

IMAM SHALAHUDDIN

DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2016

PERNYATAAN MENGENAI SKRIPSI DAN
SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA
Dengan ini saya menyatakan bahwa skripsi berjudul Pengoptimuman Fungsi
Kuadratik dengan Metode Conjugate Gradient dan Penerapannya Menggunakan
Aplikasi Android 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, Januari 2016

Imam Shalahuddin
NIM G54110053

ABSTRAK
IMAM SHALAHUDDIN. Pengoptimuman Fungsi Kuadratik dengan Metode
Conjugate Gradient dan Penerapannya Menggunakan Aplikasi Android.
Dibimbing oleh BIB PARUHUM SILALAHI dan SISWANDI.
Pengoptimuman tanpa kendala adalah pencarian nilai terbaik (maksimum
atau minimum) dari suatu fungsi tanpa ada batasan terhadap variabel keputusan.
Salah satu metode numerik yang digunakan untuk menyelesaikan masalah
pengoptimuman tanpa kendala adalah metode conjugate gradient. Keistimewaan
dari metode ini adalah arah pencarian yang saling conjugate. Modifikasi metode
ini terdapat pada pendefinisian arah pencarian yang berbeda-beda seperti pada
metode Hestenes-Stiefel, Polak-Ribiere-Polyak, Dai-Yuan, dan Fletcher-Reeves.
Karya ilmiah ini merekonstruksi modifikasi arah pencarian metode conjugate
gradient kemudian melakukan perbandingan banyaknya iterasi untuk semua

modifikasi dengan mengunakan aplikasi android. Perangkat lunak yang
digunakan untuk membuat aplikasi android adalah Android Studio. Salah satu
hasil komputasi yang diperoleh menunjukkan bahwa modifikasi metode conjugate
gradient Hestenes-Stiefel memiliki iterasi lebih sedikit dibandingkan dengan
modifikasi lainnya.
Kata kunci: Android Studio, Conjugate gradient, Pengoptimuman

ABSTRACT
IMAM SHALAHUDDIN. Optimization of the Quadratic Function Using
Conjugate Gradient Method and Its Application Based on Android Platform.
Supervised by BIB PARUHUM SILALAHI and SISWANDI.
Unconstrained optimization is a search for the best value of a function,
either maximum or minimun, without any constraints on decision variables. One
of the methods that used for solving the unconstrained optimization numerically is
the so-called conjugate gradient method. The important characteristic of this
method is the search direction that conjugates each other. The modification of this
method lies in the differences of the definition of the search direction, as
employed by Hestenes-Stiefel, Polak-Ribiere-Polyak, Dai-Yuan, and FletcherReeves methods. This work reconstructs the search direction modifications of
conjugate gradient method and compares the number of iterations for all modified
methods by using android application. The software that is utilized to create the

applications on android based operating system is Android Studio. One of the
results indicated that Hestenes-Stiefel method provides less iterations compared to
the other methods.
Keywords: Android Studio, Conjugate gradient, Optimization

PENGOPTIMUMAN FUNGSI KUADRATIK DENGAN
METODE CONJUGATE GRADIENT DAN
PENERAPANNYA MENGGUNAKAN APLIKASI ANDROID

IMAM SHALAHUDDIN

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
2016

Judul Skripsi : Pengoptimuman Fungsi Kuadratik dengan Metode Conjugate
Gradient dan Penerapannya Menggunakan Aplikasi Android
Nama
: Imam Shalahuddin
NIM
: G54110053

Disetujui oleh

Dr Ir Bib Paruhum Silalahi, MKom
Pembimbing I

Diketahui oleh

Dr Toni Bakhtiar, MSc
Ketua Departemen


Tanggal Lulus:

Drs Siswandi, MSi
Pembimbing II

PRAKATA
Puji dan syukur penulis panjatkan ke hadirat Allah SWT atas segala
nikmat, rahmat, dan karunia-Nya sehingga penulis dapat menyelesaikan karya
ilmiah ini. Tema yang dipilih adalah Riset Operasi dengan judul Pengoptimuman
Fungsi Kuadratik dengan Metode Conjugate Gradient dan Penerapannya
Menggunakan Aplikasi Android.
Terima kasih penulis ucapkan kepada Dr Ir Bib Paruhum Silalahi, MKom
selaku dosen pembimbing I, Drs Siswandi, MSi selaku dosen pembimbing II, dan
Dra Farida Hanum, MSi selaku dosen penguji yang telah memberikan saran dan
masukan demi kesempurnaan karya ilmiah ini. Ungkapan terima kasih juga
kepada Abi, Ummi, Ica, Ayu dan Syifa atas support dalam keluarga, serta terima
kasih kepada Tikah, Faza, Dinar, Aisyah, Ria, Yaya, Intan, Baim, Niken, Alfi,
Firi, Deva, Fakhri, seluruh mahasiswa Departemen Matematika angkatan 47, 48,
49, dan 50 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 dapat bermanfaat bagi dunia ilmu pengetahuan
khususnya Matematika dan dapat menjadi inspirasi bagi penelitian selanjutnya.

Bogor, Januari 2016

Imam Shalahuddin

DAFTAR ISI
DAFTAR TABEL

viii

DAFTAR GAMBAR

viii

DAFTAR LAMPIRAN

viii


PENDAHULUAN

1

Latar Belakang

1

Tujuan Penelitian

2

TINJAUAN PUSTAKA

2

HASIL DAN PEMBAHASAN

2


Metode Conjugate Gradient

6

Contoh Pembuatan Aplikasi Penyelesaian Metode
Conjugate Gradient HS 3 variabel Berbasiskan Android

10

Algoritme Conjugate Gradient

15

Hasil Komputasi Modifikasi Metode Conjugate Gradient
dengan Aplikasi Android

16

Contoh Perhitungan Metode Conjugate Gradient

Hestenes-Stiefel (HS) 2 Variabel
SIMPULAN DAN SARAN

18
21

Simpulan

21

Saran

22

DAFTAR PUSTAKA

22

LAMPIRAN


23

RIWAYAT HIDUP

39

DAFTAR TABEL
1
2
3
4

Kasus untuk fungsi dua variabel menggunakan aplikasi android
Kasus untuk fungsi tiga variabel menggunakan aplikasi android
Kasus untuk fungsi empat variabel menggunakan aplikasi android
Kasus untuk fungsi lima variabel menggunakan aplikasi android

16
16
17

17

DAFTAR GAMBAR
1
2
3
4
5
6
7
8
9
10
11

Jendela nama aplikasi android
Jendela minimum Software Development Kit (SDK) android studio
Jendela Activity to Mobile
Penamaan file aplikasi android
Jendela utama android studio
Jendela kodingan layout aplikasi android
Jendela kodingan java aplikasi android
Pemilihan device running aplikasi android
Tampilan aplikasi android di device
Hasil iterasi lima variabel
Hasil metode HS

10
11
11
12
12
13
13
14
14
18
21

DAFTAR LAMPIRAN
1
2
3
4
5

Pembuktian arah pencarian yang meminimumkan suatu fungsi
Tampilan aplikasi android metode conjugate gradient
Kode layout android studio tiga variabel metode HS
Kode java android studio tiga variabel metode HS
Kode Gambar 11 dengan Matlab

23
23
25
32
37

PENDAHULUAN
Latar Belakang
Perkembangan teknologi saat ini menjadikan telepon genggam (handphone)
sebagai salah satu perangkat elektronik yang sederhana dan mudah dibawa oleh
penggunanya. Salah satu sistem operasi pada telepon genggam adalah sistem
operasi android.
Pengoptimuman adalah pencarian nilai terbaik (minimum atau maksimum)
dari suatu fungsi yang diberikan pada suatu konteks. Masalah pengoptimuman
secara garis besar dibedakan menjadi dua yaitu masalah pengoptimuman dengan
kendala dan masalah pengoptimuman tanpa kendala. Masalah pengoptimuman
dengan kendala merupakan masalah pengoptimuman fungsi objektif yang
memenuhi kendala-kendalanya.
Penyelesaian pengoptimuman fungsi dapat dilakukan dengan dua
pendekatan yaitu secara analitik (contohnya penggunaan teorema-teorema dalam
kalkulus) dan secara numerik. Metode numerik adalah teknik ketika masalah
matematika diformulasikan sedemikian rupa sehingga dapat diselesaikan oleh
pengoperasian aritmatika (Capra dan Canale 1991). Penyelesaian secara numerik
umumnya melibatkan proses iterasi, perhitungan berulang dari data numerik yang
ada. Jika proses iterasi dilakukan dengan cara manual, akan membutuhkan waktu
yang sangat lama dan memungkinkan timbulnya kesalahan akibat manusia itu
sendiri. Misalnya untuk menyelesaikan persamaan nonlinear, membutuhkan
waktu yang sangat lama apabila dikerjakan secara manual. Pada kenyataannya
sering terjadi proses iterasi ratusan kali, pada keadaan demikian ini komputer
sangat dibutuhkan untuk mengurangi waktu penyelesaian (Munif dan
Hidayatullah 1995).
Pendekatan numerik dibagi menjadi dua yaitu pendekatan tanpa gradien dan
pendekatan dengan menggunakan gradien. Metode pendekatan tanpa gradien
antara lain: metode pencarian pola dan metode pencarian acak, sedangkan metode
pendekatan dengan gradien antara lain: metode steepest descent, metode
conjugate gradient dan metode Newton. Terdapat modifikasi arah pencarian pada
metode conjugate gradient antara lain Fletcher-Reeves, Polak-Ribiere-Polyak,
Hestenes-Stiefel, Dai-Yuan, Conjugate-Descent, dan Liu-Storey.
Pembahasan karya ilmiah ini difokuskan pada salah satu bentuk
pengoptimuman tanpa kendala khususnya untuk menyelesaikan fungsi kuadratik
dengan metode conjugate gradient menggunakan arah pencarian Fletcher-Reeves,
Polak-Ribiere-Polyak, Hestenes-Stiefel, dan Dai-Yuan serta penerapannya
menggunakan aplikasi android. Algoritme yang digunakan untuk mencari nilai
optimum ini bersifat iteratif, yaitu dimulai dari suatu nilai awal
kemudian
bergerak ke nilai
kemudian
dan selanjutnya sampai , dengan
adalah
nilai yang mendekati titik optimal.

2
Tujuan Penelitian
Tujuan dari penelitian ini ialah sebagai berikut:
1. merekonstruksi modifikasi arah pencarian metode conjugate gradient FletcherReeves, Polak-Ribiere-Polyak, Hestenes-Stiefel, dan Dai-Yuan,
2. membangun aplikasi pengoptimuman sederhana berbasiskan android,
3. membandingkan iterasi penyelesaian untuk semua modifikasi arah pencarian
metode conjugate gradient Fletcher-Reeves, Polak-Ribiere-Polyak, HestenesStiefel, dan Dai-Yuan dengan menggunakan aplikasi android.

TINJAUAN PUSTAKA
Definisi Fungsi Kuadratik
Suatu fungsi
dituliskan sebagai

dinamakan fungsi kuadratik dalam

variabel jika dapat

(1)
dengan
, dan vektor real berukuran
(Luenberger dan Ye 2008).

, dan

matriks real berukuran

Kondisi Keoptimuman
Definisi 1 (Keoptimuman)
Misalkan
adalah suatu fungsi dengan
, kemudian ambil ̅
. Jika
̅
maka ̅ disebut minimum global. Jika
,
sehingga
̅
̅ maka ̅ disebut minimum lokal. Dan jika
̅
̅ maka ̅ disebut minimum lokal sejati, dengan
̅

̅
̅‖
(Bazzara et al. 1993).
Definisi 2 (Vektor Gradien)
Misalkan
adalah fungsi kuadratik (1), vektor gradien dari fungsi
didefinisikan sebagai

̅
(Bazzara et al. 1993).

̅
(

)

3
Definisi 3 (Keterturunan/Differentiable)
Misalkan fungsi
. Fungsi dikatakan terturunkan (differentiable)
di ̅ , jika terdapat suatu vektor gradien
̅ , dan suatu fungsi
sedemikian sehingga

dan

̅

̅

̅

̅
̅

̅



̅‖

(Bazzara et al. 1993).

̅

̅

Syarat Perlu Keoptimuman
Syarat perlu orde pertama agar ̅ minimum lokal diberikan pada akibat Teorema 1
berikut:
Teorema 1
Misalkan fungsi
terturunkan di ̅ . Jika terdapat vektor
sedemikian sehingga
̅
maka terdapat
sedemikian sehingga
̅
jadi disebut arah menurun dari di ̅ (Bazzara
et al. 1993).
Akibat Teorema 1
Misalkan fungsi
terturunkan di ̅ . Jika ̅ minimum lokal maka
̅
(Bazzara et al. 1993).
Definisi 4 (Keterturunan Dua Kali/Twice Differentiable)
Misalkan fungsi
. Fungsi dikatakan terturunkan dua kali (twice
differentiable) di ̅ , jika terdapat suatu vektor gradien
̅ , dan matriks
̅
berukuran
yang disebut matriks Hesse serta suatu fungsi
sedemikian sehingga

dan
̅



̅
̅

Definisi 5 (Matriks Hesse)
Misalkan fungsi

̅‖

̅
̅

̅

dan

̅

̅

untuk

dan

̅

̅

(Bazzara et al. 1993).

terturunkan dua kali. Matriks Hesse

adalah matriks turunan parsial kedua dari
̅

̅

, dinyatakan sebagai
(Bazzara et al. 1993).

̅

̅

Definisi 6 (Kedefinitan Matriks)
Misalkan
adalah suatu matriks simetrik berukuran
Matriks
disebut semidefinit positif jika dan hanya jika
;
, dan disebut
definit positif jika dan hanya jika
;
di
(Bazzara et al. 1993).

4
Contoh 1
Misalkan
;

.

Karena

untuk

maka

disebut definit positif.

Teorema 2
Misalkan fungsi
minimum lokal maka
1993).
̅

terturunkan dua kali di ̅ . Jika ̅ adalah
dan
̅ semidefinit positif (Bazzara et al.

Syarat Cukup Keoptimuman
Teorema 3
Misalkan fungsi
terturunkan dua kali di ̅ Jika
̅
dan
̅ semidefinit positif maka ̅ adalah minimum lokal (Bazzara et al. 1993).
Contoh 2

Minimumkan
1. Berdasarkan Teorema 3 maka kandidat titik optimal dapat dicari sebagai
berikut:
kemudian sama dengankan nol,
Hitung vektor gradien dari
diperoleh
)

(

Dari
diperoleh

diperoleh
. Karena

.

sehingga
maka diperoleh

adalah titik kandidat optimum.
2. Selanjutnya periksa titik kandidat yang memenuhi syarat optimum
, diperoleh
Hitung matriks Hesse dari

Kemudian hitung
Karena
sehingga

maka

adalah semidefinit positif,

adalah minimum lokal.

Jadi

5
Definisi 7 (Fungsi Konveks)
Misalkan fungsi

. Fungsi
,

disebut fungsi konveks jika
dan
(Bazzara et

al. 1993).
Teorema 4
Misalkan fungsi
jika dan hanya jika

konveks di ̅ . Titik ̅ disebut minimum global
(Bazzara et al. 1993).
̅

Definisi 8 (Vektor-vektor yang conjugate)
Misalkan
adalah matriks simetrik berukuran
dan definit positif
sedangkan vektor
dengan
adalah vektor-vektor taknol.
Vektor-vektor
disebut conjugate terhadap jika
(2)

,
(Sun dan Yuan 2006).

Metode Conjugate Gradient
Metode conjugate gradient adalah metode pengoptimuman untuk fungsi
nonlinear
(3)
dengan
adalah fungsi kontinu terturunkan. Metode ini bersifat iteratif
dengan formula sebagai berikut:
(4)
dengan
, dan
menunjukkan banyaknya iterasi untuk memperoleh
pendekatan solusi optimal dari persamaan (3). Didefinisikan
adalah panjang
langkah pada iterasi ke dan
adalah arah pencarian pada iterasi ke . Panjang
langkah (stepsize)
dapat diperoleh dengan pencarian:
{ (

)}

(5)

Berdasarkan Chen (2012), karena kemudahan dari iterasi dan kebutuhan
memori yang kecil, metode conjugate gradient adalah salah satu metode yang
terkenal untuk menyelesaikan masalah pengoptimuman tak berkendala (3),
khususnya dalam kasus dengan dimensi
dari
besar,
. Arah
pencarian
didefinisikan sebagai:

dengan

{

adalah skalar dan

(6)

6

.
Pada metode conjugate gradient terdapat pendefinisian skalar
berbeda-beda. Jika diambil

(7)
yang
(8)

maka metode tersebut disebut conjugate gradient Hestenes-Stiefel (HS).
Jika diambil
(9)
maka metode tersebut disebut conjugate gradient Polak-Ribiere-Polyak (PRP).
Jika diambil
(10)
maka metode tersebut disebut conjugate gradient Dai-Yuan (DY).
Jika diambil
(11)
maka metode tersebut disebut conjugate gradient Fletcher-Reeves (FR).
Perbedaan skalar
pada metode conjugate gradient disebabkan karena
adanya pendefinisian persamaan dan teorema baru. Secara teori metode ini tidak
akan berhenti atau akan terus melakukan iterasi sampai kriteria penghentian
terpenuhi (Chen 2012).

HASIL DAN PEMBAHASAN
Metode Conjugate Gradient
Metode conjugate gradient adalah salah satu metode yang digunakan untuk
menyelesaikan masalah pengoptimuman tanpa kendala. Penggunaan metode ini
dapat digunakan untuk masalah pengoptimuman skala besar. Metode ini pertama
kali ditemukan oleh Hestenes and Stiefel pada tahun 1950-an unutk memecahkan
sistem persamaan linear. Pemecahan masalah sistem persamaan linear pada
metode ini setara dengan pemecahan masalah minimisasi fungsi kuadratik yang
definit positif dengan membuat turunan pertamanya sama dengan nol. Fletcher
dan Reeves pada tahun 1964 menggunakan metode ini untuk menyelesaikan
sistem persamaan nonlinear dan masalah umum minimalisasi tak berkendala
(Capra dan Canale 1991).

7
Misalkan
langkah ke
diperoleh

adalah fungsi kuadratik (1) dan nilai
diperoleh setelah
ketika meminimumkan fungsi . Berdasarkan Definisi 2

.

(12)

Dari persamaan (4) diperoleh

(13)
Berdasarkan Definisi 2 diperoleh
(14)

(15)

Salah satu sifat utama metode conjugate gradient adalah vektor-arah
pencarian yang saling conjugate. Arah pencarian pada metode ini didefinisikan
pada persamaan (6). Modifikasi metode conjugate gradient terletak pada
pendefinisian skalar
. Berdasarkan Definisi 8 dengan memisalkan
dan
diperoleh
(16)
Persamaan (6) dan (7) disubstitusikan ke persamaan (16) diperoleh

(17)

dengan
dimulai pada iterasi kedua, dan
adalah
dengan
adalah
dengan
dimulai pada iterasi pertama. Persamaan (15)
disubstitusikan ke persamaan (17) diperoleh

8

Berdasarkan persamaan (7),
maka diperoleh

(

(

)

)

dan

(18)
Berdasarkan persamaan (8) modifikasi ini disebut modifikasi metode conjugate
gradient Hestenes-Stiefel (HS).
Berikut ini adalah teorema arah pencarian conjugate untuk fungsi kuadratik
dengan matriks Hesse definit positif:
Teorema 5:
Misalkan titik
diperoleh setelah langkah ke
ketika
meminimumkan fungsi kuadratik

, dengan ,
dan
. Jika vektor
adalah arah pencarian yang saling
conjugate terhadap matriks A berukuran
dan definit positif, maka
untuk
(Rao 1984).
Bukti:
Dari persamaan (14) dan dengan mengalikan kedua ruas dengan

Untuk membuktikan
dan
dengan
Saat
didapat

diperoleh

diperlukan dua permisalan yaitu saat

(

)

Karena
adalah panjang langkah sepanjang arah
yang meminimumkan nilai
maka
(
)
(bukti Lampiran 1) dan karena vektor
adalah arah pencarian yang saling conjugate terhadap matriks A berukuran
dan definit positif maka
, sehingga diperoleh

9
untuk
dengan

Sedangkan saat
,
(
) saat
(Rao 1984).
Dari persamaan (18) dan berdasarkan Teorema 5
diperoleh

karena sama

(19)
dari persamaan (6), persamaan (19) dapat ditulis

Berdasarkan persamaan (7)
diperoleh

maka

Berdasarkan Teorema 5 diperoleh

Berdasarkan persamaan (9) modifikasi ini disebut modifikasi metode conjugate
gradient Polak-Ribiere-Polyak (PRP).
Selanjutnya berdasarkan persamaan (7), misalkan

(20)
Dari persamaan (6), persamaan (20) dapat ditulis

Berdasarkan Teorema 5 diperoleh
(21)
Dari persamaan (14), persamaan (21) dapat ditulis

10
Berdasarkan Teorema 5 dan Definisi 8 diperoleh
(22)
Dari persamaan (18) dan berdasarkan persamaan (22) diperoleh

Berdasarkan persamaan (10) modifikasi ini disebut modifikasi metode conjugate
gradient Dai-Yuan (DY).
Dari persamaan (18), berdasarkan Teorema 5 dan persamaan (22), maka
diperoleh pendefinisian baru untuk nilai skalar
yaitu

Berdasarkan persamaan (11) modifikasi ini disebut modifikasi metode conjugate
gradient Fletcher-Reeves (FR).

Pembuatan Aplikasi Pengoptimuman Penyelesaian
Metode Conjugate Gradient Hestenes-Stiefel (HS) Tiga Variabel
Berbasiskan Android
1. Buka Android Studio, lalu pilih Start a New Android Studio project.
2. Setelah itu akan tampil jendela seperti di bawah ini.

Gambar 1 Jendela nama aplikasi android

11
Isikan Application name dengan Conjugate Gradient, dan Company Domain
dengan conjugategradient.com. Pilih Project location kemudian klik Next.
3. Selanjutnya akan tampil jendela seperti di bawah ini.

Gambar 2 Jendela minimum Software Development Kit (SDK) android studio
Pilih minimum Software Development Kit (SDK) pada Phone and Tablet,
kemudian klik Next.
4. Selanjutnya akan tampil jendela seperti di bawah ini.

Gambar 3 Jendela Activity to Mobile
Pilih Blank Activity, kemudian klik Next.

12
5. Selanjutnya akan tampil jendela seperti di bawah ini.

Gambar 4 Penamaan file aplikasi android
Terakhir, klik Finish untuk memulai proses pembuatan aplikasi.
Selanjutnya Android Studio akan tampil jendela seperti di bawah ini.

Gambar 5 Jendela utama android studio
Terdapat 3 page pada tampilan jendela utama android studio yaitu
activity_conjugate_gradient.xml, ConjugateGradient.java, AndroidManifest.xml.
6. Selanjutnya klik Text pada activity_conjugate_gradient.xml, kemudian akan
tampil jendela seperti di bawah ini.

13

Gambar 6 Jendela kodingan layout aplikasi android
Masukkan kodingan pada Lampiran 3 ke activity_conjugate_gradient.xml.
7. Selanjutnya klik ConjugateGradient.java maka akan muncul tampilan
seperti di bawah ini.

Gambar 7 Jendela kodingan java aplikasi android
Masukkan kodingan pada Lampiran 4 ke ConjugateGradient.java, kemudian klik
Run.
8. Selanjutnya akan tampil jendela seperti di bawah ini.

14

Gambar 8 Pemilihan device running aplikasi android
Pilih choose a running device, kemudian pilih device yang telah disambungkan
ke komputer, kemudian Klik OK. Setelah itu akan muncul tampilan seperti di
bawah ini.

Gambar 9 Tampilan aplikasi android di device

15
Algoritme Conjugate Gradient
Langkah 1.
Langkah 2.`

Masukkan nilai awal
, jika
maka berhenti;
Hitung panjang langkah
{ (

Tetapkan

tentukan

)}

dengan
{

Untuk metode conjugate gradient Fletcher-Reeves digunakan:

Untuk metode conjugate gradient Polak-Ribiere-Powel digunakan:

Untuk metode conjugate gradient Hestenes-Stiefel digunakan:

Untuk metode conjugate gradient Dai-Yuan digunakan:

Langkah 3.
Jika ‖
Langkah 4.
(Sun dan Yuan 2006).


maka proses berhenti;
, kembali ke langkah 2;

dan

16
Hasil Komputasi Modifikasi Metode Conjugate Gradient
dengan Aplikasi Android
Fungsi yang digunakan adalah fungsi kuadratik diagonal, yaitu fungsi yang
dibangkitkan secara acak dengan ketentuan sebagai berikut:

dengan
adalah matriks diagonal berukuran
dengan setiap nilai
diagonalnya adalah random integer dengan batas [0,100]. Banyak variabel yang
digunakan adalah N = 2,3,4,5. Vektor
adalah random integer dengan batas
[10,10]. Diberikan titik awal
adalah vektor nol dan setiap kasus memiliki
kriteria perhentian = Tol =
.
Misalkan:

diperoleh
Tabel 1 Kasus untuk fungsi dua variabel menggunakan aplikasi android
N
Tol
FR
PRP
HS
DY
Iterasi
Iterasi
Iterasi
Iterasi
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
Misalkan:

diperoleh
Tabel 2 Kasus untuk fungsi tiga variabel menggunakan aplikasi android
N
Tol
FR
PRP
HS
DY
Iterasi
Iterasi
Iterasi
Iterasi
3
5
5
5
5
7
7
7
7
9
8
8
9
4
4
4
4
7
6
6
7
9
8
8
9

17
Misalkan:

diperoleh
Tabel 3 Kasus untuk fungsi empat variabel menggunakan aplikasi android
N
Tol
FR
PRP
HS
DY
Iterasi
Iterasi
Iterasi
Iterasi
4
8
21
8
8
16
25
14
15
24
28
19
23
7
19
7
7
14
25
12
14
22
28
18
21
Misalkan:

diperoleh
Tabel 4 Kasus untuk fungsi lima variabel menggunakan aplikasi android
N
Tol
FR
PRP
HS
DY
Iterasi
Iterasi
Iterasi
Iterasi
5
30
27
21
26
45
37
30
44
65
46
41
61
23
27
20
22
44
37
27
40
64
44
38
57
Pada Tabel 1 dan Tabel 2 menunjukkan bahwa keempat modifikasi metode
conjugate gradient mempunyai nilai iterasi yang tidak jauh berbeda. Hal ini
dikarenakan jumlah variabel yang terlalu kecil sehingga sulit untuk menentukan
modifikasi yang terbaik. Pada kasus berikutnya dengan menambahkan jumlah
variabel Tabel 3 dan Tabel 4 menunjukkan bahwa modifikasi metode conjugate
gradient HS mempunyai iterasi yang paling sedikit dibandingkan dengan
modifikasi lainnya.

18
80
FR

iterasi

60

PRP
40
DY
20

HS

0
0.1

0.001

0.00001

0.25

0.0025

0.000025

toleransi

Gambar 10 Hasil iterasi lima variabel

Contoh Perhitungan Metode Conjugate Gradient
Hestenes-Stiefel (HS) 2 Variabel
menggunakan metode

Minimumkan
conjugate gradient HS, dengan nilai awal
Langkah 1

, dan toleransi

Iterasi
,
Tentukan gradien dari

[
]
Substitusikan nilai awal
diperoleh

[

]

pada saat

, lanjut ke langkah 2.
Tetapkan
Langkah 2

.






Hitung panjang langkah
{ (

)}

ke gradien dari ,

19

Nilai

diperoleh dari turunan pertama

Misalkan

Tetapkan

Substitusikan nilai
Hitung

Langkah 3

Periksa



Langkah 4

Karena ‖

Langkah 2

Iterasi

ke
[



‖ lebih besar dari toleransi maka iterasi berlanjut;

Iterasi

, kembali ke langkah 2;

,

Tetapkan ,
berdasarkan algoritme

Nilai

]

diperoleh dari

20

Hitung panjang langkah
{ (

Nilai

diperoleh dari turunan pertama

Misalkan

Tetapkan

Substitusikan nilai

ke

)}

21
Hitung

Langkah 3

Langkah 4

Periksa


Karena ‖
Iterasi =

Jadi nilai minimum dari



[

]

‖ lebih kecil dari toleransi maka iterasi berhenti;
, berhenti;
adalah

Gambar 11 Hasil metode HS

SIMPULAN DAN SARAN
Simpulan
Pada tugas akhir ini berhasil dibuat aplikasi optimasi sederhana berbasiskan
android untuk semua modifikasi metode conjugate gradient. Dengan adanya
aplikasi ini perhitungan jumlah iterasi yang panjang dan rumit bisa dihilangkan
dan diganti dengan sangat mudah dan praktis.
Metode conjugate gradient merupakan salah satu metode yang digunakan
untuk menyelesaikan pengoptimuman tak berkendala. Perbedaan modifikasi arah
pencarian metode conjugate gradient terletak pada pendefinisian skalar. Hasil
komputasi menunjukkan bahwa modifikasi metode conjugate gradient HS
memberikan iterasi yang lebih sedikit dibandingkan dengan modifikasi lainnya

22
terutama terlihat jelas pada kasus empat dan lima variabel untuk semua toleransi
yang diberikan.

Saran
Karya ilmiah ini bisa dilakukan dengan metode yang lain atau dibandingkan
dengan metode yang lain, membuat tampilan android yang lebih menarik, dan
membuat fungsi utama bukan fungsi kuadratik.

DAFTAR PUSTAKA
Bazzara MS, Sherali HD, Shetty CM. 1993. Nonlinear Programming: Theory and
Algorithms. Singapore (SG): John Willey and Sons, Inc.
Capra SC, Canale RP. 1991. Numerical Methods for Engineers with Personal
Computer Applications. Ed ke-2. New York (NY): MacGraw-Hill, Inc.
Chen Y. 2012. Global convergence of a new conjugate gradient with wolfe type
line search. Journal of Information and Computing Science. 7(1): 67-71.
Luenberger DG, Ye Y. 2008. Linear and Nonlinear Programming. Ed ke-3. New
York (US): Springer.
Munif A, Hidayatullah P. 1995. Cara Praktis Penguasaan dan Penggunaan Metode
Numerik. Surabaya (ID): Guna Widya.
Rao SS. 1984. Optimization: Theory and Applications. United States (US): Wiley
Eastern.
Sun W, Yuan Y. 2006. Optimization Theory and Methods: Nonlinear
Programming. New York (US): Springer.

23
Lampiran 1 Pembuktian arah pencarian yang meminimumkan suatu fungsi
Misalkan minimumkan fungsi
Definisikan

dengan

.

diberikan
Subtitusikan
, sehingga
jika adalah meminimumkan maka
karena
, maka

. Akibat teorema 1

sehingga

:
:
(terbukti).
Lampiran 2 Tampilan aplikasi android metode conjugate gradient

Gambar 13 Menu Utama CG
(apk)

Gambar 14 Menu Pemilihan variabel CG

24

Gambar 15 Tampilan masukan CG

Gambar 16 Tampilan keluaran CG

25
Lampiran 3 Kode layout android studio tiga variabel metode HS






































32
Lampiran 4 Kode java android studio tiga variabel metode HS
package com.conjugategradient.conjugategradient;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class fr3 extends ActionBarActivity {
TextView input1, input2, input3, input4, input5, input6, input7, input8,
input9, input10, input11, result1, result2, result3, result4;
Button btHitung;
private int k=0;
private int operation=0;
private double toleransi=0.0001;
private double i=0;
private double dx1 =0;
private double ex2 =0;
private double gx3=0;
private double m=0;
private double z=0;
private double lambda;
private double y1=0;
private double y2=0;
private double a=0;
private double b=0;
private double c=0;
private double y3=0;
private double df1=0;
private double df2=0;
private double dx3=0;
private double ex3=0;
private double LGM1=0;
private double LGM2=0;
private double LGM3=0;
private double LGM11=0;
private double LGM22=0;
private double LGM33=0;
private double betta=0;
private double z1=0;
private double z2=0;
private int xx=0;

33

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fr3);
input1 = (TextView) findViewById(R.id.masukan1);
input2 = (TextView) findViewById(R.id.masukan2);
input3 = (TextView) findViewById(R.id.masukan3);
input4 = (TextView) findViewById(R.id.masukan4);
input5 = (TextView) findViewById(R.id.masukan5);
input6 = (TextView) findViewById(R.id.masukan6);
input7 = (TextView) findViewById(R.id.masukan7);
input8 = (TextView) findViewById(R.id.masukan8);
input9 = (TextView) findViewById(R.id.masukan9);
input10 = (TextView) findViewById(R.id.masukan10);
input11 = (TextView) findViewById(R.id.masukan11);
result1 = (TextView) findViewById(R.id.editText5);
result2 = (TextView) findViewById(R.id.editText6);
result3 =(TextView) findViewById(R.id.editText7);
result4 =(TextView) findViewById(R.id.editText8);
btHitung = (Button) findViewById(R.id.hitung);
}
public void klikHasil(View V) {
double x1 = Double.parseDouble(input8.getText().toString());
double x2 = Double.parseDouble(input9.getText().toString());
double x3 = Double.parseDouble(input11.getText().toString());
double inputA = Double.parseDouble(input1.getText().toString());
double inputB = Double.parseDouble(input2.getText().toString());
double inputD = Double.parseDouble(input3.getText().toString());
double inputE = Double.parseDouble(input4.getText().toString());
double inputF = Double.parseDouble(input5.getText().toString());
double inputG = Double.parseDouble(input6.getText().toString());
double inputH = Double.parseDouble(input7.getText().toString());
double tol = Double.parseDouble(input10.getText().toString());
LGM1 = d(x1);
dx3 = LGM1 * LGM1;
LGM2 = e(x2);
ex3 = LGM2 * LGM2;
LGM3 = g(x3);
gx3 = LGM3 * LGM3;
z1 = Math.abs(Math.sqrt(dx3 + ex3 + gx3));
i = tol;
dx1 = -LGM1;
ex2 = -LGM2;
gx3 = -LGM3;

34
b = -(((-inputE * dx1) - (inputF * ex2) - (inputG * gx3) - (2 * inputA *
dx1 * x1) - (2 * inputB * ex2 * x2) - (2 * inputD * gx3 * x3)));
a = ((inputA * dx1 * dx1) + (inputB * ex2 * ex2) + (inputD * gx3 *
gx3));
c = (inputH + (inputE * x1) + (inputA * x1 * x1) + (inputF * x2) +
(inputB * x2 * x2) + (inputG * x3) + (inputD * x3 * x3));
lambda = -b / (2 * a);
y1 = x1 + lambda * (dx1);
y2 = x2 + lambda * (ex2);
y3 = x3 + lambda * (gx3);
x1 = y1;
x2 = y2;
x3 = y3;
LGM11 = d(x1);
dx3 = LGM11 * LGM11;
LGM22 = e(x2);
ex3 = LGM22 * LGM22;
LGM33 = g(x3);
gx3 = LGM33 * LGM33;
z2 = Math.abs(Math.sqrt(dx3 + ex3 + gx3));//nih normnya cek
k = k + 1;
while (z2 >i){
betta = (((LGM11*LGM11) + (LGM22*LGM22) +
(LGM33*LGM33)) - ((LGM11*LGM1) + (LGM2*LGM22)
+ (LGM3*LGM33))) / (((LGM33*gx3) + (dx1*LGM11) +
(ex2*LGM22)) - ((dx1*LGM1) + (ex2*LGM2) +
(gx3*LGM3)));
dx1= - (LGM11) + (betta*-LGM1);
ex2= - (LGM22) + (betta*-LGM2);
gx3= - (LGM33) + (betta*-LGM3);
b = - (((-inputE * dx1) - (inputF * ex2) - (inputG * gx3) - (2 *
inputA * dx1 * x1) - (2 * inputB * ex2 * x2) - (2 * inputD * gx3
* x3)));
a = ((inputA * dx1 * dx1) + (inputB * ex2 * ex2) + (inputD * gx3 *
gx3));
c = (inputH + (inputE * x1) + (inputA * x1 * x1) + (inputF * x2) +
(inputB * x2 * x2) + (inputG * x3) + (inputD * x3 * x3));
if (a==0 && b==0) {
x1=x1;
x2=x2;
x3=x3;
LGM1=LGM11;
LGM2=LGM22;
LGM3=LGM33;
LGM11 = d(x1);

35
dx3 = LGM11 * LGM11;
LGM22 = e(x2);
ex3 = LGM22 * LGM22;
LGM33 = g(x3);
gx1 = LGM33 * LGM33;
z1=z2;
z2 = Math.abs(Math.sqrt(dx3 + ex3 + gx1));
k=k;
}
else {
lambda = -b / (2 * a);
y1 = x1 + lambda * (dx1);
y2 = x2 + lambda * (ex2);
y3 = x3 + lambda * (gx3);
x1 = y1;
x2 = y2;
x3 = y3;
LGM1=LGM11;
LGM2=LGM22;
LGM3=LGM33;
LGM11 = d(x1);
dx3 = LGM11 * LGM11;
LGM22 = e(x2);
ex3 = LGM22 * LGM22;
LGM33 = g(x3);
gx1 = LGM33 * LGM33;
z2 = Math.abs(Math.sqrt(dx3 + ex3 + gx1));
k = k + 1;}

String hasilString1 = String.valueOf(k);
String hasilString2 = String.valueOf(x1);
String hasilString3 = String.valueOf(x2);
String hasilString4 = String.valueOf(x3);
result1.setText(hasilString1);
result2.setText(hasilString2);
result3.setText(hasilString3);
result4.setText(hasilString4);
}
}
public double f(double x1, double x2, double x3) {
double inputA = Double.parseDouble(input1.getText().toString());
double inputB = Double.parseDouble(input2.getText().toString());
double inputD = Double.parseDouble(input3.getText().toString());
double inputE = Double.parseDouble(input4.getText().toString());

36
double inputF = Double.parseDouble(input5.getText().toString());
double inputG = Double.parseDouble(input6.getText().toString());
double inputH = Double.parseDouble(input7.getText().toString());
return
inputA*x1*x1+inputB*x2*x2+inputD*x3*x3+inputE*x1+inputF*x2
+inputG*x3+inputH; }
public double d(double x1) {
double inputA = Double.parseDouble(input1.getText().toString());
double inputE = Double.parseDouble(input4.getText().toString());
return inputA*2*x1+inputE;
}
public double e(double x2) {
double inputB = Double.parseDouble(input2.getText().toString());
double inputF = Double.parseDouble(input5.getText().toString());
return inputB*2*x2+inputF;
}
public double g(double x3) {
double inputD = Double.parseDouble(input3.getText().toString());
double inputG = Double.parseDouble(input6.getText().toString());
return inputD*2*x3+inputG; }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_fr3, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}

37
Lampiran 5 Kode Gambar 11 dengan Matlab
clear
clc
tic
syms x1 x2 lambda u v w S2
f
= 2*x1^2 + 8*x1 + x2^2 + 10*x2 + 29;
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)];
S1
= subs(Gradien,[x1 x2],{x0(1),x0(2)})
LGM
= lambda*(-S1);
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)})
z
= -S1;
LGM
= ((S*S')-(S*S1'))/((z*S')-(z*S1'));
z
= (-S)+(LGM*(-S1));
y0
= x0+(lambda*z);
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;
u
= S;
S2
= z;
S1
= S;
S
= subs(Gradien,[x1 x2],{x0(1),x0(2)})
if norm(S)tol

38
z
=
LGM
=
z
=
y0
=
fsub
=
difsub =
Lsub
=
LM
=
y0
=
k
=
N
=
x0
=
u
=
S2
=
S1
=
S
=
end
end
iterasi=k
N
toc

S2;
((S*S')-(S*S1'))/((z*S')-(z*S1'));
(-S)+(LGM*(-S1));
x0+(lambda*z);
subs(f,[x1,x2],{y0(1),y0(2)});
diff(fsub,lambda);
solve(difsub,lambda);
min(single(Lsub));
subs(y0,lambda,LM);
k+1;
[N;y0(1) y0(2)];
y0;
S;
z;
S;
subs(Gradien,[x1 x2],{x0(1),x0(2)})

clf(figure(1))
figure(1)
ezcontour(f,[1,-6],[1,-6])
grid on
hold on
plot(N(:,1),N(:,2),'-ko','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',3)
axis square

39
RIWAYAT HIDUP

Penulis dilahirkan di Jakarta pada tanggal 13 Maret 1994 sebagai anak
pertama dari tiga bersaudara, dari pasangan Rohmat dan Sri Ningsih. Tahun 2011
penulis lulus dari SMAN 46 Jakarta dan pada tahun yang sama penulis lulus
seleksi masuk Institut Pertanian Bogor (IPB) melalui jalur Seleksi Nasional
Masuk Perguruan Tinggi Negeri (SNMPTN) IPB dan diterima di Departemen
Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam.
Selama masa perkuliahan, penulis aktif pada lembaga kemahasiswaan, yaitu
Ketua Departemen BEM TPB IPB periode 2011/2012, Staf Departmen Minat
Bakat dan Pengembangen Diri (MBM) BEM FMIPA IPB 2012/2013, dan Wakil
Ketua BEM FMIPA IPB periode 2013/2014, dan beberapa kegiatan kepanitiaan,
antara lain staf Tim Kreatif kegiatan MPD Matematika IPB tahun 2013, Ketua
Acara kegiatan SPIRIT FMIPA IPB tahun 2013, staf Divisi Konsumsi kegiatan
Pesta Sains Nasional (PSN) tahun 2013-2014, dan aktif sebagai asisten
Pendidikan Agama Islam IPB 2012/2014.