PEMBAHASAN
Metode Golden Section adalah salah satu cara atau metode optimasi numerik yang dapat
diterapkan untuk fungsi yang bersifat unimodal. Kedua tipe optimasi dapat diselesaikan dengan
cara ini. Metode golden section sendiri merupakan metode satu variabel yang sederhana, dan
mempunyai pendekatan yang mirip dengan metode bagi dua (bisection) dalam penentuan akar
persamaan tak linear. Inti dari metode Golden Section sendiri adalah yaitu mempersempit selang
interval awal hingga ditemukan nilai maksimum dan minumum suatu persamaan pada interval
tertentu.
Contohnya adalah pada saat diberikan fungsi :
𝑓( 𝑥) = ((sin⁡( 𝑥)) 𝑥).arccos⁡(
1
𝑥⁡
) dengan interval [-5,-4]. Pada kasus ini, fungsi
yang digunakan adalah fungsi minimum. Hal ini dikarenakan fungsi
((sin⁡( 𝑥)) 𝑥).arccos⁡(
1
𝑥⁡
) merupakan fungsi yang grafiknya terbuka ke atas.
Jika grafik fungsi terbuka ke atas maka fungsi f(x) memiliki nilai minimum. Sehingga demikian,
pada perhitungan kali ini mengunakan metode golden section kasus minimum. Secara Perhitungan
manual dengan 2 iterasi maka akan diperoleh hasil seperti berikut :
 ITERASI PERTAMA
xl = -5
xu = -4
d = (1- (
√5−1
2
))*(xu – xl)
= (1 – 0.618 )*( -4 – (-5))
= 0.382 (1) = 0.382
-6 -5 -4 -3 -2 -1 0 1 2 3
0
100
200
300
400
500
x
Golden Search
x1 = xl + d xu = xu – d
= -5 + 0.382 = -4 – 0.382
= - 4.618 = - 4.382
f (x1) = ((sin⁡(−4.618))−4.618).arccos⁡(
1
−4.618⁡
)
= (1.0208) (1.7891)
= 1.8263
f (x2) = ((sin⁡(−4.382))−4.382).arccos⁡(
1
−4.382⁡
)
= (1.2959) (1.8010)
= 2.2979
Sehingga diperoleh f (x2) > f (x1) sehingga xu = x2, xu = - 4.382.
 ITERASI KEDUA
