• Tidak ada hasil yang ditemukan

BAB 3 PEMBAHASAN. 3.1 Pemodelan Nonlinear Multivariabel Tak Berkendala. Pada umumnya pemodelan nonlinear tanpa kendala berbentuk:

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 3 PEMBAHASAN. 3.1 Pemodelan Nonlinear Multivariabel Tak Berkendala. Pada umumnya pemodelan nonlinear tanpa kendala berbentuk:"

Copied!
21
0
0

Teks penuh

(1)

PEMBAHASAN

Sebelum membahas Algoritma Fletcher-Powell, terlebih dahulu akan dibahas bentuk umum pemodelan nonlinear multivariabel tak berkendala.

3.1 Pemodelan Nonlinear Multivariabel Tak Berkendala

Pada umumnya pemodelan nonlinear tanpa kendala berbentuk:

Minimumkan: Z = f(x) x En

dimana f(x) adalah fungsi objektif. Untuk sebuah masalah program nonlinear tanpa kendala kondisi penting untuk x* untuk menjadi lokal minimum dari persamaan di atas adalah:

1. f(x) dapat diturunkan (differensiable) pada x*.

2. Ñf(x)=0 sebuah titik stationer (stationery point) pada x*.

3. definit positif matriks Hessian (kondisi untuk maksimum adalah sama, kecuali matriks Hessian dari f(x*) harus definit negatif).

Sebuah program nonlinear multivariabel tanpa kendala berbentuk:

Optimumkan: Z = f(x) dimana x = [x1,x2,…,xn]T

Selanjutnya akan selalu dianggap optimum sebagai maksimisasi, semua hasilnya dapat diterapkan pada program minimisasi untuk f(x) diganti dengan -f(x). Dalam problema program nonlinear, fungsi nonlinear yang akan dioptimalkan disebut fungsi objektif. Setiap titik (x1,x2,…xn) yang akan koordinatnya tidak negatif yang memenuhi sistem

(2)

masalahnya adalah menentukan satu titik dari antara jawaban layak yang meminimumkan atau memaksimumkan fungsi objektif.

3.2 Langkah-langkah Algoritma Fletcher-Powell Dalam Menyelesaikan Permasalahan Nonlinear Tak Berkendala.

Algoritma Fletcher-Powell dapat digunakan dalam melakukan penyelesaian nonlinear multivariabel tak berkendala. Algoritma ini mempunyai delapan langkah yang dimulai dengan memilih suatu vektor awal xˆ (x pendekatan) dan menetapkan suatu toleransi ε serta suatu matriks G berukuran n x n yang sama dengan matriks satuan (matriks identitas). xˆ dan G ke dua-duanya selalu diberi nilai baru hingga selisih nilai- nilai fungsi objektif yang berurutan lebih kecil daripada ε, yang karena itu nilai xˆ yang terakhir diambil sebagai X*. Berikut langkah- langkah algoritma Fletcher-Powell:

1. Hitung a = f(x) dan bf |xˆ.

2. Apabila l=l*, maka ambil D=l*GB dan tentukan l*sedemikian rupa sehingga f(x+lGB) maksimum.

3. Ambil xˆ+Dsebagai nilai baru dari xˆ .

4. Hitunglah b = f(xˆ)untuk nilai xˆ yang baru ini. Jika b -a <e, maka lanjutkan ke langkah 5, jika tidak, maka lanjutkan ke langkah 6.

5. Ambil X* = xˆ , ƒ(X*) = β dan berhenti.

6. Hitung Cf |xˆuntuk vector xˆ yang baru dan ambil Y = B – C. 7. Hitunglah matriks n x n

L(1/DTY) dan M = (-1/YTGY)G YYTG.

8. Ambil G+L+M sebagai nilai baru dari G. ambil α sama dengan nilai β yang sekarang ini. B sama dengan nilai C yang sekarang, dan kembali ke langkah 2.

(3)

Gambar 3.1 Flowchart Algoritma Fletcher-Powell

3.3 Algoritma Fletcher-powell dalam me nyelesaikan Kasus Optimisasi Multivariabel Tak Berkendala.

Untuk lebih memahami permasalahan nonlinier, khususnya optimisasi multivariabel tanpa kendala yang diselesaikan dengan metode Fletcher-powell, penulis mengambil sebuah contoh persoalan meminimumkan jarak antara pabrik minyak dan ke tiga kilang minyak. perhatikan pembahasan di bawah ini.

