6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

16
Metode Optimasi Golden Section dan Toolbox Optimasi Matlab Pemrograman Komputer STTN BATAN oleh Gde Pandhe Wisnu Suyantara ([email protected]) Misalkan suatu fungsi y=f(x) memiliki titik optimum yang dapat berupa titik maksimum dan/atau titik minimum. Untuk menentukan titik optimum ini dapat dilakukan secara analitis dengan cara mencari nilai turunan fungsi kemudian mencari nilai nol dari turunan fungsi tersebut. y=f(x)=0 Namun untuk beberapa fungsi, proses mencari turunan fungsinya cukup rumit sehingga proses untuk menentukan titik optimum harus menggunakan metode lain misalnya metode Golden Section untuk satu variabel, dan Hooke Jeeves untuk multivariable. Suatu fungsi dapat memiliki satu titik optimum yang disebut sebagai fungsi unimodal. Beberapa fungsi juga dapat memiliki satu atau lebih titik optimum, fungsi seperti ini disebut sebagai fungsi multimodal. Untuk fungsi multimodal maka titik optimum yang diperoleh sangat tergantung dari titik awal yang digunakan untuk menebak titik optimum tersebut. Optimasi fungsi juga dapat diklasifikasikan berdasarkan kepada jumlah variabel yang akan dioptimasi. Untuk satu variabel, maka dapat disebut optimasi fungsi satu variabel sedangkan untuk lebih dari satu variabel maka disebut sebagai optimasi fungsi multivariabel. Metode Golden Section merupakan metode untuk menentukan titik optimum (titik maksimum atau minimum) untuk satu variabel. Metode Hooke Jeeves merupakan metode untuk menentukan titik optimum untuk lebih dari satu variabel. Dalam kesempatan ini hanya metode Golden Section yang akan dibahas sedangkan metode Hooke Jeeves akan digantikan dengan menggunakan langsung toolbox optimasi yang sudah tersedia di dalam Matlab misalnya fminsearch, fminbnd, dan fmincon. 1. Metode Optimasi Satu Variabel Golden Section Seperti yang sudah dijelaskan sebelumnya bahwa metode Golden Section merupakan metode optimasi satu variabel. Selain itu untuk menggunakan metode ini diperlukan syarat batas-batas

Transcript of 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

Page 1: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

Metode Optimasi Golden Section dan Toolbox Optimasi Matlab

Pemrograman Komputer STTN BATAN

oleh Gde Pandhe Wisnu Suyantara

([email protected])

Misalkan suatu fungsi y=f(x) memiliki titik optimum yang dapat berupa titik maksimum

dan/atau titik minimum. Untuk menentukan titik optimum ini dapat dilakukan secara analitis

dengan cara mencari nilai turunan fungsi kemudian mencari nilai nol dari turunan fungsi

tersebut.

y’=f’(x)=0

Namun untuk beberapa fungsi, proses mencari turunan fungsinya cukup rumit sehingga proses

untuk menentukan titik optimum harus menggunakan metode lain misalnya metode Golden

Section untuk satu variabel, dan Hooke Jeeves untuk multivariable.

Suatu fungsi dapat memiliki satu titik optimum yang disebut sebagai fungsi unimodal. Beberapa

fungsi juga dapat memiliki satu atau lebih titik optimum, fungsi seperti ini disebut sebagai

fungsi multimodal. Untuk fungsi multimodal maka titik optimum yang diperoleh sangat

tergantung dari titik awal yang digunakan untuk menebak titik optimum tersebut.

Optimasi fungsi juga dapat diklasifikasikan berdasarkan kepada jumlah variabel yang akan

dioptimasi. Untuk satu variabel, maka dapat disebut optimasi fungsi satu variabel sedangkan

untuk lebih dari satu variabel maka disebut sebagai optimasi fungsi multivariabel.

Metode Golden Section merupakan metode untuk menentukan titik optimum (titik maksimum

atau minimum) untuk satu variabel. Metode Hooke Jeeves merupakan metode untuk

menentukan titik optimum untuk lebih dari satu variabel. Dalam kesempatan ini hanya metode

Golden Section yang akan dibahas sedangkan metode Hooke Jeeves akan digantikan dengan

menggunakan langsung toolbox optimasi yang sudah tersedia di dalam Matlab misalnya

fminsearch, fminbnd, dan fmincon.

1. Metode Optimasi Satu Variabel Golden Section

Seperti yang sudah dijelaskan sebelumnya bahwa metode Golden Section merupakan metode

optimasi satu variabel. Selain itu untuk menggunakan metode ini diperlukan syarat batas-batas