xl = -5
xu = -4.382
d = (1- (
√5−1
2
))*(xu – xl)
= (1 – 0.618 )*( -4.382– (-5))
= 0.382 (0.618) = 0.2361
x1 = xl + d xu = xu – d
= -5 + 0.2361 = -4.382 – 0.2361
= - 4.7639 = - 4.6181
f (x1) = ((sin⁡(−4.7639))−4.7639). arccos⁡(
1
−4.7639⁡
)
= (1.0063) (1.7823)
= 1.7936
f (x2) = ((sin⁡(−4.6181))−4.6181).arccos⁡(
1
−4.6181⁡
)
= (1.0208) (1.7891)
= 1.8263
Sehingga diperoleh f (x2) > f (x1) sehingga xu = x2, xu = - 4.6181
Berdasarkan perhitungan dua iterasi diatas dapat dibentuk tabel sebagai berikut :
i xl xu x1 x2 f (xl ) f (xu ) f (x1 ) f (x2 ) error
1 -5 - 4.3820 - 4.6180 - 4.3820 2.1855 2.2979 1.8263 2.2979 0.6180
2 -5 - 4.6181 -4.7639 -4.6181 2.1856 1.8263 1.7936 1.8263 0.3819
Sedangkan untuk program dari simulasi menggunakan matlab diperoleh hasil :
Dan diperoleh grafik
-6 -5 -4 -3 -2 -1 0 1 2 3
0
100
200
300
400
500
x
Golden Search
Sedangkan untuk programnya adalah
%golden search.
clear all;
clc;
syms x;
f=(sin(x)^x)*acos(1/x);
xl=-5;
xu=-4;
eps=1e-5;
error=1;
i=1;
fprintf('nTABEL ITERASI n');
fprintf('=============================================================
======================================================================
===n');
fprintf('i xl x1 x2 xu
fxl fx1 fx2 fxu error n');
fprintf('=============================================================
======================================================================
===n');
while error>eps;
d=(1-((sqrt(5)-1)/2))*(xu-xl);
x1=xl+d;
x2=xu-d;
fx1=subs(f,x,x1);
fx2=subs(f,x,x2);
if fx1>fx2
xl=x1;
else
xu=x2;
end
fxu=subs(f,x,xu);
fxl=subs(f,x,xl);
clf; %clear figure
gbr=ezplot(f);
grid on;
title('Golden
Search','color','g','fontsize',18,'fontname','Tahoma');
set(gbr,'linewidth',2,'color','k');
hold on;
plot(xu,fxu,'o','color','r','markerfacecolor','w','linewidth',3);
plot(xl,fxl,'s','color','g','markerfacecolor','w','linewidth',3);
pause(.5);
%melambatkan iterasi
error=abs(xu-xl);
fprintf('%d %5.4f %5.4f %5.4f %5.4f
%5.4f %5.4f %5.4f %5.4f
%5.4fn',i,xl,x1,x2,xu,fxl,fx1,fx2,fxu,error);
i=i+1;
end
optimal=min(xu,xl);
fop=subs(f,x,optimal);
fprintf('KesimpulannSetelah %d iterasi, f(x) optimal di x = %5.4f
dengan nilai optimal f(x) = %5.5f',i-1,optimal,fop);
Pada kasus ini fungsi yang digunakan merupakan fungsi dengan nilai minimum. Sehingga
algoritma yang digunakan adalah :
1. Mulai dua nilai tebakan awal yaitu xl dan xu yang mengapit titik minimum. Nilai xl dan
xu menyatakan selang interval dari fungsi.
2. Tentukan nilai dari d = (1- (
√5−1
2
))*(xu – xl)
3. Tentukan nilai x1 dan x2 dimana x1= xl + d dan x2= xu – d
4. Jika f(x1) > f(x2) maka xl = x1
Selain itu, xu = x2.
5. Lakukan langkah 2 dan 5 hingga jarak xu dan xl menjadi cukup dekat.
Langkah pertama yang dilakukan adalah mendefinsikan fungsi nya yaitu :
((sin⁡( 𝑥)) 𝑥).arccos⁡(
1
𝑥⁡
) . Selain pendefinisian fungsi juga didefinisikan pula intervalnya
yaitu xl yang merupakan batas bawah fungsi yaitu -5 dan xu yang merupakan batas atas fungsi
yaitu -4. Kemudian definiskan nilai epsilon yaitu ε = 10-5 dan nilai error yaitu 1. Untuk melakukan
iterasi dimisalkan nilai awal i adalah 1. Kemudian dilakukan perulangan while dengan kondisi
nilai error > eps. Didalam perulangan inilah berlangsung proses perhitungan, pertama-tama dicari
nilai d yang didefinsikan (1- (
√5−1
2
))*(xu – xl). Kemudian dicari nilai x1 dan x2. Setelah itu
dilakukan perhitungan nilai fungsi dari x1 dan x2 dengan perintah subs yaitu memasukkan nilai
x1 dan x2 ke dalam fungsi f. Setelah fungsi f dicari maka selanjutnya nilai dari f (x1) dan f (x2)
dibandingkan menggunakan perintah if yaitu Jika f(x1) > f(x2) maka xl = x1 selain itu, xu = x2.
Setelah itu di cari nilai fungsi dari f (xu) dan f (xl).
Setelah itu dilakukan proses membuat grafik dengan inisialisasi gbr yaitu ezplot (f) yang
merupakan perintah dalam Matlab untuk menggambar grafik langsung dari persamaan fungsi yang
diketahui. Perintah grid on adalah untuk memberikan garis garis pada kotak dialog figure.
Kemudian kotak dialog figure diberikan judul yaitu Golden Search dengan warna hijau dan
memiliki ukuran huruf 18 dengan jenis hurufnya adalah Tahoma. Setelah itu, dilakukan penyetelah
grafik dengan perintah set gbr yang merupakan grafik dari fungsi persamaan yang ada dengan
ketebalan garis pada grafik yaitu 2 dengan warna hitam. Perintah hold on adalah untuk
menyatukan beberapa grafik agar berada dalam satu jendela tampilan. Setelah itu, dilakukan
pembuatan plot dari titik titik xu dan fxu nya itu sendiri. Untuk bagian xu ini memiliki bentuk “o”
dengan warna merah dan warna dalamnya adalah putih dan ketebalannya adalah 3. Sedangkan
untuk titik xl dan fxl itu sendiri memiliki bentuk “s” (square) dengan warna hijau dan warna
dalamnya adalah putih dengan ketebalannya yaitu 3. Nantinya, titik-titik ini akan bergerak sesuai
iterasi dengan tujuan untuk memperkecil selang hingga diperolehlah nilai optimum. Perintah
pause (.5) memiliki fungsi untuk memperlambat iterasi selama 5 detik agar terlihat jelas
pergerakan dari titik xu dan xl. Perulangan ini berlangsung dengan kondisi nilai eps > error, error
sendiri diperoleh dari ( xu – xl ) . Sebelum perulangan berakhir didefinsikan i = i +1.
Setelah perulangan berakhir maka akan diperoleh nilai optimum yang paling minimum dan di
tampilkan dengan perintah :
optimal=min(xu,xl);
fop=subs(f,x,optimal);
fprintf('KesimpulannSetelah %d iterasi, f(x) optimal di x = %5.4f dengan
nilai optimal f(x) = %5.5f',i-1,optimal,fop);
yang memiliki maksud bahwa setelah iterasi ke i (paling terakhir ), f(x) optimum (dalam kasus
minimum) di x = (optimal) yaitu yang paling minimum dengan nilai f(x) yaitu fop yang
merupakan hasil subtitusi nilai optimal ke dalam fungsi f.
Metode Nealder Mead adalah Metode ini dikategorikan sebagai metode numerik yang
bermanfaat untuk mencari nilai minimum suatu fungsi dengan banyak variabel apabila turunan
dari fungsi tersebut sulit untuk dicari dengan menggunakan metode kalkulus. Metode ini
digunakan untuk mencari solusi optimal pada masalah dengan N variabel. Contoh penerapan
metode Nelder Mead adalah salah satunya pada kasus berikut ini :
Diberikan f(x) = x*y*(sin(x)+sin(y)) dengan titik awal yaitu v1 = (-1,0) , v2 = (1,2) , v3 = (1,0 )
dengan ε = 10-6 dengan menggunakan 4 angka dibelakang koma.
Secara perhitungan manual dapat dilakukan dengan cara sebagai berikut :
Perhitungan manual
𝑓( 𝑥, 𝑦) = 𝑥𝑦(sin( 𝑥) + sin( 𝑦))
 Iterasi 1 (𝑣1 = (−1,0)⁡; 𝑣2 = (1,0)⁡; 𝑣3 = (1,2))
i) Sort
𝑓(−1,0) = (−1)(0)(sin(−1) + sin(0)) = 0
𝑓(1,0) = (1)(0)(sin(1) + sin(0)) = 0
𝑓(1,2) = (1)(2)(sin(1) + sin(2)) = 3.5015
𝑓(−1,0) ≤ 𝑓(1,0) < 𝑓(1,2)⁡maka 𝐵 = (−1,0); 𝐺 = (1,0); 𝑊 = (1,2)
ii) Reflect
𝑚 =
𝐵+𝐺
2
=
(−1
0
)+(1
0
)
2
= (0
0
)⁡
𝑟 = 2𝑚 − 𝑊 = 2(
0
0
) − (
1
2
) = (
−1
−2
)
f(r) = f(−1, −2) = (−1)(−2)(sin(−1) + sin(−2)) = −3.5015
f(r) < 𝑓(𝐵)
iii) Extend
𝑒 = 3𝑚 − 2𝑊 = 3 (
0
0
) − 2 (
1
2
) = (
−2
−4
)
f(e) = f(−2,−4) = (−2)(−4)(sin(−2) + sin(−4)) = −1.2199
f(e) < f(B) maka untuk iterasi selanjutnya, nilai e menggantikan nilai W
 Iterasi 2 (𝑣1 = (−1,0)⁡; 𝑣2 = (1,0)⁡; 𝑣3 = (−2, −4))
i. Sort
𝑓(−1,0) = (−1)(0)(sin(−1) + sin(0)) = 0
𝑓(1,0) = (1)(0)(sin(1) + sin(0)) = 0
𝑓(−2, −4) = (−2)(−4)(sin(−2) + sin(−4)) = −1.2199
𝑓(−2, −4) ≤ 𝑓(−1,0) < 𝑓(1,0)⁡maka
𝐵 = (−2 − 4); 𝐺 = (−1,0); 𝑊 = (1,0)
iv) Reflect
𝑚 =
𝐵+𝐺
2
=
(−2
−4
)+(−1
0
)
2
=
(−3
−4
)
2
=⁡ (−1.5
−2
)
𝑟 = 2𝑚 − 𝑊 = 2(
−1.5
−2
) − (
1
0
) = (
−3
−4
) − (
1
0
) = (
−4
−4
)
f(r) = f(−4, −4) = (−4)(−4)(sin(−4) + sin(−4)) = 24.2177
f(r) > 𝑓(𝐺)
v) Contract
𝑐 =
𝑚 + 𝑟
2
=
(−1.5
−2
) + (−4
−4
)
2
=
(−5.5
−6
)
2
= (
−2.75
−3
)
f( 𝑐) = f(−2.75,−3) = (−2.75)(−3)(sin(−2.75) + sin(−3)) = −4.2139
f( 𝑐) < f(W) maka untuk iterasi selanjutnya, nilai c menggantikan nilai W.
Titik-titik untuk iterasi selanjutnya adalah
v1 = (−2,−4);v2 = (−1,0);v3 = (−2.75,−3)
Tabel 3.2 Iterasi Metode Nelder Mead
𝑖 𝑣1 𝑣2 𝑣3 Ket
(-1,0) (1,2) (1,0) Titik Awal
1 (-1,0) (1,0) (-2,-4) Hasil iterasi 1
2 (-2,-4) (-1,0) (-2.75,-3) Hasil iterasi 2
Dengan menggunakan program hasil yang diperoleh adalah :
Adapun program yang digunakan adalah sebagai berikut :
clear all;
clc;
syms x y;
fprintf('METODE NELDER MEADn');
fprintf('==========================================================
===================================================================
=n');
fprintf(' i vl v2
v3 f(v1) f(v2) f(v3)n');
fprintf('==========================================================
===================================================================
=n');
f=x*y*(sin(x)+sin(y));
k=1;
v1=[-1,0];
v2=[1,2];
v3=[1,0];
eps=1e-6;
while norm(v1-v2)>eps
v=[v1;v2;v3];
z1=subs(f,[x,y],v1);
z2=subs(f,[x,y],v2);
z3=subs(f,[x,y],v3);
z=[z1 z2 z3];
for i=1:length(z)-1
for j=1:length(z)-1
if z(j)>z(j+1)
temp1=z(j);
temp2=v(j,:);
z(j)=z(j+1);
v(j,:)=v(j+1,:);
z(j+1)=temp1;
v(j+1,:)=temp2;
end
end
end
B=v(1,:);
G=v(2,:);
W=v(3,:);
M=(B+G)/2;
R=2*M-W;
fB=subs(f,[x,y],B);
fG=subs(f,[x,y],G);
fR=subs(f,[x,y],R);
fW=subs(f,[x,y],W);
if fR<fG
if fB<fR
W=R;
else
E=2*R-M;
fE=subs(f,[x,y],E);
if fE<fB
W=E;
else
W=R;
end
end
else
if fR<fW
W=R;
else
%C=(W+M)/2
C=(M+R)/2;
fC=subs(f,[x,y],C);
if fC<fW
W=C;
else
S=(B+W)/2;
fS=subs(f,[x,y],S);
W=S;
G=M;
end
end
end
fv1=subs(f,[x,y],v1);
fv2=subs(f,[x,y],v2);
fv3=subs(f,[x,y],v3);
fprintf('%3dtt(%5.4f,%5.4f)tt(%5.4f,%5.4f)tt(%7.4f,%7.4f)tt
(%5.4f)tt(%5.4f)tt(%5.4f)n',k,v1,v2,v3,fv1,fv2,fv3);
v1=B;
v2=G;
v3=W;
k=k+1;
end
ezsurf(f);
hold on;
plot3(v1,v2,v3,'markerfacecolor','m');
Dan grafik yang dihasilkan adalah :
Metode Nelder Mead memiliki algoritma :
Misalkan f(x,y) fungsi yang akan diminimalkan. Langkah-langkah untuk meminimalkan
fungsi f(x,y) dengan menggunakan metode Nelder Mead adalah :
1. Diberikan titik awal sebanyak tiga, yaitu v1 = (x1,y1),v2 = (x2,y2), dan v3 = (x3,y3).
2. Hitung z1 = f (v1) = f (x1,y1) , z2 = f (v2) = f (x2,y2), dan z3 = f (v3) = f (x3,y3).
3. Urutkan nilai z1, z2, dan z3 sedemikian sehingga z1 ≤ z2 ≤ z3.
Selanjutnya gunakan notasi :
B = v1 = (x1,y1) (best vertex).
G = v2 = (x2, y2) (good vertex).
W = v3 = (x3, y3) (worst vertex).
4. Hitung nilai M =
B+G
2
= (
x1+x2
2
,
y1+y2
2
)
5. Hitung nilai R = 2M – W (refflection)
6. Hitung f (B), f (G), f (W), dan f (R).
7. Jika f (R) < f (G) maka lakukan :
(a) Jika f (B) < f (R) maka ganti W dengan R
(b) Selain itu,
i. Hitung E = 2R – M dan hitung f (E). (expansion)
ii. Jika f (E) < f (B) maka ganti W dengan E.
iii. Selain itu ganti W dengan R.
-5
0
5
-5
0
5
-50
0
50
x
x y (sin(x) + sin(y))
y
8. Selain itu lakukan :
(a) Jika f (R) < f (W) maka ganti W dengan R.
(b) Selain itu,
i. Hitung C =
M⁡+⁡R
2
dan hitung f (C). (contraction)
ii. Jika f (C) > f (W) maka ganti W dengan C.
iii. Selain itu,
A. Hitung S =
B⁡+⁡W
2
dan cari f (S) (shrink)
B. Ganti W dengan S.
C. Ganti G dengan M.
9. Ganti v1 dengan B, v2 dengan G, dan v3 dengan W. Kemudian ulangi langkah 2
sampai 9 sedemikian sehingga ketiga titik tersebut konvergen.
Pada awal program digunakan perintah clc dan clear all untuk membersihkan command
window dari perintah yang sebelumnya. Untuk kemudian dilakukan inisialisasi variabel yang
digunakan menggunakan perintah syms. Variabel yang digunakan adalah variabel x dan y.
Kemudian dituliskan fungsi yang digunakan yaitu xy( sin (x) + sin (y)) dengan titik awalnya yaitu
v1 = ( -1, 0), v2 = ( 1,2), dan v3 = (1,0) dan nilai epsilon yaitu 10-6. Dilakukan perulangan
menggunakan while dengan syarat v1 – v2 < eps.
Selanjutnya dilakukan proses pengurutan titik dari yang memiliki nilai terkecil hingga
yang memiliki nilai terbesar. Semua titik titik awal yang diketahui dimasukkan ke dalam fungsi
yang diberikan menggunakan perintah subs. Sehingga dapat dituliskan sebagai berikut :
v=[v1;v2;v3];
z1=subs(f,[x,y],v1);
z2=subs(f,[x,y],v2);
z3=subs(f,[x,y],v3);
z=[z1 z2 z3];
Kemudian dilakukan pengurutan menggunakan perintah for dengan kondisi nilai awal i = 1
hingga panjang dari z atau length(z)-1. Didalam perulangan ini juga berlangsung perulangan
menggunakan for dengan kondisi j = 1 hingga panjang atau length (z) -1. Selama kondisi ini
terpenuhi maka akan berlangsung proses perbandingan nilai menggunakan perintah if. Yaitu
if z(j)>z(j+1)
temp1=z(j);
temp2=v(j,:);
z(j)=z(j+1);
v(j,:)=v(j+1,:);
z(j+1)=temp1;
v(j+1,:)=temp2;
end
proses ini dilakukan hingga semua titik sudah dalam kondisi diurutkan dari yang memiliki nilai
fungsi terkecil hingga yang memiliki nilai fungsi terbesar. Jika sudah selesai, maka proses
perulangan for berkhir. Setelah semua titik diurutkan maka diberikan inisial yaitu B yang
merupakan titik dengan nilai fungsi terkecil, G yang merupakan titik dengan nilai fungsi ditengah-
tengah, ataupun W yang merupakan titik dengan nilai fungsi yang paling besar. Tujuan dari proses
Nelder Mead adalah untuk menggantikan titik dengan nilai fungsi terbesar sehingga dilakukan
beberapa proses sehingga titik tersebut dapat diminimumkan. Untuk itu, dicarilah nilai fungsi dari
titik titik yang telah diurutkan tersebut. Untuk proses awal yang pertama tadi, adalah proses sorting
atau mengurutkan titik titik berdasarkan nilai fungsinya. Inisial B berati best, G berarti good , dan
W berarti worst.
Selanjutnya berlangsung proses refflecting ( pencerminan), pada proses ini yang pertama
kali dilakukan adalah mencari nilai R yang diperoleh dari 2M – W dengan nilai M adalah
M =
B+G
2
. Kemudian titik R dimasukkan kedalam fungsi. Setelah didapat nilai fungsi pada titik
R maka dilakuka proses perbandingan yaitu jika f (R) < f (G) maka yang dilakukan adalah
membandingkan nilai f(B) < f (R). Jika hal ini memenuhi maka yang dilakukan adalah
menggantikan titik W dengan titik R. Namun jika kondisi f (B) < f (R) tidak terpenuhi maka
dilakukan proses expansion dengan mencari nilai E terlebih dahulu. Nilai E dapat dirumuskan
sebagai berikut E = 2R – M. Setelah itu, dilakuka pencarian nilai fungsi pada titik E. Setelah itu
nilai fungsi pada titik E dibandingkan dengan nilai fungsi pada titik B yaitu f (E) < f (B). Jika
kondisi ini dipenugi maka titik E menggantikan titik W. Namun, jika kondisi tersebut tidak
terpenuhi maka ganti titik W dengan titik R.
Namun, jika kondisi f (R) < f (G) tidak terpenuhi maka lakukan proses perbandingan antara
nilai fungsi pada titik r dengan nilai fungsi pada titik W. Jika Jika f (R) < f (W) maka ganti W
dengan R. Jika tidak terpenuhi maka akan masuk ke proses contraction dengan mencari nilai C
terlebih dahulu. Nilai C didefinsikan denngan : C =
M⁡+⁡R
2
. Jika nilai fungsi pada titik C
dibandingkan dengan nilai fungsi pada titik W diperoleh Jika f (C) > f (W) maka gantikan titik W
dengan titik C. Namun jika tidak maka akan masuk ke proses Shrink. Pada proses shrink akan
dilakukan pencarian titik S. Yaitu S =
B⁡+⁡W
2
Carilah nilai fungsi pada titik S. Setelah itu, titik
W digantikan dengan titik S dan titik G digantikan dengan titik M.
Jika proses pergantian titik W telah selesai maka ganti v1 dengan B, v2 dengan G dan v3
dengan W. Proses iterasi ini berlangsung hingga ketiga titik tadi konvergen pada fungsi yang
diberikan. Semua hasil iterasi tadi akan ditampilkan dengan menggunakan tabel sehingga
dicetaklah
fprintf('%3dtt(%5.4f,%5.4f)tt(%5.4f,%5.4f)tt(%7.4f,%7.4f)tt(%5.4f)t
t(%5.4f)tt(%5.4f)n',k,v1,v2,v3,fv1,fv2,fv3);
Perintah ini bermakna bahwa yang akan ditampilkan adalah hasil dari i yang menyatakan iterasi
ke. Kemudian ditampilkan v1, v2, v3, dan nilai fungsi yaitu fv1,fv2,fv3. Kemudian dilakukan
penggambaran grafik menggunakan perintah ezsurf. Pada kasus ini, digunakan perintah ezsurf
karena fungsi yang diberikan merupakan persamaan sebuah permukaan sehingga perintah yang
digunakan adalah perintah ezsurf. Plot semua titik-titik yang ada menggunakan warna merah.
Pemberian hold on dilakukan agar grafik tidak hilang pada saat diberikan tambahan grafik pada
satu tambilan (figure).

Makalah Optimasi Numerik

  • 1.
    PEMBAHASAN Metode Golden Sectionadalah salah satu cara atau metode optimasi numerik yang dapat diterapkan untuk fungsi yang bersifat unimodal. Kedua tipe optimasi dapat diselesaikan dengan cara ini. Metode golden section sendiri merupakan metode satu variabel yang sederhana, dan mempunyai pendekatan yang mirip dengan metode bagi dua (bisection) dalam penentuan akar persamaan tak linear. Inti dari metode Golden Section sendiri adalah yaitu mempersempit selang interval awal hingga ditemukan nilai maksimum dan minumum suatu persamaan pada interval tertentu. Contohnya adalah pada saat diberikan fungsi : 𝑓( 𝑥) = ((sin⁡( 𝑥)) 𝑥).arccos⁡( 1 𝑥⁡ ) dengan interval [-5,-4]. Pada kasus ini, fungsi yang digunakan adalah fungsi minimum. Hal ini dikarenakan fungsi ((sin⁡( 𝑥)) 𝑥).arccos⁡( 1 𝑥⁡ ) merupakan fungsi yang grafiknya terbuka ke atas. Jika grafik fungsi terbuka ke atas maka fungsi f(x) memiliki nilai minimum. Sehingga demikian, pada perhitungan kali ini mengunakan metode golden section kasus minimum. Secara Perhitungan manual dengan 2 iterasi maka akan diperoleh hasil seperti berikut :  ITERASI PERTAMA xl = -5 xu = -4 d = (1- ( √5−1 2 ))*(xu – xl) = (1 – 0.618 )*( -4 – (-5)) = 0.382 (1) = 0.382 -6 -5 -4 -3 -2 -1 0 1 2 3 0 100 200 300 400 500 x Golden Search
  • 2.
    x1 = xl+ d xu = xu – d = -5 + 0.382 = -4 – 0.382 = - 4.618 = - 4.382 f (x1) = ((sin⁡(−4.618))−4.618).arccos⁡( 1 −4.618⁡ ) = (1.0208) (1.7891) = 1.8263 f (x2) = ((sin⁡(−4.382))−4.382).arccos⁡( 1 −4.382⁡ ) = (1.2959) (1.8010) = 2.2979 Sehingga diperoleh f (x2) > f (x1) sehingga xu = x2, xu = - 4.382.  ITERASI KEDUA xl = -5 xu = -4.382 d = (1- ( √5−1 2 ))*(xu – xl) = (1 – 0.618 )*( -4.382– (-5)) = 0.382 (0.618) = 0.2361 x1 = xl + d xu = xu – d = -5 + 0.2361 = -4.382 – 0.2361 = - 4.7639 = - 4.6181 f (x1) = ((sin⁡(−4.7639))−4.7639). arccos⁡( 1 −4.7639⁡ ) = (1.0063) (1.7823) = 1.7936 f (x2) = ((sin⁡(−4.6181))−4.6181).arccos⁡( 1 −4.6181⁡ ) = (1.0208) (1.7891) = 1.8263 Sehingga diperoleh f (x2) > f (x1) sehingga xu = x2, xu = - 4.6181 Berdasarkan perhitungan dua iterasi diatas dapat dibentuk tabel sebagai berikut : i xl xu x1 x2 f (xl ) f (xu ) f (x1 ) f (x2 ) error 1 -5 - 4.3820 - 4.6180 - 4.3820 2.1855 2.2979 1.8263 2.2979 0.6180 2 -5 - 4.6181 -4.7639 -4.6181 2.1856 1.8263 1.7936 1.8263 0.3819
  • 3.
    Sedangkan untuk programdari simulasi menggunakan matlab diperoleh hasil : Dan diperoleh grafik -6 -5 -4 -3 -2 -1 0 1 2 3 0 100 200 300 400 500 x Golden Search
  • 4.
    Sedangkan untuk programnyaadalah %golden search. clear all; clc; syms x; f=(sin(x)^x)*acos(1/x); xl=-5; xu=-4; eps=1e-5; error=1; i=1; fprintf('nTABEL ITERASI n'); fprintf('============================================================= ====================================================================== ===n'); fprintf('i xl x1 x2 xu fxl fx1 fx2 fxu error n'); fprintf('============================================================= ====================================================================== ===n'); while error>eps; d=(1-((sqrt(5)-1)/2))*(xu-xl); x1=xl+d; x2=xu-d; fx1=subs(f,x,x1); fx2=subs(f,x,x2); if fx1>fx2 xl=x1; else xu=x2; end fxu=subs(f,x,xu); fxl=subs(f,x,xl); clf; %clear figure gbr=ezplot(f); grid on; title('Golden Search','color','g','fontsize',18,'fontname','Tahoma'); set(gbr,'linewidth',2,'color','k'); hold on; plot(xu,fxu,'o','color','r','markerfacecolor','w','linewidth',3); plot(xl,fxl,'s','color','g','markerfacecolor','w','linewidth',3); pause(.5); %melambatkan iterasi error=abs(xu-xl); fprintf('%d %5.4f %5.4f %5.4f %5.4f %5.4f %5.4f %5.4f %5.4f %5.4fn',i,xl,x1,x2,xu,fxl,fx1,fx2,fxu,error); i=i+1; end optimal=min(xu,xl);
  • 5.
    fop=subs(f,x,optimal); fprintf('KesimpulannSetelah %d iterasi,f(x) optimal di x = %5.4f dengan nilai optimal f(x) = %5.5f',i-1,optimal,fop); Pada kasus ini fungsi yang digunakan merupakan fungsi dengan nilai minimum. Sehingga algoritma yang digunakan adalah : 1. Mulai dua nilai tebakan awal yaitu xl dan xu yang mengapit titik minimum. Nilai xl dan xu menyatakan selang interval dari fungsi. 2. Tentukan nilai dari d = (1- ( √5−1 2 ))*(xu – xl) 3. Tentukan nilai x1 dan x2 dimana x1= xl + d dan x2= xu – d 4. Jika f(x1) > f(x2) maka xl = x1 Selain itu, xu = x2. 5. Lakukan langkah 2 dan 5 hingga jarak xu dan xl menjadi cukup dekat. Langkah pertama yang dilakukan adalah mendefinsikan fungsi nya yaitu : ((sin⁡( 𝑥)) 𝑥).arccos⁡( 1 𝑥⁡ ) . Selain pendefinisian fungsi juga didefinisikan pula intervalnya yaitu xl yang merupakan batas bawah fungsi yaitu -5 dan xu yang merupakan batas atas fungsi yaitu -4. Kemudian definiskan nilai epsilon yaitu ε = 10-5 dan nilai error yaitu 1. Untuk melakukan iterasi dimisalkan nilai awal i adalah 1. Kemudian dilakukan perulangan while dengan kondisi nilai error > eps. Didalam perulangan inilah berlangsung proses perhitungan, pertama-tama dicari nilai d yang didefinsikan (1- ( √5−1 2 ))*(xu – xl). Kemudian dicari nilai x1 dan x2. Setelah itu dilakukan perhitungan nilai fungsi dari x1 dan x2 dengan perintah subs yaitu memasukkan nilai x1 dan x2 ke dalam fungsi f. Setelah fungsi f dicari maka selanjutnya nilai dari f (x1) dan f (x2) dibandingkan menggunakan perintah if yaitu Jika f(x1) > f(x2) maka xl = x1 selain itu, xu = x2. Setelah itu di cari nilai fungsi dari f (xu) dan f (xl). Setelah itu dilakukan proses membuat grafik dengan inisialisasi gbr yaitu ezplot (f) yang merupakan perintah dalam Matlab untuk menggambar grafik langsung dari persamaan fungsi yang diketahui. Perintah grid on adalah untuk memberikan garis garis pada kotak dialog figure. Kemudian kotak dialog figure diberikan judul yaitu Golden Search dengan warna hijau dan memiliki ukuran huruf 18 dengan jenis hurufnya adalah Tahoma. Setelah itu, dilakukan penyetelah grafik dengan perintah set gbr yang merupakan grafik dari fungsi persamaan yang ada dengan
  • 6.
    ketebalan garis padagrafik yaitu 2 dengan warna hitam. Perintah hold on adalah untuk menyatukan beberapa grafik agar berada dalam satu jendela tampilan. Setelah itu, dilakukan pembuatan plot dari titik titik xu dan fxu nya itu sendiri. Untuk bagian xu ini memiliki bentuk “o” dengan warna merah dan warna dalamnya adalah putih dan ketebalannya adalah 3. Sedangkan untuk titik xl dan fxl itu sendiri memiliki bentuk “s” (square) dengan warna hijau dan warna dalamnya adalah putih dengan ketebalannya yaitu 3. Nantinya, titik-titik ini akan bergerak sesuai iterasi dengan tujuan untuk memperkecil selang hingga diperolehlah nilai optimum. Perintah pause (.5) memiliki fungsi untuk memperlambat iterasi selama 5 detik agar terlihat jelas pergerakan dari titik xu dan xl. Perulangan ini berlangsung dengan kondisi nilai eps > error, error sendiri diperoleh dari ( xu – xl ) . Sebelum perulangan berakhir didefinsikan i = i +1. Setelah perulangan berakhir maka akan diperoleh nilai optimum yang paling minimum dan di tampilkan dengan perintah : optimal=min(xu,xl); fop=subs(f,x,optimal); fprintf('KesimpulannSetelah %d iterasi, f(x) optimal di x = %5.4f dengan nilai optimal f(x) = %5.5f',i-1,optimal,fop); yang memiliki maksud bahwa setelah iterasi ke i (paling terakhir ), f(x) optimum (dalam kasus minimum) di x = (optimal) yaitu yang paling minimum dengan nilai f(x) yaitu fop yang merupakan hasil subtitusi nilai optimal ke dalam fungsi f.
  • 7.
    Metode Nealder Meadadalah Metode ini dikategorikan sebagai metode numerik yang bermanfaat untuk mencari nilai minimum suatu fungsi dengan banyak variabel apabila turunan dari fungsi tersebut sulit untuk dicari dengan menggunakan metode kalkulus. Metode ini digunakan untuk mencari solusi optimal pada masalah dengan N variabel. Contoh penerapan metode Nelder Mead adalah salah satunya pada kasus berikut ini : Diberikan f(x) = x*y*(sin(x)+sin(y)) dengan titik awal yaitu v1 = (-1,0) , v2 = (1,2) , v3 = (1,0 ) dengan ε = 10-6 dengan menggunakan 4 angka dibelakang koma. Secara perhitungan manual dapat dilakukan dengan cara sebagai berikut : Perhitungan manual 𝑓( 𝑥, 𝑦) = 𝑥𝑦(sin( 𝑥) + sin( 𝑦))  Iterasi 1 (𝑣1 = (−1,0)⁡; 𝑣2 = (1,0)⁡; 𝑣3 = (1,2)) i) Sort 𝑓(−1,0) = (−1)(0)(sin(−1) + sin(0)) = 0 𝑓(1,0) = (1)(0)(sin(1) + sin(0)) = 0 𝑓(1,2) = (1)(2)(sin(1) + sin(2)) = 3.5015 𝑓(−1,0) ≤ 𝑓(1,0) < 𝑓(1,2)⁡maka 𝐵 = (−1,0); 𝐺 = (1,0); 𝑊 = (1,2) ii) Reflect 𝑚 = 𝐵+𝐺 2 = (−1 0 )+(1 0 ) 2 = (0 0 )⁡ 𝑟 = 2𝑚 − 𝑊 = 2( 0 0 ) − ( 1 2 ) = ( −1 −2 ) f(r) = f(−1, −2) = (−1)(−2)(sin(−1) + sin(−2)) = −3.5015 f(r) < 𝑓(𝐵) iii) Extend 𝑒 = 3𝑚 − 2𝑊 = 3 ( 0 0 ) − 2 ( 1 2 ) = ( −2 −4 ) f(e) = f(−2,−4) = (−2)(−4)(sin(−2) + sin(−4)) = −1.2199 f(e) < f(B) maka untuk iterasi selanjutnya, nilai e menggantikan nilai W  Iterasi 2 (𝑣1 = (−1,0)⁡; 𝑣2 = (1,0)⁡; 𝑣3 = (−2, −4)) i. Sort 𝑓(−1,0) = (−1)(0)(sin(−1) + sin(0)) = 0 𝑓(1,0) = (1)(0)(sin(1) + sin(0)) = 0 𝑓(−2, −4) = (−2)(−4)(sin(−2) + sin(−4)) = −1.2199 𝑓(−2, −4) ≤ 𝑓(−1,0) < 𝑓(1,0)⁡maka
  • 8.
    𝐵 = (−2− 4); 𝐺 = (−1,0); 𝑊 = (1,0) iv) Reflect 𝑚 = 𝐵+𝐺 2 = (−2 −4 )+(−1 0 ) 2 = (−3 −4 ) 2 =⁡ (−1.5 −2 ) 𝑟 = 2𝑚 − 𝑊 = 2( −1.5 −2 ) − ( 1 0 ) = ( −3 −4 ) − ( 1 0 ) = ( −4 −4 ) f(r) = f(−4, −4) = (−4)(−4)(sin(−4) + sin(−4)) = 24.2177 f(r) > 𝑓(𝐺) v) Contract 𝑐 = 𝑚 + 𝑟 2 = (−1.5 −2 ) + (−4 −4 ) 2 = (−5.5 −6 ) 2 = ( −2.75 −3 ) f( 𝑐) = f(−2.75,−3) = (−2.75)(−3)(sin(−2.75) + sin(−3)) = −4.2139 f( 𝑐) < f(W) maka untuk iterasi selanjutnya, nilai c menggantikan nilai W. Titik-titik untuk iterasi selanjutnya adalah v1 = (−2,−4);v2 = (−1,0);v3 = (−2.75,−3) Tabel 3.2 Iterasi Metode Nelder Mead 𝑖 𝑣1 𝑣2 𝑣3 Ket (-1,0) (1,2) (1,0) Titik Awal 1 (-1,0) (1,0) (-2,-4) Hasil iterasi 1 2 (-2,-4) (-1,0) (-2.75,-3) Hasil iterasi 2 Dengan menggunakan program hasil yang diperoleh adalah :
  • 9.
    Adapun program yangdigunakan adalah sebagai berikut : clear all; clc; syms x y; fprintf('METODE NELDER MEADn'); fprintf('========================================================== =================================================================== =n'); fprintf(' i vl v2 v3 f(v1) f(v2) f(v3)n'); fprintf('========================================================== =================================================================== =n'); f=x*y*(sin(x)+sin(y)); k=1; v1=[-1,0]; v2=[1,2]; v3=[1,0]; eps=1e-6; while norm(v1-v2)>eps v=[v1;v2;v3]; z1=subs(f,[x,y],v1); z2=subs(f,[x,y],v2); z3=subs(f,[x,y],v3); z=[z1 z2 z3]; for i=1:length(z)-1 for j=1:length(z)-1 if z(j)>z(j+1) temp1=z(j); temp2=v(j,:); z(j)=z(j+1); v(j,:)=v(j+1,:); z(j+1)=temp1; v(j+1,:)=temp2; end end
  • 10.
    end B=v(1,:); G=v(2,:); W=v(3,:); M=(B+G)/2; R=2*M-W; fB=subs(f,[x,y],B); fG=subs(f,[x,y],G); fR=subs(f,[x,y],R); fW=subs(f,[x,y],W); if fR<fG if fB<fR W=R; else E=2*R-M; fE=subs(f,[x,y],E); iffE<fB W=E; else W=R; end end else if fR<fW W=R; else %C=(W+M)/2 C=(M+R)/2; fC=subs(f,[x,y],C); if fC<fW W=C; else S=(B+W)/2; fS=subs(f,[x,y],S); W=S; G=M; end end end fv1=subs(f,[x,y],v1); fv2=subs(f,[x,y],v2); fv3=subs(f,[x,y],v3); fprintf('%3dtt(%5.4f,%5.4f)tt(%5.4f,%5.4f)tt(%7.4f,%7.4f)tt (%5.4f)tt(%5.4f)tt(%5.4f)n',k,v1,v2,v3,fv1,fv2,fv3); v1=B; v2=G; v3=W; k=k+1; end ezsurf(f); hold on; plot3(v1,v2,v3,'markerfacecolor','m');
  • 11.
    Dan grafik yangdihasilkan adalah : Metode Nelder Mead memiliki algoritma : Misalkan f(x,y) fungsi yang akan diminimalkan. Langkah-langkah untuk meminimalkan fungsi f(x,y) dengan menggunakan metode Nelder Mead adalah : 1. Diberikan titik awal sebanyak tiga, yaitu v1 = (x1,y1),v2 = (x2,y2), dan v3 = (x3,y3). 2. Hitung z1 = f (v1) = f (x1,y1) , z2 = f (v2) = f (x2,y2), dan z3 = f (v3) = f (x3,y3). 3. Urutkan nilai z1, z2, dan z3 sedemikian sehingga z1 ≤ z2 ≤ z3. Selanjutnya gunakan notasi : B = v1 = (x1,y1) (best vertex). G = v2 = (x2, y2) (good vertex). W = v3 = (x3, y3) (worst vertex). 4. Hitung nilai M = B+G 2 = ( x1+x2 2 , y1+y2 2 ) 5. Hitung nilai R = 2M – W (refflection) 6. Hitung f (B), f (G), f (W), dan f (R). 7. Jika f (R) < f (G) maka lakukan : (a) Jika f (B) < f (R) maka ganti W dengan R (b) Selain itu, i. Hitung E = 2R – M dan hitung f (E). (expansion) ii. Jika f (E) < f (B) maka ganti W dengan E. iii. Selain itu ganti W dengan R. -5 0 5 -5 0 5 -50 0 50 x x y (sin(x) + sin(y)) y
  • 12.
    8. Selain itulakukan : (a) Jika f (R) < f (W) maka ganti W dengan R. (b) Selain itu, i. Hitung C = M⁡+⁡R 2 dan hitung f (C). (contraction) ii. Jika f (C) > f (W) maka ganti W dengan C. iii. Selain itu, A. Hitung S = B⁡+⁡W 2 dan cari f (S) (shrink) B. Ganti W dengan S. C. Ganti G dengan M. 9. Ganti v1 dengan B, v2 dengan G, dan v3 dengan W. Kemudian ulangi langkah 2 sampai 9 sedemikian sehingga ketiga titik tersebut konvergen. Pada awal program digunakan perintah clc dan clear all untuk membersihkan command window dari perintah yang sebelumnya. Untuk kemudian dilakukan inisialisasi variabel yang digunakan menggunakan perintah syms. Variabel yang digunakan adalah variabel x dan y. Kemudian dituliskan fungsi yang digunakan yaitu xy( sin (x) + sin (y)) dengan titik awalnya yaitu v1 = ( -1, 0), v2 = ( 1,2), dan v3 = (1,0) dan nilai epsilon yaitu 10-6. Dilakukan perulangan menggunakan while dengan syarat v1 – v2 < eps. Selanjutnya dilakukan proses pengurutan titik dari yang memiliki nilai terkecil hingga yang memiliki nilai terbesar. Semua titik titik awal yang diketahui dimasukkan ke dalam fungsi yang diberikan menggunakan perintah subs. Sehingga dapat dituliskan sebagai berikut : v=[v1;v2;v3]; z1=subs(f,[x,y],v1); z2=subs(f,[x,y],v2); z3=subs(f,[x,y],v3); z=[z1 z2 z3]; Kemudian dilakukan pengurutan menggunakan perintah for dengan kondisi nilai awal i = 1 hingga panjang dari z atau length(z)-1. Didalam perulangan ini juga berlangsung perulangan menggunakan for dengan kondisi j = 1 hingga panjang atau length (z) -1. Selama kondisi ini terpenuhi maka akan berlangsung proses perbandingan nilai menggunakan perintah if. Yaitu if z(j)>z(j+1) temp1=z(j); temp2=v(j,:); z(j)=z(j+1);
  • 13.
    v(j,:)=v(j+1,:); z(j+1)=temp1; v(j+1,:)=temp2; end proses ini dilakukanhingga semua titik sudah dalam kondisi diurutkan dari yang memiliki nilai fungsi terkecil hingga yang memiliki nilai fungsi terbesar. Jika sudah selesai, maka proses perulangan for berkhir. Setelah semua titik diurutkan maka diberikan inisial yaitu B yang merupakan titik dengan nilai fungsi terkecil, G yang merupakan titik dengan nilai fungsi ditengah- tengah, ataupun W yang merupakan titik dengan nilai fungsi yang paling besar. Tujuan dari proses Nelder Mead adalah untuk menggantikan titik dengan nilai fungsi terbesar sehingga dilakukan beberapa proses sehingga titik tersebut dapat diminimumkan. Untuk itu, dicarilah nilai fungsi dari titik titik yang telah diurutkan tersebut. Untuk proses awal yang pertama tadi, adalah proses sorting atau mengurutkan titik titik berdasarkan nilai fungsinya. Inisial B berati best, G berarti good , dan W berarti worst. Selanjutnya berlangsung proses refflecting ( pencerminan), pada proses ini yang pertama kali dilakukan adalah mencari nilai R yang diperoleh dari 2M – W dengan nilai M adalah M = B+G 2 . Kemudian titik R dimasukkan kedalam fungsi. Setelah didapat nilai fungsi pada titik R maka dilakuka proses perbandingan yaitu jika f (R) < f (G) maka yang dilakukan adalah membandingkan nilai f(B) < f (R). Jika hal ini memenuhi maka yang dilakukan adalah menggantikan titik W dengan titik R. Namun jika kondisi f (B) < f (R) tidak terpenuhi maka dilakukan proses expansion dengan mencari nilai E terlebih dahulu. Nilai E dapat dirumuskan sebagai berikut E = 2R – M. Setelah itu, dilakuka pencarian nilai fungsi pada titik E. Setelah itu nilai fungsi pada titik E dibandingkan dengan nilai fungsi pada titik B yaitu f (E) < f (B). Jika kondisi ini dipenugi maka titik E menggantikan titik W. Namun, jika kondisi tersebut tidak terpenuhi maka ganti titik W dengan titik R. Namun, jika kondisi f (R) < f (G) tidak terpenuhi maka lakukan proses perbandingan antara nilai fungsi pada titik r dengan nilai fungsi pada titik W. Jika Jika f (R) < f (W) maka ganti W dengan R. Jika tidak terpenuhi maka akan masuk ke proses contraction dengan mencari nilai C terlebih dahulu. Nilai C didefinsikan denngan : C = M⁡+⁡R 2 . Jika nilai fungsi pada titik C dibandingkan dengan nilai fungsi pada titik W diperoleh Jika f (C) > f (W) maka gantikan titik W dengan titik C. Namun jika tidak maka akan masuk ke proses Shrink. Pada proses shrink akan
  • 14.
    dilakukan pencarian titikS. Yaitu S = B⁡+⁡W 2 Carilah nilai fungsi pada titik S. Setelah itu, titik W digantikan dengan titik S dan titik G digantikan dengan titik M. Jika proses pergantian titik W telah selesai maka ganti v1 dengan B, v2 dengan G dan v3 dengan W. Proses iterasi ini berlangsung hingga ketiga titik tadi konvergen pada fungsi yang diberikan. Semua hasil iterasi tadi akan ditampilkan dengan menggunakan tabel sehingga dicetaklah fprintf('%3dtt(%5.4f,%5.4f)tt(%5.4f,%5.4f)tt(%7.4f,%7.4f)tt(%5.4f)t t(%5.4f)tt(%5.4f)n',k,v1,v2,v3,fv1,fv2,fv3); Perintah ini bermakna bahwa yang akan ditampilkan adalah hasil dari i yang menyatakan iterasi ke. Kemudian ditampilkan v1, v2, v3, dan nilai fungsi yaitu fv1,fv2,fv3. Kemudian dilakukan penggambaran grafik menggunakan perintah ezsurf. Pada kasus ini, digunakan perintah ezsurf karena fungsi yang diberikan merupakan persamaan sebuah permukaan sehingga perintah yang digunakan adalah perintah ezsurf. Plot semua titik-titik yang ada menggunakan warna merah. Pemberian hold on dilakukan agar grafik tidak hilang pada saat diberikan tambahan grafik pada satu tambilan (figure).