Mulai Tentukan x, G, e Hitung α, B Tentukanl* β – α < ε Selesai G = G+L+M α = β B = C Ya Tidak X* = xˆ

(4)

Sebuah perusahaan minyak yang besar ingin membangun pabrik minyak yang akan disuplai dari 3 buah kilang minyak. Pelabuhan B terletak 300 km ke timur dan 400 km ke utara dari pelabuhan A, sedangkan pelabuhan C terletak 400 km ke timur dan 100 km ke selatan dari pelabuhan B. tentukan tempat pabrik minyak tersebut sehingga jumlah panjang pipa yang diperlukan untuk menghubungkan pabrik minyak dengan kilang minyak minimum.

Dari persoalan di atas, tujuannya sama dengan meminimumkan jumlah jarak antara pabrik minyak dengan ke tiga kilang minyak. Sebagai bantuan untuk menghitung jumlah ini, penulis bentuk suatu sistem koordinat, Gambar 3.2, dengan pelabuhan A sebagai titik asal. Dalam sistem ini, pelabuhan B memiliki koordinat

(300,400) dan pelabuhan C (700,300). 0, 0 300, 400 700, 300 0 100 200 300 400 500 0 100 200 300 400 500 600 700 800

Gambar 3.2 Titik-Titik Koordinat Kilang Minyak

Dengan (x1,x2) menunjukkan koordinat-koordinat dari kilang minyak yang

ternyata belum diketahui, objektifnya adalah

Minimumkan Z = x12 +x22 +

(

x1-300

)

2 +

(

x2 -400

)

2 +

(

x1 -700

)

2 +

(

x2 -300

)

2

x1

(5)

Di sini tidak ada kendala untuk koordinat-koordinat kilang minyak dan juga tidak ada persyaratan tersembunyi, misalnya suatu nilai negatif dari x1 berarti bahwa

kilang minyak harus ditempatkan di sebelah barat pelabuhan A. Persamaan di atas adalah suatu program matematis nonlinier yang tak berkendala.

Gunakan metode Fletcher-powell hingga mencapai toleransi 0,25 km untuk menyelesaikan persoalan di atas.

Permasalahan tersebut ekivalen dengan suatu program maksimisasi yang fungsi objektifnya adalah

(

)

(

)

(

)

(

)