Page 2: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

dari interval optimasi sudah diketahui atau dengan kata lain metode ini memerlukan dua nilai

tebakan berupa interval dimana diperkirakan titik optimum tersebut berada.

y=f(x)

xA xBxP xQ

l

l

1-l

Gambar 1. Ilustrasi optimasi dengan golden section

misalkan daerah interval tersebut berada diantara xA dan xB seperti yang ditunjukkan pada

Gambar 1. Dari daerah tersebut diambil dua titik yaitu xP dan xQ sebagai titik evaluasi. Dari

gambar dapat dilihat bahwa ada faktor l yang digunakan untuk menentukan titik xP dan xQ.

Secara matematis titik xP dan xQ dapat dituliskan sebagai berikut:

xAxPxA-xQxAxB

11

sehingga diperoleh persamaan untuk menentukan titik xP dan xQ sebagai berikut :

xAxPxAxB

11

xAxBxAxP 1 (1)

Untuk titik xQ maka digunakan :

xA-xQxAxB

1

xAxBxAxQ (2)

Nilai l yang digunakan adalah sebesar :

Page 3: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

61802

15,

dengan menggunakan dua titik xP dan xQ tersebut selanjutnya dapat dilakukan evaluasi untuk

menghilangkan/ mengeleminasi interval yang tidak diperlukan secara bertahap seperti yang

ditampilkan pada Gambar 2 berikut.

xA xBxP xQ

l

l

1-l

xA xBxP xQ

l

l

xA xBxP xQ

l

l

xA xBxQ

l

l

xP

1

2

3

4

Gambar 2. Proses optimasi dengan golden section

Page 4: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

Dapat dilihat bahwa semakin lama interval xA dan xB semakin mendekat begitu juga halnya

dengan xP dan xQ hingga pada suatu saat xA dan xB tidak berbeda jauh dan memenuhi kriteria

toleransi error yang disyaratkan.

Prosedur eleminasi yang digunakan dengan membandingkan nilai y pada setiap titik

perhitungan evaluasi yaitu titik P dan Q. Dari hasil nilai y pada kedua titik evaluasi kemudian

ditentukan langkah-langkah elemniasi yang sesuai dengan kriteria optimasi yang dilakukan.

Untuk Kriteria Maksimasi maka berlaku

Jika yP<yQ maka : Ganti titik P

xA=xP

xP=xQ

xB=xB

xQ dihitung dengan persamaan (2)

Jika yP>yQ maka : Ganti titik Q

xB=xQ

xQ=xP

xA=xA

xP dihitung dengan persamaan (1)

Untuk Kriteria Minimasi maka berlaku

Jika yP<yQ maka : Ganti titik Q

xB=xQ

xQ=xP

xA=xA

xP dihitung dengan persamaan (1)

Jika yP>yQ maka : Ganti titik P

xA=xP

xP=xQ

xB=xB

xQ dihitung dengan persamaan (2)

Untuk memudahkan dalam melakukan program, umumnya yang digunakan adalah prosedur

minimasi, sedangkan untuk prosedur maksimasi dilakukan dengan mengalikan nilai y

minimasi dengan tanda -1 (minus satu) sehingga secara otomatis minimasi akan berubah

menjadi prosedur maksimasi.

Page 5: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

Contoh Pemrograman Matlab

Suatu fungsi kuadrat sebagai berikut:

432 xxxfy

Ingin dicari nilai minimum fungsi dengan metode Golden Section

Penyelesaian :

Apabila fungsi tersebut digambarkan maka akan diperoleh profil sebagai berikut:

Gambar 3. Profil fungsi y=f(x)

Langkah perhitungannya adalah sebagai berikut:

1. Mulai program

2. Masukkan interval minimasi perhitungan xA dan xB, dan nilai l dan nilai toleransi tolfun

3. Hitung nilai (xB-xA)

4. Buat looping while (xB-xA) > tolfun maka

a. Hitung nilai xP dan xQ dengan persamaan (1) dan (2)

Page 6: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

b. Hitung nilai yP dan yQ dengan persamaan yang diberikan pada soal (dinyatakan

sebagai subprogram)

c. Bandingkan nilai yP dan yQ untuk prosedur minimasi

i. Jika yP<yQ maka ganti titik Q

1. xB=xQ

2. xQ=xP

3. xA=xA

4. xP dihitung dengan persamaan (1)

ii. Jika yP>yQ maka ganti titik P

1. xA=xP

2. xP=xQ

3. xB=xB

4. xQ dihitung dengan persamaan (2)

