Anda di halaman 1dari 10

TUGAS 1

Metode Optimisasi Lanjut


Menentukan Solusi Optimum dari Fungsi Griewank Orde 2
Menggunakan Metode Descent Direction dan Line Search
Afdol Zikri
20121021
December 15, 2023

1 Pendahuluan
Dalam mencari titik minimum dari suatu fungsi nonlinear, terdapat beberapa metode, salah satunya adalah
metode Descent Direction dalam mennentukan arah 𝑝 𝑘 dan Line Search dalam menentukan steplength
𝛼 𝑘 . Dalam mencari titi minimum, titik iterasi pada metode Descent Direction terlebih dahulu menentukan
arah 𝑝 𝑘 , selanjutnya dicari berapa jauhnya perpindahan 𝛼 𝑘 yang dinyatakan dalam persamaan berikut
𝑥 𝑘+1 = 𝑥 𝑘 + 𝛼 𝑘 𝑝 𝑘 (1)
Dalam laporan ini, akan dicari minimum dari fungsi griewank berorde 2, yang didefiniskan sebagi berikut
2 2
𝑥𝑖2
 
∑︁ Ö 𝑥𝑖
𝑓 (𝑥) = 1 − cos √ (2)
𝑖=1
4000 𝑖=1 𝑖
Sealnjutnya akan dievaluasi dalam interval −5 ≤ 𝑥1 , 𝑥2 ≤ 5. Pencarian titik minimum dilakukan dengan
menggunakan metode Descent Direction dalam menentukan arah 𝑝 𝑘 , dalam hal ini menggunakan metode
Steepest Descent dan Newton. Selanjtnya dalam menentukan 𝛼 𝑘 menggunkan metode Line Search, dengan
penentuan step length dilakukan dengan wolfe condition. Kemudian akan dibandingkan dan dianalisis
hasil dari setiap metodenya.

2 Descent Direction
Descent Direction merupakan suatu metode dalam menentukan arah 𝑝 𝑘 yang membuat barisan 𝑥 𝑘 kon-
vergen ke nilai minimum. Terdapat beberapa metoda dalam pemilihan Descent Direction yang akan diuji,
antara lain

2.1 Steepest Descent