2 2 2 1 2 2 2 1 2 2 2 1 300 400 700 300 ) (x =- x +x - x - + x - - x - + x -f

dan vektor gradien

(

)

(

)

(

)

(

)

(

)

(

)

(

)

(

)

ú ú ú ú ú û ù ê ê ê ê ê ë é -+ -+ -+ -+ -+ -+ -= Ñ 2 2 2 1 2 2 2 2 1 2 2 2 2 1 2 2 2 2 1 1 2 2 2 1 1 2 2 2 1 1 300 700 300 400 300 400 300 700 700 400 300 300 x x x x x x x x x x x x x x x x x x f

Untuk metode Fletcher-powell ini, penulis mengambil ε = 0,25 dan

ú û ù ê ë é = 1 0 0 1 G

Serta memilih xˆ = [400,200]T, yang dalam Gambar 3.1 kelihatannya suatu pendekatan yang baik bagi lokasi optimal dari pabrik penyulingan.

LANGK AH 1

(6)

(

)

(

)

(

)

(

)

(

)

(

)

(

)

(

)

05 , 987 100000 50000 200000 100 300 200 100 ) 200 ( ) 400 ( 300 200 700 400 400 200 300 400 ) 200 ( ) 400 ( ) 200 , 400 ( ) ( 2 2 2 2 2 2 2 2 2 2 2 2 -= -= -+ -+ -+ -= -+ -+ -+ -= = = a a a a a a f x f

(

)

(

)

(

)

(

)

(

)

(

)

(

)

(

)

ú ú ú ú ú û ù ê ê ê ê ê ë é -+ -+ -+ -+ -+ -+ -= Ñ = 2 2 2 1 2 2 2 2 1 2 2 2 2 1 2 2 2 2 1 1 2 2 2 1 1 2 2 2 1 1 300 700 300 400 300 400 300 700 700 400 300 300 ˆ x x x x x x x x x x x x x x x x x x B x f B

(

)

(

)

(

)

(

)

(

)

(

)

(

)

(

)

(

)

(

)

(

)

(

)

ú û ù ê ë é-= ú ú ú ú û ù ê ê ê ê ë é -= ú ú ú ú ú û ù ê ê ê ê ê ë é -+ -+ -+ -+ -+ -+ -= 76344 , 0 39296 , 0 100000 100 50000 200 200000 200 100000 300 50000 100 200000 400 300 200 700 400 300 200 400 200 300 400 400 200 200 400 200 300 200 700 400 700 400 400 200 300 400 300 400 200 400 400 2 2 2 2 2 2 2 2 2 2 2 2 B B B LANGK AH 2

Apabila l=l*, maka ambil D=l*GB dan tentukan l*sedemikian rupa sehingga

) (x GB

f +l maksimum.

Untuk memaksimumkan nilai l pada f(xˆ+lGB), penulis melakukan pencarian *

l

dengan menggunakan proses penyelidikan tiga titik pada selang [0,700].

Iterasi 1:

Bagi selang [0,700] menjadi empat bagian.

Sebagai ke tiga buah titik interiornya penulis mengambil x1 = 175, x2 = 350, x3 = 525

(7)

( )

(

)

(

(

)

)

( )

(

)

(

)

(

)

(

)

(

(

)

)

(

)

(

)

(

(

)

)

( )

913,784 175 76344 , 0 100 175 39296 , 0 300 175 76344 , 0 200 175 39296 , 0 100 ) 175 76344 , 0 200 ( ) 175 39296 , 0 400 ( 175 ˆ ˆ 1 2 2 2 2 2 2 1 1 -= + -+ -+ -+ -+ + -= + = + = x f x f GB x f GB x f x f l

( )

(

)

(

(

)

)

( )

(

)

(

)

(

)

(

)

(

(

)

)

(

)

(

)

(

(

)

)

( )

1081,252 350 76344 , 0 100 350 39296 , 0 300 350 76344 , 0 200 350 39296 , 0 100 ) 350 76344 , 0 200 ( ) 350 39296 , 0 400 ( 350 ˆ ˆ 2 2 2 2 2 2 2 2 2 -= + -+ -+ -+ -+ + -= + = + = x f x f GB x f GB x f x f l

( )

(

)

(

(

)

)

( )

(

)

(

)

(

)

(

)

(

(

)

)

(

)

(

)

(

(

)

)

( )

1447,387 525 76344 , 0 100 525 39296 , 0 300 525 76344 , 0 200 525 39296 , 0 100 ) 525 76344 , 0 200 ( ) 525 39296 , 0 400 ( 525 ˆ ˆ 2 2 2 2 2 2 2 2 2 -= + -+ -+ -+ -+ + -= + = + = x f x f GB x f GB x f x f l

Di sini, x1 adalah titik interior yang menghasilkan nilai terbesar bagi fungsi objektif,

penulis mengambil selang [0,350] yang berpusat di x1 sebagai selang baru yang

menjadi perhatian penulis selanjutnya.

Iterasi 2:

Bagi selang [0,350] menjadi empat bagian:

Sebagai ke tiga buah titik interiornya penulis mengambil x4 = 87,5; x1 = 175; x5 = 262,5 dan menghitung

( )

(

)

(

(

)

)

( )

( )

(

ˆ

)

(

ˆ

(

262,5

)

)

917,082 784 , 913 124 , 937 5 , 87 ˆ ˆ 5 1 4 -= + = + = -= -= + = + = GB x f GB x f x f x f GB x f GB x f x f l l

(8)

Karena x1 masih titik interior yang menghasilkan nilai terbesar bagi fungsi objektif,

penulis mengambil selang [87,5;262,5] yang berpusat di x1 sebagai selang baru yang

menjadi perhatian penulis selanjutnya.

Iterasi 3:

Bagi selang [87,5;262,5] menjadi empat bagian:

Sebagai ke tiga buah titik interiornya penulis mengambil x6 = 131,25; x1 = 175; x7 = 218,75 dan menghitung

( )

(

)

(

(

)

)

( )

( )

(

ˆ

)

(

ˆ

(

218,75

)

)

910,617 784 , 913 415 , 922 25 , 131 ˆ ˆ 7 1 6 -= + = + = -= -= + = + = GB x f GB x f x f x f GB x f GB x f x f l l

Karena x7 merupakan titik interior yang menghasilkan nilai terbesar bagi fungsi

objektif, penulis mengambil selang [175;262,5] yang berpusat di x7 sebagai selang

baru yang menjadi perhatian penulis selanjutnya.

Iterasi 4:

Bagi selang [175;262,5] menjadi empat bagian:

Sebagai ke tiga buah titik interiornya penulis mengambil x8 = 196,875; x7 = 218,75; x9 = 240,625 dan menghitung

( )

(

)

(

(

)

)

( )

( )

(

ˆ

)

(

ˆ

(

240,625

)

)

910,951 617 , 910 553 , 911 875 , 196 ˆ ˆ 9 7 8 -= + = + = -= -= + = + = GB x f GB x f x f x f GB x f GB x f x f l l

Karena x7 masih sebagai titik interior yang menghasilkan nilai terbesar bagi fungsi

objektif, penulis mengambil selang [196,875;240,625] yang berpusat di x7 sebagai

selang baru yang menjadi perhatian penulis selanjutnya. Iterasi 5:

Bagi selang [196,875;240,625] menjadi empat bagian:

Sebagai ke tiga buah titik interiornya penulis mengambil x10 = 207,8125; x7 = 218,75; x11 = 229,6875 dan menghitung

(9)

( )

(

)

(

(

)

)

( )

( )

(

ˆ

)

(

ˆ

(

229,6875

)

)

910,620 617 , 910 927 , 910 8125 , 207 ˆ ˆ 11 7 10 -= + = + = -= -= + = + = GB x f GB x f x f x f GB x f GB x f x f l l

Karena x7 masih sebagai titik interior yang menghasilkan nilai terbesar bagi fungsi

objektif, penulis mengambil selang [207,8125;229,6875] yang berpusat di x7 sebagai

selang baru yang menjadi perhatian penulis selanjutnya.

Iterasi 6:

Bagi selang [207,8125;229,6875] menjadi empat bagian:

Sebagai ke tiga buah titik interiornya penulis mengambil x12 = 207,8125; x7 = 218,75; x13 = 229,6875 dan menghitung

( )

(

)

(

(

)

)

( )

( )

(

ˆ

)

(

ˆ

(

224,21875

)

)

910,579 617 , 910 732 , 910 28125 , 213 ˆ ˆ 13 7 12 -= + = + = -= -= + = + = GB x f GB x f x f x f GB x f GB x f x f l l

Sekarang x13 adalah titik interior yang terbesar menghasilkan nilai terbesar bagi fungsi

objektifnya. Karena titik tengahnya berada dalam toleransi yang diisyaratkan, yakni

25 , 0 =

e dari titik-titik lainnya dalam selang ini, penulis mengambil

* l = 224,21875 ú û ù ê ë é-= ú û ù ê ë é-ú û ù ê ë é = = 177 , 171 109 , 88 76344 , 0 39296 , 0 1 0 0 1 21875 , 224 * D D GB D l LANGK AH 3

(10)

ú û ù ê ë é = ú û ù ê ë é-+ ú û ù ê ë é = + = 177 , 371 891 , 311 ˆ 177 , 171 109 , 88 200 400 ˆ ˆ ˆ x x D x x LANGK AH 4

Hitunglah b = f(xˆ)untuk nilai xˆ yang baru ini. Jika b -a <e, maka lanjutkan ke langkah 5, jika tidak, maka lanjutkan ke langkah 6

( )

(

)

(

)

(

)

(

)

(

)

(

)

e a b a b a b b b b > -= -= -= -+ -+ -+ -= = 47 , 76 ) 05 , 987 ( 58 , 910 58 , 910 300 177 , 371 700 891 , 311 400 177 , 371 300 891 , 311 177 , 371 891 , 311 ˆ 2 2 2 2 2 2 x f

Jika b -a >e, maka lanjutkan ke langkah 6

LANGK AH 6

Hitung Cf |xˆuntuk vektor xˆ yang baru dan ambil Y = B - C

ú û ù ê ë é-= ú û ù ê ë é -ú û ù ê ë é-= -= ú û ù ê ë é -= Ñ = 78501 , 0 35187 , 0 02157 , 0 04109 , 0 76344 , 0 39296 , 0 02157 , 0 04109 , 0 ˆ | Y Y C B Y C x f C

(11)

LANGK AH 7 Hitung matriks n x n

L(1/DTY) dan M = (-1/YTGY)G YYTG

[

]

378 , 165 37565677 , 134 00291383 , 31 7850 , 0 177 , 171 35187 , 0 109 , 88 78501 , 0 35187 , 0 177 , 171 ; 109 , 88 = + = ´ + -´ -= ú û ù ê ë é -= Y D Y D Y D Y D T T T T

[

]

ú û ù ê ë é -= -ú û ù ê ë é-= 565329 , 29301 234293 , 15082 234293 , 15082 195881 , 7763 177 , 171 ; 109 , 88 177 , 171 109 , 88 T T DD DD ú û ù ê ë é -= ú û ù ê ë é -× = × = 179 , 177 198 , 91 198 , 91 942 , 46 565329 , 29301 234293 , 15082 234293 , 15082 195881 , 7763 378 , 165 1 1 L L DD Y D L T T

[

]

7400 , 0 6162407001 , 0 1238124969 , 0 78501 , 0 35187 , 0 1 0 0 1 78501 , 0 ; 35187 , 0 = + = ú û ù ê ë é-ú û ù ê ë é -= GY Y GY Y GY Y T T T

[

]

ú

û

ù

ê

ë

é

-=

ú

û

ù

ê

ë

é

û

ù

ê

ë

é-ú

û

ù

ê

ë

é

=

6162407001

,

0

2762214687

,

0

2762214687

,

0

1238124969

,

0

1

0

0

1

78501

,

0

;

35187

,

0

78501

,

0

35187

,

0

1

0

0

1

G

GYY

G

GYY

T T

(12)

ú û ù ê ë é -= ú û ù ê ë é -× -= × -= 833 , 0 373 , 0 373 , 0 167 , 0 6162407001 , 0 2762214687 , 0 2762214687 , 0 1238124969 , 0 7400 , 0 1 1 M M G GYY GY Y M T T LANGK AH 8

Ambil G + L + M sebagai nilai baru dari G. ambil α sama dengan nilai β yang sekarang ini. B sama dengan nilai C yang sekarang ini, dan kembali ke langkah 2

ú û ù ê ë é -= ú û ù ê ë é -+ ú û ù ê ë é -+ ú û ù ê ë é = + + = 346 , 177 825 , 90 825 , 90 775 , 47 833 , 0 373 , 0 373 , 0 167 , 0 179 , 177 198 , 91 198 , 91 942 , 46 1 0 0 1 G G M L G G ú û ù ê ë é -= = -= = 02157 , 0 39296 , 0 58 , 910 B C B a b a LANGK AH 2

(

)

(

)

(

)

2

(

)

2 2 2 2 2 093 , 0 177 , 71 004 , 0 109 , 388 093 , 0 823 , 28 004 , 0 891 , 11 ) 093 , 0 177 , 371 ( ) 004 , 0 891 , 311 ( ) ( 093 , 0 177 , 371 004 , 0 891 , 311 ) ( 02157 , 0 04109 , 0 346 , 177 825 , 90 825 , 90 775 , 47 177 , 371 891 , 311 ) ( l l l l l l l l l l l l -+ -+ -+ -= + ÷ ÷ ø ö ç ç è æ ú û ù ê ë é -= + ÷ ÷ ø ö ç ç è æ ú û ù ê ë é -ú û ù ê ë é -+ ú û ù ê ë é = + GB X f f GB X f f GB X f

(13)

Dengan menggunakan proses penyelidikan tiga titik, penulis dapati bahwa λ* ekivalen dengan 21,875 ú û ù ê ë é -= ú û ù ê ë é -ú û ù ê ë é = 034375 , 2 0875 , 0 093 , 0 004 , 0 1 0 0 1 875 , 21 D D LANGK AH 3

Ambil xˆ + D sebagai nilai baru dari xˆ

ú û ù ê ë é = ú û ù ê ë é -+ ú û ù ê ë é = + = 142625 , 369 8035 , 311 ˆ 034375 , 2 0875 , 0 177 , 371 891 , 311 ˆ ˆ ˆ x x D x x LANGK AH 4

Hitunglah β = ƒ( xˆ ) untuk nilai xˆ yang baru ini. Jika β – α < ε, maka lanjutkan ke langkah 5, jika tidak, maka lanjutkan ke langkah 6

( )

(

)

(

)

(

)

(

)

(

)

(

)

e a b a b a b b b b < -= -= -= -+ -+ -+ -= = 03 , 0 ) 58 , 910 ( 55 , 910 55 , 910 300 142625 , 369 700 8035 , 311 400 142625 , 369 300 8035 , 311 142625 , 369 8035 , 311 ˆ 2 2 2 2 2 2 x f

Jika β - α < ε, maka lanjutkan ke langkah 5

LANGK AH 5

Ambil X* = xˆ , ƒ(X*) = β dan berhenti.

ú ù ê é = = 143 , 369 803 , 311 ˆ * * X X X Dan

( )

( )

ˆ 910,55 ˆ -= = X f X f b

(14)

Jadi pemecahannya adalah X = 311,803 km, 1* X = 369,143 km dengan 2*

*

Z = +910,55 km

3.4 Imple mentasi Algoritma Fletcher-powell Dalam Penyelesaian Permasalahan Nonlinear Multivariabel Tak Berkendala Menggunakan Pemrograman Visual Basic.

Implementasi menggunakan pemrograman Visual Basic. Berikut adalah hasil dalam pengimplementasian algoritma Fletcher-powell.

Form proses di disain sebagai berikut:

Gambar 3.3 Tampilan Disain Interface Program Fletcher-powell

Berikut adalah listing program dari form di atas:

(15)

Dim i2 As Double Dim i3 As Double Dim a As Double Dim b As Double Dim c As Double Dim d As Double Dim e As Double Dim f As Double Dim var1 As Double Dim var2 As Double Dim epsilon As Double Dim nilaia As Double Dim nilaib As Double Dim nilaic As Double

Dim intervalawal As Double Dim intervalakhir As Double

'===================== INPUT NILAI X PENDEKATAN X1 = Text1.Text

X2 = Text2.Text

'===================== INPUT NILAI EPSILON epsilon = Text4.Text

'===================== INPUT TITIK KOORDINAT nf1 = ListView1.ListItems(2).SubItems(1) nf2 = ListView1.ListItems(2).SubItems(2) nf3 = ListView1.ListItems(3).SubItems(1) nf4 = ListView1.ListItems(3).SubItems(2) nf5 = ListView1.ListItems(1).SubItems(1) nf6 = ListView1.ListItems(1).SubItems(2) If nf1 > nf3 And nf1 > nf5 Then ia = nf1

ElseIf nf3 > nf1 And nf3 > nf5 Then ia = nf3

ElseIf nf5 > nf1 And nf5 > nf3 Then ia = nf5

End If

'INISIAL AWAL MATRIK G 2X2 G1 = 1 G2 = 0 G3 = 0 G4 = 1 '===================== LANGKAH 1 fx = (-(((X1 - nf5) ^ 2 + (X2 - nf6) ^ 2) ^ 0.5)) + (-(((X1 - nf1) ^ 2 + (X2 - nf2) ^ 2) ^ 0.5)) + (-(((X1 - nf3) ^ 2 + (X2 - nf4) ^ 2) ^ 0.5))

'===================== MENENTUKAN NILAI ALPHA alpa = Round(fx, 2) matrik1 = -(X1 / (((X1 ^ 2) + (X2 ^ 2)) ^ 0.5)) - ((X1 - nf1) / ((((X1 - nf1) ^ 2) + ((X2 - nf2) ^ 2)) ^ 0.5)) - ((X1 - nf3) / ((((X1 - nf3) ^ 2) + ((X2 - nf4) ^ 2)) ^ 0.5)) matrik2 = -(X2 / (((X1 ^ 2) + (X2 ^ 2)) ^ 0.5)) - ((X2 - nf2) / ((((X1 - nf1) ^ 2) + ((X2 - nf2) ^ 2)) ^ 0.5)) - ((X2 - nf4) / ((((X1

(16)

'===================== MENENTUKAN NILAI MATRIK B B1 = Round(matrik1, 5) B2 = Round(matrik2, 5) iterasi2 = 1 '===================== LANGKAH 2 Do iterasi = 1 a = X1 - nf5 b = X2 - nf6 c = X1 - nf1 d = X2 - nf2 e = X1 - nf3 f = X2 - nf4 intervalawal = 0 intervalakhir = ia var1 = B1 var2 = B2

'1. interval dibagi 4 bagian sehingga di dapat 3 titik inter = (intervalakhir - intervalawal) / 4

i0 = intervalawal i1 = intervalawal + (inter * 1) i2 = intervalawal + (inter * 2) i3 = intervalawal + (inter * 3) i4 = intervalakhir

'===================== PROSES PENCARIAN TIGA TITIK Do

'2. masukkan fungsi ke masing2 interval

'3. cek selisih antara masing2 hasil, jika lebih kecil dari epsilon, maka hentikan program :)

nilaia = maksimumkan(a, b, c, d, e, f, var1, var2, i1) nilaib = maksimumkan(a, b, c, d, e, f, var1, var2, i2) nilaic = maksimumkan(a, b, c, d, e, f, var1, var2, i3) If nilaia > nilaib And nilaia > nilaic Then

nilaimaksimum = nilaia intervalawal = i0 intervalakhir = i2

ElseIf nilaib > nilaia And nilaib > nilaic Then nilaimaksimum = nilaib

intervalawal = i1 intervalakhir = i3

ElseIf nilaic > nilaia And nilaic > nilaib Then nilaimaksimum = nilaic

intervalawal = i2 intervalakhir = i4 End If

inter = (intervalakhir - intervalawal) / 4 i0 = intervalawal i1 = intervalawal + (inter * 1) i2 = intervalawal + (inter * 2) i3 = intervalawal + (inter * 3) i4 = intervalakhir iterasi = iterasi + 1

(17)

'===================== MAKA BERLANJUT KE ITERASI BERIKUTNYA '===================== JIKA SUDAH DALAM TOLERANSI, MAKA

'===================== AMBIL TITIK NILAI TERBESAR SEBAGAI LAMDA OPTIMISASI

Loop While toleransi(nilaia, nilaib, nilaic, epsilon) = False LB = i2

'===================== LANGKAH 3

'===================== MENENTUKAN X PENDEKATAN BARU D1 = Round(LB * ((G1 * B1) + (G2 * B2)), 3) D2 = Round(LB * ((G3 * B1) + (G4 * B2)), 3) X1 = X1 + D1 X2 = X2 + D2 beta = Round((-(((X1) ^ 2 + (X2) ^ 2) ^ 0.5)) + (-(((X1 - nf1) ^ 2 + (X2 - nf2) ^ 2) ^ 0.5)) + (-(((X1 - nf3) ^ 2 + (X2 - nf4) ^ 2) ^ 0.5)), 2) '===================== LANGKAH 4

'===================== JIKA BETA - ALPHA LEBIH KECIL DARIPADA EPSILON '===================== MAKA MASUK KE LANGKAH 5 DAN HENTIKAN ITERASI '===================== JIKA TIDAK MASUK KE LANGKAH 6

If beta - alpa < epsilon And beta - alpa > 0 Then luping = False

MsgBox "HASIL PENCARIAN DITEMUKAN DENGAN NILAI MINIMUM " & beta & " X1 = " & X1 & " X2 = " & X2 & " DENGAN SELISIH " & Round(beta - alpa, 3)

iterasi2 = 12

ElseIf beta - alpa < 0 Then luping = False

MsgBox "COBA DENGAN X PENDEKATAN LAIN " & Round(beta - alpa, 3) iterasi2 = 12

Else

luping = True

MsgBox "ITERASI KE-" & iterasi2 & " DENGAN SELISIH " & Round(beta - alpa, 3)

iterasi2 = iterasi2 + 1 End If

'===================== LANGKAH 6

'===================== MENENTUKAN NILAI MATRIK C DAN MATRIK Y matrik1 = -(X1 / (((X1 ^ 2) + (X2 ^ 2)) ^ 0.5)) - ((X1 - nf1) / ((((X1 - nf1) ^ 2) + ((X2 - nf2) ^ 2)) ^ 0.5)) - ((X1 - nf3) / ((((X1 - nf3) ^ 2) + ((X2 - nf4) ^ 2)) ^ 0.5)) matrik2 = -(X2 / (((X1 ^ 2) + (X2 ^ 2)) ^ 0.5)) - ((X2 - nf2) / ((((X1 - nf1) ^ 2) + ((X2 - nf2) ^ 2)) ^ 0.5)) - ((X2 - nf4) / ((((X1 - nf3) ^ 2) + ((X2 - nf4) ^ 2)) ^ 0.5)) C1 = Round(matrik1, 6) C2 = Round(matrik2, 6) Y1 = Round(B1 - C1, 5) Y2 = Round(B2 - C2, 5) '===================== LANGKAH 7

'===================== MENENTUKAN NILAI MATRIK L DAN M DTY = Round((D1 * Y1) + (D2 * Y2), 3)

DDT1 = D1 * D1 DDT2 = D1 * D2 DDT3 = D2 * D1 DDT4 = D2 * D2

(18)

L3 = Round((1 / DTY) * DDT3, 3) L4 = Round((1 / DTY) * DDT4, 3)

YTGY = Round((((Y1 * G1) + (Y2 * G3)) * Y1) + (((Y1 * G2) + (Y2 * G4)) * Y2), 4)

GYYTG1 = ((G1 * Y1) + (G2 * Y2)) * ((Y1 * G1) + (Y2 * G3)) GYYTG2 = ((G1 * Y1) + (G2 * Y2)) * ((Y1 * G2) + (Y2 * G4)) GYYTG3 = ((G3 * Y1) + (G4 * Y2)) * ((Y1 * G1) + (Y2 * G3)) GYYTG4 = ((G3 * Y1) + (G4 * Y2)) * ((Y1 * G2) + (Y2 * G4)) M1 = Round((-1 / YTGY) * GYYTG1, 3)

M2 = Round((-1 / YTGY) * GYYTG2, 3) M3 = Round((-1 / YTGY) * GYYTG3, 3) M4 = Round((-1 / YTGY) * GYYTG4, 3)

'===================== LANGKAH 8

'===================== MENENTUKAN MATRIK G YANG BARU

'===================== DENGAN MENJUMLAHKAN MATRIK G + L + M G1 = Round(G1 + L1 + M1, 3)

G2 = Round(G2 + L2 + M2, 3) G3 = Round(G3 + L3 + M3, 3) G4 = Round(G4 + L4 + M4, 3)

'===================== MENENTUKAN NILAI ALPHA YANG BARU '===================== DAN MENENTUKAN NILAI B YANG BARU alpa = beta

B1 = C1 B2 = C2

'Loop While luping = True iterasi2 = iterasi2 + 1

'===================== LALU KEMBALI KE LANGKAH 2 Loop While iterasi2 < 10

End Sub

Private Sub Command2_Click() titik = Split(Text3.Text, ";") If UBound(titik) > 0 Then

Set LI = ListView1.ListItems.Add(, , ListView1.ListItems.Count + 1) LI.SubItems(1) = titik(0) LI.SubItems(2) = titik(1) Text3.Text = "" Text3.SetFocus End If End Sub

Private Sub Command3_Click() ListView1.ListItems.Clear End Sub

Private Sub Form_Load()

ListView1.View = lvwReport ListView1.FullRowSelect = True ListView1.AllowColumnReorder = True ListView1.LabelEdit = lvwManual ListView1.GridLines = True

ListView1.ColumnHeaders.Add , , "TITIK", ListView1.Width / 5 ListView1.ColumnHeaders.Add , , "X1", ListView1.Width / 3 ListView1.ColumnHeaders.Add , , "X2", ListView1.Width / 3 End Sub

Private Sub Text3_KeyPress(KeyAscii As Integer) If Text3.Text = "" Then

(19)

If KeyAscii = 13 Then Call Command2_Click End If

End If End Sub

Berikut adalah listing program pada module:

Function maksimumkan(a As Double, b As Double, c As Double, d As Double, e As Double, f As Double, var1 As Double, var2 As Double, lamda As Double)

maksimumkan = (-((((a + (var1 * lamda)) ^ 2) + ((b + (var2 * lamda)) ^ 2)) ^ 0.5)) - ((((c + (var1 * lamda)) ^ 2) + ((d + (var2 * lamda)) ^ 2)) ^ 0.5) - ((((e + (var1 * lamda)) ^ 2) + ((f + (var2 * lamda)) ^ 2)) ^ 0.5)

End Function

Function toleransi(nilaia As Double, nilaib As Double, nilaic As Double, eps As Double) As Boolean

If positif(positif(nilaia) - positif(nilaib)) < eps And positif(positif(nilaib) - positif(nilaic)) < eps And positif(positif(nilaia) - positif(nilaic)) < eps Then toleransi = True

Else

toleransi = False End If

End Function

Function positif(nilai As Double) positif = ((nilai ^ 2) ^ (1 / 2)) End Function

(20)

Hasil tampilan output setelah diproses:

(21)

BAB 4

PEN UTUP

4.1 Kesimpulan

Setelah membahas permasalahan pemodelan nonlinear multivariabel tak berkendala dengan menggunakan algoritma Fletcher-Powell, maka dapat diambil kesimpulan bahwa penyelesaian permasalahan nonlinear mutivariabel tak berkendala dengan menggunakan algoritma Fletcher-Powell dapat diselesaikan tergantung dari nilai xˆ (x pendekatan) awal yang ditentukan.

4.2 Saran

Adapun saran-saran yang diperlukan untuk penelitian berikutnya adalah hasil output dari algoritma Fletcher-Powell dengan pemodelan nonlinear multivariabel tak berkendala digambarkan dalam titik-titik koordinat sehingga dapat dilihat dengan baik titik optimalnya.

Gambar

Gambar 3.1 Flowchart Algoritma Fletcher-Powell
Gambar 3.2 Titik-Titik Koordinat Kilang Minyak
Gambar 3.3 Tampilan Disain Interface Program Fletcher-powell

Referensi

Dokumen terkait