d. Hitung nilai (xB-xA) baru

e. Apakah nilai (xB-xA) baru memenuji kriteria tolfun?

i. Jika Ya maka perhitungan lanjut ke langkah 5

ii. Jika Tidak maka perhitungan kembali ke langkah 4

5. Hitung nilai xoptimum dengan persamaan xopt=(xA+xB)/2

6. Hitung nilai yoptimum dengan subprogram

7. Tampilkan hasil perhitungan

8. Selesai

Blok algoritma programnya ditampilkan pada Gambar 4.

Programnya adalah sebagai berikut:

function maingolden clc clear % input data xA=-10; xB=10; % pastikan xB lebih besar dari xA! tolfun=1e-4; lamb=(sqrt(5)-1)/2; % memulai perhitungan diff=(xB-xA); % looping while iter=0; % untuk menghitung jumlah looping while diff>tolfun iter=iter+1; % menentukan titik evaluasi P dan Q xP=xA+(1-lamb)*(xB-xA); xQ=xA+lamb*(xB-xA); % menghitung nilai y pada titik P dan Q yP=subgolden(xP); yQ=subgolden(xQ);

Page 7: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

% eleminasi interval : proses minimasi if yP<yQ % ganti Q xB=xQ; xQ=xP; xA=xA; xP=xA+(1-lamb)*(xB-xA); else % ganti P xA=xP; xP=xQ; xB=xB; xQ=xA+lamb*(xB-xA); end % menghitung diff untuk proses looping diff=(xB-xA); end % menghitung hasil minimasi xopt=(xA+xB)/2; yopt=subgolden(xopt); % menampilkan hasil fprintf('Titik minimum adalah (%6.4f,%6.4f) \n',xopt,yopt)

function y=subgolden(x) y=x^2+3*x-4;

Hasil Program :

Titik minimum adalah (-1.5000,-6.2500)

Secara analitis titik minimum dapat ditentukan dengan menurunkan persamaan

432 xxxfy sebagai berikut :

032 xx'f'y

2

3x

Nilai minimum diperoleh dengan memasukkan nilai x tersebut ke persamaan y=f(x)

42

33

2

3

2

32

fy

4

25

4

16

4

18

4

9y

titik minimum fungsi

4

25

2

3,

Dari hasil analitis tersebut dapat dilihat bahwa metode golden section memberikan hasil yang

sama dengan hasil analitis.

Page 8: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

Hitung nilai diff=xB-xA

Input data

xA,xB,

tolfun,lamb

Mulai

loop while diff>tolfun

Hitung nilai xP dan xQ dengan

persamaan (1) dan (2)

Hitung nilai yP dan yQ dengan

subprogram

Subprogram y=f(x)

y=x2+3x-4

yP<yQ?

xB=xQ

xQ=xP

xA=xA

Hitung xP dengan persamaan (1)

xA=xP

xP=xQ

xB=xB

Hitung xQ dengan persamaan (2)

Hitung nilai xopt dan yopt

Tampilkan hasil

hitungan

Selesai

diff<tolfun?

Hitung nilai diff=xB-xA

x

y

Ya Tidak

Ya

Tidak

Gambar 4. Algoritma Golden Section

2. Metode Optimasi dengan Toolbox Matlab

Untuk menyelesaikan sebuah permasalahan yang menyangkut optimasi baik itu

minimasi ataupun maximasi dengan menggunakan pemrograman matlab, maka dapat

Page 9: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

menggunakan tools berupa fminsearch dan fminbnd. Perbedaan mendasar dari kedua

tools tersebut terletak pada jumlah variabel yang akan dioptimasi. fminbnd merupakan tools

untuk minimasi satu variabel pada interval tertentu sementara fminsearch digunakan untuk

minimasi satu atau beberapa variabel.

Sintaks untuk fminsearch adalah sebagai berikut : x = fminsearch(fun,x0)

Dengan x merupakan hasil dari minimasi pada sekitar nilai awal x0 dan fun adalah function yang

memuat persamaan yang diminimasi. Sintaks untuk fminbnd adalah sebagai berikut :

x = fminbnd(fun,x1,x2)

x merupakan hasil minimasi dari suatu fungsi pada fun pada interval antara x1 dan x2.

Untuk memahami penggunaan fminbnd, dan fminsearch silakan lakukan latihan berikut : Sebuah persamaan kuadrat sebagai berikut : f(x)=12x2-15x+2 a. ingin dicari nilai optimum fungsi dari persamaan tersebut! (gunakan fminsearch!) b. Jika permasalahan tersebut diubah dengan memberikan batas nilai berupa x1=0 dan x2=10