Metode Steepest Descent adalah memeilih 𝑝 𝑘 = −∇ 𝑓 (𝑥 𝑘 ), dari teorema taylor, dengan 𝑥 𝑘+1 = 𝑥 𝑘 + 𝛼 𝑘 𝑝 𝑘 ,
sehingga 𝑓 (𝑥 𝑘+1 dapat ditulis dalam bentuk
𝑓 (𝑥 𝑘 + 𝛼 𝑘 𝑝 𝑘 ) = 𝑓 (𝑥 𝑘 ) + 𝛼𝑘 𝑝𝑇𝑘 ∇ 𝑓 (𝑥 𝑘 ) + 𝑂 (𝛿2 )
Dengan demikan diperoleh 𝑝𝑇𝑘 ∇ 𝑓 (𝑥 𝑘 ) < 0 dan 𝑓 (𝑥 𝑘 + 𝛼 𝑘 𝑝 𝑘 ) < 𝑓 (𝑥 𝑘 ), sehingga diperoleh 𝑝 𝑘 merupaka
Descent Direction. Selanjtnya akan diberikan Algortima dari metode Steepes Direction

1
Algorithm 1 Steepest Descent
Input (𝛼𝑚𝑎𝑥 , 𝛼0 , 𝑐 1 , 𝑐 2 , 𝜖)
𝑝 0 ← −∇ 𝑓 (𝑥0 )
𝛼0 ← Line Serach(𝑥 0 , 𝑝 0 , 𝛼𝑚𝑎𝑥 , 𝑐 1 , 𝑐 2 )
𝑥 1 = 𝑥0 + 𝛼0 𝑝 0
while ||𝑥𝑖+1 − 𝑥𝑖 || ≥ 𝜖 do
𝑝𝑖 ← −∇ 𝑓 (𝑥𝑖 )
𝛼𝑖 ← Line Search (𝑥𝑖 , 𝑝𝑖 , 𝛼𝑚𝑎𝑥 , 𝑐 1 , 𝑐 2 )
𝑥𝑖+1 = 𝑥𝑖 + 𝛼𝑖 𝑝𝑖
𝑖 ←𝑖+1
end while

2.2 Metode Newton


Metode Newton adalah memilih 𝑝 𝑘 = ∇2 𝑓 −1 (𝑥 𝑘 ) ∇ 𝑓 (𝑥 𝑘 ). Arah ini merupakan Descent Direction saat
∇2 𝑓 (𝑥 𝑘 ) definit positif. Dalam kasus tersebut diperoleh
∇ 𝑓 (𝑥 𝑘 ) 𝑝 𝑘 = −𝑝 𝑘 = 𝑘 𝑇 + ∇2 𝑓 (𝑥 𝑘 ) 𝑝 𝑘 ≤ −𝜎𝑘 || 𝑝 𝑘 ||
Jika nilai ∇ 𝑓 (𝑥 𝑘 ) ≥ 0, maka ∇ 𝑓 (𝑥 𝑘 ) 𝑝 𝑘 < 0 sehingga 𝑝 𝑘 merupakan Descent Direction. Selanjtnya akan
diberikan Algoritma dari metode Newton

Algorithm 2 Metode Newton


Input (𝛼𝑚𝑎𝑥 , 𝛼0 , 𝑐 1 , 𝑐 2 , 𝜖)
𝑝 0 ← ∇2 𝑓 −1 (𝑥 0 ) ∇ 𝑓 (𝑥0 )
𝛼0 ← Line Serach (𝑥0 , 𝑝 0 , 𝛼𝑚𝑎𝑥 , 𝑐 1 , 𝑐 2 )
𝑥 1 = 𝑥0 + 𝛼0 𝑝 0
while ||𝑥𝑖+1 − 𝑥𝑖 || ≥ 𝜖 do
𝑝𝑖 ← ∇2 𝑓 −1 (𝑥𝑖 ) ∇ 𝑓 (𝑥𝑖 )
𝛼1 ← Line Serach (𝑥𝑖 , 𝑝𝑖 , 𝛼𝑚𝑎𝑥 , 𝑐 1 , 𝑐 2 )
𝑥𝑖+1 = 𝑥𝑖 + 𝛼𝑖 𝑝𝑖
𝑖 ←𝑖+1
end while

3 Metode Line Search


Metode Line Search merupakan metode dalam menentukan step length 𝛼 dari iterasi 𝑥 𝑘 menuju iterasi
selanjutnya dengan 𝑓 yang lebih kecil. Jika𝛼 sudah ditemukan, maka iterasi dilanjutkan sampai jarak
antara suku dari iterasi yang berdekatan lebih kecil dari error yang diharapkan. Dalam laporan ini dalam
menentukan 𝛼 𝑘 akan dilakukan secara tidak eksak dengan memanfaatkan kriteria wolfe. Kriteria wolfe
dapat ditulis dalam dua persamaan
𝜙(𝛼) = 𝑓 (𝑥 𝑘 + 𝛼 𝑘 𝑝 𝑘 ), 𝛼>0
Pertama-tama, panjanng langkah harus memberikan penurunan yang cukup terhadap fungsi 𝑓 yang
dinyatakan sebagai dalam bentuk sebagai berikut
𝑓 (𝑥 𝑘 + 𝛼𝑘 𝑝 𝑘 ) < 𝑓 (𝑥 𝑘 ) + 𝑐 1 𝛼 𝑘 ∇ 𝑓𝑖𝑇 𝑝𝑖 (3)

2
untuk suatu 𝑐 1 ∈ (0, 1). Selanjutnya juga terdapat syarat yang harus dipenuhi yaitu

∇ 𝑓 (𝑥 𝑘 + 𝛼 𝑘 𝑝 𝑘 )𝑇 𝑝 𝑘 ≥ 𝑐 2 ∇ 𝑓 𝑘𝑘 𝑝 𝑘 (4)

dnegan 𝑐 2 ∈ (𝑐 1 , 2) Algoritma line Search dengan menggunakan wolfe condition dimuali dengan periki-
raan 𝛼1 dan terus meningkatkan sampai menemukan panjang langkah nya 𝛼 yang dapat diterima. se-
lanjutnya memanggil fungsi zoom, yang berturut-turut mengurangi ukuran interval sampai pada panjang
langkah yang dapat diterima. setiap iterasi dari fungsi zoom menghasilkan 𝛼 𝑗 diantara 𝛼0 dan 𝛼1 serta
kemudian menggantikan satu dari titik akhir dengan 𝛼 𝑗 sedemikan syarat syarat dipenuhi. Cara kerja dari
Algoritma Line Search dan Zoom diberikan pada Algoritma 3 dan Algoritma 4

Algorithm 3 Line Search


𝛼0 ← 0
𝛼1 ← (𝛼0 + 𝛼𝑚𝑎𝑥 )/2
while 𝑖 ≤ 1000 do

if 𝜙(𝛼𝑖 ) > 𝜙(0) + 𝑐 1 𝛼𝑖 𝜙 (0) or [𝜙(𝛼𝑖 ) ≥ 𝜙 ( 𝛼𝑖−1 ) and 𝑖 > 1] then
𝛼∗ ← Zoom (𝛼𝑖−1 , 𝛼𝑖 ) and Stop.
end if
′ ′
if |𝜙 (𝛼𝑖 )| ≤ −𝑐 2 𝜙 (0) then
𝛼∗ ← 𝛼𝑖 and Stop
end if

if 𝜙 (𝛼𝑖 ) ≥ 0 then
𝛼∗ ← Zoom (𝛼𝑖 , 𝛼𝑖−1 ) and stop
end if
𝛼 ∈ (𝛼𝑖 , 𝛼)
𝑖 =𝑖+1
end while

Algorithm 4 Zoom
while 𝑖 ≤ 1000 do
𝛼 𝑗 : Interpolasi Quadratik dan interpolasi kubik
Selanjutnya Evaluasi 𝜙𝛼 𝑗

if 𝜙(𝛼 𝑗 ) > 𝜙(0) + 𝑐 1 𝛼 𝑗 𝜙 (0) or 𝜙(𝛼 𝑗 ) ≥ 𝜙 ( 𝛼ℎ𝑖 ) then
𝛼ℎ𝑖 ← 𝛼 𝑗 .
else
′ ′
if |𝜙 (𝛼𝑖 )| ≤ −𝑐 2 𝜙 (0) then
𝛼∗ ← 𝛼 𝑗 and Stop
end if

if 𝜙 (𝛼ℎ𝑖 − 𝛼𝑙𝑜 ) ≥ 0 then
𝛼ℎ𝑖 ← Zoom (𝛼𝑙𝑜 , 𝛼𝑖−1 ) and stop
end if
𝛼𝑙𝑜 ← 𝛼 𝑗
end if
end while

3
4 Hasil dan Pembahasan
Fungsi Griewank dua dimensi yang digunakan pada laporan ini adalah sebagai berikut,
 
1 2 2 𝑥2
𝑓 (𝑥) = 1 + + (𝑥 1 + 𝑥2 ) − cos(𝑥 1 ) cos √ (5)
4000 2
dengan −4 ≤ 𝑥 1 , 𝑥2 ≤ 4. Plot dari fungsi griewank berorde 2 terlihat pada Gambar (??) Pada laporan
ini akan dicari nilai minimum global dari fungsi Griewank menggunakan kombinasi metode pencarian
arah 𝑝 𝑘 dan panjang lagkah 𝛼𝑘 dengan masing nasing 4 nilai awal yang berbeda dan nilai-nilai parameter
𝛼0 = 0, 𝛼𝑚𝑎𝑥 = 1, 𝑐 1 = 0, 0001, 𝑐 2 = 0, 5 dan nilai toleransinya 𝜖 = 10−5 .

Figure 1: Fungsi Griewank Berorde 2

Selanjutnya akan ditampilkan hasil simulasi dengan menggunakan bahasa pemograman Phyton dari
steepest Direction, dan Newton

4.1 Hasil Metode steepest Descent


Dengan metode steepest Descent dan Line search( wolfe condition), hasil iterasi ini untuk titik awal lima
titik awal dinyatakan dalam Tabel 1. Tabel 1 menunjukkan bahwa titik optimum dari 5 titik awal yang
berbeda, terlihat dari semua nilai minimum yang diperoleh maka yang minimum yang paling terkecil
adalah dan 𝑓 (𝑥𝑖 ) = 0.000 dengan nilai awal (𝑥 1 = 0.4, 𝑥2 = 0.4 dan jumlah iterasi sebanyak 16 serta
dengan galat 𝜖 = 10−5 . Pada metode ini, besar langkah perpindahan titik pada iterasi pertama sangat jauh
dibandingkan dengan iterasi-iterasi selanjutnya. Hal ini terlihat pada Gambar (2), yaitu panjang langkah,
perpindahan dari titik 𝑥 0 ke 𝑥1 sangat besar, kemudian mengecil hingga mencapai titik optimum dengan
galat 𝜖 = 10− 6

4
Tabel 1

Niali awal (𝑥 1 , 𝑥 2 ) Jumlah Iterasi Nilai Minimum 𝑓 (𝑥𝑖 )


(0.4, 0.4) 16 0.000000
(4, −4) 16 0.007396
(4, 4) 16 0.007396
(−4, 4) 16 0.007396
(−4, −4) 16 0.007396

Figure 2: Aproksimasi Nilai Minimum Fungsi Griewank dengan Steepest Descent

4.2 Hasil Metode Newton


Dengan metode Newton dan Line search( wolfe condition), hasil iterasi ini untuk titik awal lima titik awal
dinyatakan dalam Tabel 2. Tabel 2 menunjukkan bahwa titik optimum dari 5 titik awal yang berbeda,
terlihat dari semua nilai minimum yang diperoleh maka yang minimum yang paling terkecil adalah dan
𝑓 (𝑥𝑖 ) = 0.000 dengan nilai awal (𝑥 1 = 0.8, 𝑥2 = 0.8 dan jumlah iterasi sebanyak 13 serta dengan galat
𝜖 = 10−5 . Pada metode ini, besar langkah perpindahan titik pada iterasi pertama sangat jauh dibandingkan
dengan iterasi-iterasi selanjutnya. Hal ini terlihat pada Gambar (3), yaitu panjang langkah, perpindahan
dari titik 𝑥 0 ke 𝑥 1 sangat besar, kemudian mengecil hingga mencapai titik optimum dengan galat 𝜖 = 10− 6

Tabel 3

5
Niali awal (𝑥 1 , 𝑥 2 ) Jumlah Iterasi Nilai Minimum 𝑓 (𝑥𝑖 )
(0.8, 0.8) 13 0.000000
(4, −4) 12 0.007396
(4, 4) 12 0.007396
(−4, 4) 12 0.007396
(−4, −4) 12 0.007396

Figure 3: Aproksimasi Nilai Minimum Fungsi Griewank dengan Metode Newton

5 Kesimpulan
Berdasarkan dari hasil dan pembahasan, diperoleh nilai minumum global dari setiap metode Descent
Direction dalam menentukan arah 𝑝 𝑘 yang dikombinasikan dengan metode line search dalam menentukan
𝛼𝑘 adalah 𝑓 (𝑥𝑖 ) = 0.0000 dengan memberikan nilai awal 𝑥0 = [0.4, 0.4]

Metode Jumlah Iterasi 𝑓 (𝑥)


Steepest Descent 16 0.000
Newton 13 0.000

Berdasarkan Jumlah itetrasi Metode Newton adalah yang paling baik untuk mengoptimisasikan fungsi
griewank berorde 2. Metode Newton memiliki laju kekonvergenan yang lebih cepat dalam mencari solusi
minimum dari fungsi griewank bebrorde 2.

6
LAMPIRAN

Kode python Fungsi Griewank

def griewank(x):
sum_x = 0
multiply_x = 1
for i in range(len(x)):
sum_x = sum_x + x[i]**2
multiply_x = multiply_x *np.cos(x[i]/np.sqrt(i+1))
return 1+ ((sum_x)/4000) - multiply_x

def gradgriewank(x):
return np.array ([x[0]/2000+np.sin(x[0])*np.cos(x[1]/np.sqrt(2)),
x[1]/2000+np.cos(x[0])*np.sin(x[1]/np.sqrt(2))/np.sqrt(2)])

def gradgriewank2(x):
return np.array([[1/2000+np.cos(x[0])*np.cos(x[1]/np.sqrt(2)),
-(np.sin(x[0])*np.sin(x[1]/np.sqrt(2))/np.sqrt(2))],
[-(np.sin(x[0])*np.sin(x[1]/np.sqrt(2))/np.sqrt(2)),
(1/2000)+np.cos(x[0])*np.cos(x[1]/np.sqrt(2))/2]])

Kode python untuk Steepest

def Steepest(f,gradgriewank,x0):
x=[]
f=[]
x.append(np.array(x0))
f.append(griewank(x[0]))
eps=0.00001
c1=0.0001
c2=0.5
alpha_max=1
print(’Kondisi Awal: f = {:.6f}, x = {} \n’.format(f[0], x[0]))
Bk=np.identity(2)
pk=-np.linalg.inv(Bk)@gradgriewank(x[0])
alpha=Line_Search(x[0],pk,alpha_max,c1,c2)
x_baru=x[0]+alpha*pk
x.append(x_baru)
f.append(griewank(x_baru))
i=1
while np.linalg.norm(x[i]-x[i-1])>=eps and i<=1000:
Bk=np.identity(2)
pk=-np.linalg.inv(Bk)@gradgriewank(x[i])
alpha=Line_Search(x[i],pk,alpha_max,c1,c2)

7
x_baru=x[i]+alpha*pk
x.append(x_baru)
f.append(griewank(x_baru))
print(’{} \t {:.4f}, {}’. format(i, f[i], x[i]))
i+=1
if i == 1000:
print(’\nTidak Konvergen.’)
else:
print(’\nSolusi: \t f = {:.6f}, x = {}’.format(griewank(x_baru), x_baru))
return np.array(x), np.array(f)

Kode Python untuk Newton


def Newton(f,gradgriewank,x0):
x=[]
f=[]
B=[]
C=[]
x.append(np.array(x0))
f.append(griewank(x[0]))
eps=0.00001
c1=0.0001
c2=0.5
alpha_max=1
Bk=gradgriewank2(x[0])
pk=-np.linalg.inv(Bk)@gradgriewank(x[0])
alpha=Line_Search(x[0],pk,alpha_max,c1,c2)
x_baru=x[0]+alpha*pk
x.append(x_baru)
f.append(griewank(x_baru))
B.append(pk)
C.append(alpha)
print(’Kondisi Awal: f = {:.6f}, x = {}\n’.format(f[0], x[0]))
i=1
while np.linalg.norm(x[i]-x[i-1])>=eps and i<=1000:
Bk=gradgriewank2(x[0])
pk=-np.linalg.inv(Bk)@gradgriewank(x[i])
alpha=Line_Search(x[i],pk,alpha_max,c1,c2)
x_baru=x[i]+alpha*pk
x.append(x_baru)
f.append(griewank(x_baru))
B.append(pk)
C.append(alpha)
print(’{} \t {:.4f}, {}’.
format(i, f[i], x[i]))
i+=1
if i == 1000:

8
print(’\nTidak Konvergen.’)
else:
print(’\nSolusi: \t f = {:.4f}, x = {}’.format(griewank(x_baru), x_baru))
return np.array(x), np.array(f)

Kode python untuk Line Serch dan Zoom

def Line_Search(x,p,alpha_max,c1,c2):
alpha0=0
alpha1=(alpha0+alpha_max)/2
alpha=[alpha0,alpha1]
i=1
while i<=1000:
#Cek phi(alpha[0])
if phi(x,p,alpha[i])>phi(x,p,0)
+c1*alpha[i]*d_phi(x,p,0)
or (phi(x,p,alpha[i])
>phi(x,p,alpha[i-1]) and i>1):
return zoom([alpha[i-1],alpha[i]],x,p,c1,c2)
break
if abs(d_phi(x,p,alpha[i]))<=-c2*d_phi(x,p,0):
return alpha[i]
break
if d_phi(x,p,alpha[i])>=0:
return zoom([alpha[i],alpha[i-1]],x,p)
break
#alpha[i+1]=(alpha[i]+alpha_max)/2 #Biseksi
alpha.append((alpha[i]+alpha_max)/2)
i+=1
def zoom(alpha, x,p,d1,d2):
i=0
alphanew = (alpha[0]+alpha[1])/2
alphanew1= -dphi(x,p,0)/(2*(phi(x,p,alphanew)-phi(x,p,0)-dphi(x,p,0)*alphanew))
while i <= 1000:
if phi(x, p, alphanew) > phi(x,p,0) + d1*alphanew*dphi(x, p, 0):
alphanew = -dphi(x,p,0)/(2*(phi(x,p,alphanew)
-phi(x,p,0)-dphi(x,p,0)*alphanew))
elif phi(x, p, alphanew1) > phi(x,p,0) + d1*alphanew1*dphi(x, p, 0):
h=1/((alphanew**2)*alphanew1*(alphanew1-alphanew))
m1=np.array([[alphanew**2,-alphanew1**2],
[-alphanew**3,alphanew1**3]])
m2=np.array([phi(x,p,alphanew1)-phi(x,p,0)
-dphi(x,p,0)*alphanew1],
[phi(x,p,alphanew)-phi(x,p,0)-dphi(x,p,0)*alphanew])
m3=np.matmul(m1,m2)/h
alphanew=(-m3[1]+np.sqrt((m3[1])**2
-3*m3[1]*dphi(x,p,0)))/(3*m3[1])

9
#Cek Alpha
if phi(x, p, alphanew) > phi(x,p,0) + d1*alphanew*dphi(x, p, 0)
or (phi(x, p,alphanew) > phi(x,p,alpha[0])):
alpha[1]=alphanew
else:
if abs(dphi(x,p,alphanew)) <=-d2*dphi(x,p,0):
return alphanew
Break
if (dphi(x,p,alphanew))*(alpha[0]-alpha[1])>=0:
alpha[1]=alpha[0]
alpha[0] = alphanew
i+=1

10

Anda mungkin juga menyukai