berapa nilai optimum fungsi tersebut? (selesaikan dengan menggunakan fminbnd) Penyelesaian

Algoritma perhitungan untuk soal a ditampilkan pada Gambar 5 sedangkan algoritma

untuk soal b ditampilkan pada 6. Dari kedua gambar tersebut dapat dilihat bahwa subroutine

yang diselesaikan sama sehingga persamaan yang akan diselesaikan dapat dibuat dalam 1 m-file

tersendiri. Langkah pemrograman dapat dibagi menjadi dua tahap yaitu :

a. Penulisan kode program untuk subprogram persamaan b. Penulisan kode main program untuk fminsearch, fminbnd

Page 10: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

Input

Data

x0

Optimasi fungsi dengan fminsearch

[x,fval]=fminsearch(@fun_kuadrat,x0)

Function y=fun_kuadrat(x)

y=12x2-15x+1

y min?

Tampilkan

hasil

Selesai

Mulai

ya

tidak

Gambar 5. Algoritma perhitungan dengan fminsearch

Input

Data

x1,x2

Optimasi fungsi dengan fminbnd

[x,fval]=fminbnd(@fun_kuadrat,x1,x2)

Function y=fun_kuadrat(x)

y=12x2-15x+1

y<tolFun?

Tampilkan

hasil

Selesai

Mulai

ya

tidak

Gambar 6. Algoritma perhitungan dengan fminbnd

Page 11: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

Penulisan kode subprogram function y=fun_kuadrat(x) % menuliskan subprogram y=12*x^2-15*x+1;

Penulisan kode main program untuk fminsearch

x0=10;

[xs,fval1]=fminsearch (@fun_kuadrat,x0)

Penulisan kode main program untuk fminbnd

x1=0

x2=10;

[xb,fval2]=fminbnd (@fun_kuadrat,x1,x2)

Hasil perhitungan program :

xs = 0.6250

fval1 = -3.6875

xb = 0.6250

fval2 = -3.6875

Minimasi dengan fminsearch untuk fungsi multivariabel Sebuah persamaan polynomial dengan dua variabel, x1 dan x2 sebagai berikut : f(x1,x2)=50(x2-2x1

2)2+(1-3x1)2

ingin dicari nilai minimum fungsi dari persamaan tersebut. Gunakan nilai awal x1=0 dan x2=1 Penyelesaian Karena ada dua variabel yang ingin diminimasi maka akan digunakan tools fminsearch. Program akan dibagi menjadi dua bagian. Bagian pertama adalah fun_poly (subroutine) yang mengandung persamaan yang ingin diminimasi. Bagian kedua adalah program utama yang mengandung fminsearch dan akan memanggil

fun_poly.

Page 12: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

Input Data

x0=[x10 x20]

Minimasi fungsi dengan fminsearch

[x,fval]=fminsearch(@fun_poly,x0)

Function y=fun_poly(x)

y=50(x2-2x1)2+(1-3x1)2

y<tolFun?

Tampilkan

hasil

Selesai

Mulai

ya

tidak

Gambar 7. Algoritma perhitungan untuk minimasi multivariabel.

Input data pada program akan berupa nilai awal x0. Dalam kasus ini akan diperlukan dua nilai awal untuk menyelesaikan fungsi tersebut. Akan tetapi tools fminsearch hanya menyediakan satu argument untuk nilai awal sehingga kita akan buat nilai awal dalam bentuk array seperti berikut : x0=[0,1];

Bagian subroutine akan kita mulai dengan mendefinisikan argument in dan argument out terlebih dahulu. Dari sintaks fminsearch kita peroleh bahwa argument in yang tersedia berupa nilai x0 dan argument out berupa hasil hitungan dari persamaan (f(x1,x2)) maka pada definisi function kita buat sebagai berikut : function f=fun_poly(x)

x1=x(1); %Untuk memudahkan dalam pemrograman kita definisikan

kembali nilai x0 dalam subroutine pers_poly

x2=x(2); %x1 dan x2

%fungsi utama yang akan diselesaikan :

f=50.*(x2-2*x1.^2).^2+(1-3*x1).^2;

Bagian main program kurang lebih sebagai berikut : x=fminsearch(@fun_poly,x0)

fprintf(‘x1 = %6.3f \n’,x(1))

Page 13: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

fprintf(‘x2 = %6.3f \n’,x(2))

hasil perhitungan adalah sebagai berikut

x1 = 0.333

x2 = 0.222

Page 14: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

TUGAS 6 PEMROGRAMAN KOMPUTER

STTN BATAN

Suatu reaksi AB dijalankan dalam suatu reaktor batch. Diperoleh data konsentrasi A tiap

waktu adalah sebagai berikut :

Waktu, menit Konsentrasi A, mol/L

0 10

10 5.8

20 3.9

30 2

40 1.4

50 0.8

60 0.5

Dari data percobaan tersebut akan ditentukan konstanta laju reaksi (k) dengan metode

minimasi terhadap nilai jumlah kuadrat dari kesalahan/ sum of square of error (SSE) yang

didefinisikan sebagai berikut:

N

ielmodAAdata CCSSE

1

2 (A)

dengan i merupakan nomor data. CA merupakan konsentrasi A. indeks data merujuk pada data

percobaan yang diperoleh dari reaktor sedangkan model merujuk pada model matematis yang

diajukan untuk memprediksi laju pengurangan konsentrasi A. Dari hasil studi referensi

dipercaya bahwa reaksi tersebut memiliki order reaksi 1 terhadap A sehingga diajukan model

berbasis neraca massa dan kinetika reaksi sebagai berikut:

AA kC

dt

dC (B)

t merupakan waktu dan k adalah konstanta laju reaksi. Persamaan (B) tersebut diintegrasikan

secara analitis sehingga diperoleh persamaan sebagai berikut :

ktexpCC AelmodA 0 (C)

CA0 merupakan konsentrasi A pada waktu mula-mula (t=0). Oleh karena nilai CA0 dan t telah

diketahui maka CAmodel dapat dihitung dari persamaan (C). Oleh karena CAdata telah diketahui

maka nilai SSE pada persamaan (A) dapat terhitung apabila diberikan nilai k yang tertentu. Nilai

Page 15: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

SSE kemudian diminimasi dengan cara mentrial nilai k sehingga diperoleh nilai SSE yang paling

minimum.

Tentukan nilai konstanta laju reaksi k dengan metode :

a. Golden Section

b. fminbnd

c. fminsearch

Gunakan nilai batas k sebesar 0.001 dan 1 untuk metode Golden Section dan fminbnd!.

Tentukan nilai parameter lainnya secara mandiri. Sertakan juga algoritma pemrograman yang

digunakan.

Syarat Pengumpulan Tugas

1. Tugas dikumpulkan paling lambat tanggal : 5 Mei 2014

2. Tugas dikumpulkan dalam bentuk soft copy berupa:

a. diagram algoritma

b. copy kode matlab

c. hasil run

a, b, dan c ditulis dalam 1 file MS word (bukan terpisah)

dikirim ke email [email protected].

3. Penulisan nama file softcopy (MS word) : Tugas6 Nama

4. Tuliskan pada subject email : Tugas6 Nama

Hasil Tugas :

Metode Golden Section

===============================================

iter kA kB fsse(kA) fsse(kB)

===============================================

1 0.0010 1.0000 3.34e+002 5.57e+001

2 0.0010 0.6184 3.34e+002 5.55e+001

3 0.0010 0.3826 3.34e+002 5.32e+001

4 0.0010 0.2368 3.34e+002 4.50e+001

5 0.0010 0.1468 3.34e+002 2.98e+001

6 0.0010 0.0911 3.34e+002 1.22e+001

7 0.0354 0.0911 7.01e+000 1.22e+001

8 0.0354 0.0698 7.01e+000 4.29e+000

Page 16: 6 Metode Optimasi Golden Section Dan Toolbox Optimasi Matlab

9 0.0354 0.0567 7.01e+000 7.14e-001

10 0.0435 0.0567 1.33e+000 7.14e-001

~ ~ ~ ~ ~

22 0.0507 0.0507 1.66e-001 1.66e-001

23 0.0507 0.0507 1.66e-001 1.66e-001

24 0.0507 0.0507 1.66e-001 1.66e-001

25 0.0507 0.0507 1.66e-001 1.66e-001

26 0.0507 0.0507 1.66e-001 1.66e-001

27 0.0507 0.0507 1.66e-001 1.66e-001

28 0.0507 0.0507 1.66e-001 1.66e-001

29 0.0507 0.0507 1.66e-001 1.66e-001

===============================================

Nilai k dengan metode golden section = 0.0507

Nilai sse dengan metode golden section = 1.66e-001

Nilai k dengan metode fminbnd = 0.0507

Nilai sse dengan metode fminbnd = 1.66e-001

Nilai k dengan metode fminsearch = 0.0507

Nilai sse dengan metode fminsearch = 1.66e-001