Implementasi Algoritma Fletcherpowell Dengan Pemodelan Nonlinear Multivariabel Tak Berkendala

(1)

IMPLEMENTASI ALGORITMA

FLETCHER-POWELL

DENGAN

PEMODELAN NONLINEAR MULTIVARIABEL TAK

BERKENDALA

SKRIPSI

YOSE RIZAL

080823035

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2011


(2)

ii

PERSETUJUAN

Judul : IMPLEMENTASI ALGORITMA

FLETCHER-POWELL DENGAN PEMODELAN NONLINEAR MULTIVARIABEL TAK BERKENDALA

Kategori : SKRIPSI

Nama : YOSE RIZAL

Nomor Induk Mahasiswa : 080823035

Program Studi : SARJANA (S1) MATEMATIKA

Departemen : MATEMATIKA

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN

ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Medan, Juni 2011

Komisi Pembimbing :

Pembimbing 1 Pembimbing 2,

Drs. Marwan Harahap, M.Eng Drs. Bambang Irawan, M.Sc NIP. 19461225 197403 1 001 NIP. 19470421 197603 1 001

Diketahui/Disetujui oleh

Departemen Matematika FMIPA USU Ketua,

Prof. Dr. Tulus, M.Si.

NIP. 19620901 198803 1 002


(3)

iii

PERNYATAAN

IMPLEMENTASI ALGORITMA

FLETCHER-POWELL

DENGAN PEMODELAN NONLINEAR MULTIVARIABEL

TAK BERKENDALA

SKRIPSI

Saya mengaku bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing- masing disebutkan sumbernya.

Medan, Juni 2011

YOSE RIZAL 080823035


(4)

iv

PENGHARGAAN

Puji dan syukur Penulis panjatkan kepada Tuhan Yang Maha Esa, dengan limpahan karunia-Nya skripsi ini dapat diselesaikan dalam waktu yang telah ditetapkan.

Dalam kesempatan ini, Penulis ingin mengucapkan terima kasih yang sebesar-besarnya kepada semua pihak yang telah membantu dan membimbing penulis dalam penyusunan skripsi ini, ucapan terima kasih penulis sampaikan kepada:

1. Bapak Drs. Marwan Harahap, M.Eng selaku pembimbing I dan Drs. Bambang Irawan, M.Sc selaku pembimbing II yang telah memberikan bimbingan dan pengarahan kepada penulis sehingga skripsi ini dapat diselesaikan.

2. Bapak Syahriol Sitorus, S.Si, M.IT dan Drs. Rosman Siregar, M.Si selaku penguji.

3. Bapak Prof. Dr. Tulus, M.Si selaku ketua Departemen Matematika.

4. Dekan dan Pembantu Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara.

5. Semua Dosen dan Pegawai pada Departemen Matematika FMIPA USU. 6. Ayahanda Prof. Dr. Bastian Arifin, M.Sc dan Ibunda Ir. Rosnani

Nasution,M.Si yang sangat penulis kasihi dan sayangi atas doa dan dukungan moril maupun materil yang diberikan selama ini.

7. Saudara kandung : Evans, Adon, Jojo, Yani dan Reza yang selalu memberikan motivasi, saran dan bantuannya.

8. seluruh teman-teman angkatan 2008 dan teman terdekat: Tewe, Brade, Adi, Wina, Susi, Suaef yang telah memberikan semangat, dorongan dan saran dalam pengerjaan skripsi ini.

9. Semua pihak yang tidak dapat penulis sebutkan satu persatu.

Semoga segala bentuk bantuan yang telah diberikan kepada penulis mendapatkan balasan yang lebih baik dari Allah SWT.


(5)

v

ABSTRAK

Algoritma Fletcher-Powell adalah suatu metode pendekatan yang menggunakan titik pendekatan dengan memperlihatkan slope atau gradien pada titik tersebut. Metode ini mampu menyelesaikan berbagai permasalahan. Salah satu diantaranya adalah permasalahan optimisasi nonlinear, yakni optimisasi multivariabel tak berkendala. Mengingat bahwa algoritma yang dikembangkan dalam metode Fletcher-Powell adalah algoritma pendekatan, akan muncul istilah iterasi, yaitu proses pengulangan perhitungan yang dilakukan secara berulang- ulang hingga diperoleh hasil yang mendekati nilai penyelesaian yang telah stabil. Metode ini diawali dengan menentukan nilai x pendekatan dan berhenti pada nilai toleransi dalam epsilon yang sudah ditentukan.


(6)

vi

ABSTRACT

Fletcher-Powell algorithm is an approach that uses point to show the approach slope or gradient at that point. This method is able to solve various problems. One of them is a nonlinear optimization problem, namely the unconstraint optimization multivariable. Given that the algorithms developed in the methods of Fletcher-Powell algorithm is the approach, it would appear the term iteration, the process of repeating the calculations are carried out repeatedly to obtain results close to the value of the settlement that has been stabilized. This method begins with determining the approaches value of x and stops if the value in epsilon range.


(7)

vii

DAFTAR ISI

Halaman

PERSETUJUAN ii

PERN YATAAN iii

PENGHARGAAN iv

ABSTRAK v

ABSTRACT vi

DAFTAR ISI vii

DAFTAR GAMBAR viii

BAB 1 PENDAHULUAN 1

1.1 Latar Belakang 1

1.2 Perumusan Masalah 3

1.3 Batasan Masalah 3 1.4 Tujuan Penelitian 3 1.5 Kontribuasi Penelitian 3 1.6 Metode Penelitian 4 BAB 2 LANDASAN TEORI 5

2.1 Pemograman Nonlinear 5 2.2 Pemograman Nonlinear Tak Berkendala 6

2.3 Algoritma Fletcher-Powell 7

2.4 Matriks 8 2.4.1 Notasi Matriks 8 2.4.2 Operasi Matriks 9 2.4.3 Transpose Matriks 11 2.4.4 Invers Matriks 11

2.5 Penyelidikan Selang Tiga Titik 13 2.6 Visual Basic 13

BAB 3 PEMBAHASAN 15 3.1 Pemodelan Nonlinear Multivariabel Tak Berkendala 15

3.2 Langkah- langkah Algoritma Fletcher-Powell Dalam Menyelesaikan Permasalahan Nonlinear Tak Berkendala 16 3.3 Algoritma Fletcher-powell dalam menyelesaikan Kasus Optimisasi Multivariabel Tak Berkendala 17 3.4 Implementasi Algoritma Fletcher-Powell Menggunakan Pemrograman Visual Basic 28 BAB 4 PEN UTUP 35

4.1 Kesimpulan 35

4.2 Saran 35


(8)

viii

DAFTAR GAMBAR

Halaman

Gambar 2.1 Metode Pencarian Tiga Titik 13

Gambar 3.1 Flowchart Algoritma Fletcher-Powell 17 Gambar 3.2 Titik-Titik Koordinat Kilang Minyak 18 Gambar 3.3 Tampilan Disain Interface Program Fletcher-Powell 28 Gambar 3.4 Tampilan Program Fletcher-Powell Pada Saat Dijalankan 33 Gambar 3.5 Tampilan Output Program Fletcher-Powell Setelah Diproses 34


(9)

v

ABSTRAK

Algoritma Fletcher-Powell adalah suatu metode pendekatan yang menggunakan titik pendekatan dengan memperlihatkan slope atau gradien pada titik tersebut. Metode ini mampu menyelesaikan berbagai permasalahan. Salah satu diantaranya adalah permasalahan optimisasi nonlinear, yakni optimisasi multivariabel tak berkendala. Mengingat bahwa algoritma yang dikembangkan dalam metode Fletcher-Powell adalah algoritma pendekatan, akan muncul istilah iterasi, yaitu proses pengulangan perhitungan yang dilakukan secara berulang- ulang hingga diperoleh hasil yang mendekati nilai penyelesaian yang telah stabil. Metode ini diawali dengan menentukan nilai x pendekatan dan berhenti pada nilai toleransi dalam epsilon yang sudah ditentukan.


(10)

vi

ABSTRACT

Fletcher-Powell algorithm is an approach that uses point to show the approach slope or gradient at that point. This method is able to solve various problems. One of them is a nonlinear optimization problem, namely the unconstraint optimization multivariable. Given that the algorithms developed in the methods of Fletcher-Powell algorithm is the approach, it would appear the term iteration, the process of repeating the calculations are carried out repeatedly to obtain results close to the value of the settlement that has been stabilized. This method begins with determining the approaches value of x and stops if the value in epsilon range.


(11)

BAB 1

PENDAHULUAN

1.1Latar Belakang

Salah satu tujuan yang paling penting dalam matematika adalah mencari titik optimal. Titik optimal merupakan suatu titik yang memiliki arti secara matematis yakni maksimal atau minimal. Proses untuk mencari titik optimal ini disebut proses optimisasi.

Optimisasi sering dikenal sebagai upaya untuk mendapatkan hasil yang terbaik dengan memperhatikan keterbatasan dan kendala yang ada. Dalam kehidupan sehari- hari optimisasi menjadi sangat penting mengingat sumber daya, waktu dan bahkan peluang bukanlah hal yang tak terbatas. Optimisasi juga bertujuan untuk menekan atau meminimumkan hal- hal yang tidak diinginkan karena merugikan atau tidak menguntungkan dan berusaha untuk meningkatkan atau memaksimumkan hal-hal yang dipandang menguntungkan.

Dalam permasalahan nonlinear, terutama dalam permasalahan optimisas i multivariabel, biasanya tidak dapat diselesaikan hanya dengan metode analitik, sehingga diperlukan teori khusus dalam memudahkan perhitungannya. Salah satu teori yang biasa digunakan adalah metode numerik. Metode numerik akan sangat membantu setiap penyelesaian permasalahan, apabila secara matematis dapat dibentuk suatu pola hubungan antar variabel (parameter). Jika pola hubungan yang terbentuk dapat dijabarkan dalam bentuk fungsi, maka hal ini akan menjadi lebih baik.

Suatu permasalahan optimisasi nonlinear adalah fungsi tujuan da n kendalanya mempunyai bentuk nonlinear pada salah satu atau ke duanya. Optimisasi nonlinear ditinjau dari pandangan matematis adalah topik lanjutan dan secara konsepsual, sulit untuk diselesaikan. Dibutuhkan pengetahuan aktif mengenai tujuan nonlinear, yang tidak mempunyai nilai minimum serta mempunyai daerah


(12)

2

penyelesaian dengan batas nonlinear (tidak konvex). Secara umum tidak terdapat teknik penyelesaian yang terbaik, tetapi ada beberapa teknik yang mempunyai masa depan cerah dibandingkan yang lain. Banyak teknik penyelesaian optimisasi nonlinear yang hanya efisien menyelesaikan masalah yang mempunyai struktur matematis tertentu. Hampir semua teknik optimisasi nonlinear moderen mengandalkan pada algoritma numerik untuk mendapatkan jawabannya. Salah satu metode numerik yang digunakan adalah metode Fletcher-Powell.

Metode Fletcher-Powell merupakan suatu algoritma untuk mencari nila i optimal pada sebuah fungsi nonlinear multivariabel tak berkendala. Algoritma ini terdiri dari delapan langkah yang dimulai dengan memilih suatu vektor awal (X) dan mendapatkan suatu toleransi

ε

, serta sebuah matriks G berukuran n x n yang sama dengan matriks satuan (identity matrix). X dan G ke dua-duanya selalu diberi nilai baru hingga selisih nilai- nilai fungsi objektif yang berurutan lebih kecil dari pada

ε

, yang karena itu nilai X yang terakhir diambil sebagai X* (optimisasi).

Untuk menyelesaikan permasalahan optimisasi, tidak hanya dibutuhka n pengetahuan aktif dalam bidang optimisasi tersebut, namun juga dibutuhkan teknik komputasi yang baik. Hal ini disebabkan oleh besarnya tingkat kesalahan yang terjadi dalam perhitungan penyelesaian optimisasi secara matematis, sehingga mendorong kita untuk dapat mengkomputerisasikan rangkaian-rangkaian algoritma agar dapat menghilangkan tingkat kesalahan yang mungkin terjadi.

Visual Basic adalah salah satu development tools untuk membangun aplikas i dalam lingkungan sistem operasi Windows yang sangat mendominan digunakan oleh para pengguna komputer. Dalam pengembangan aplikasi, Visual Basic menggunakan pendekatan visual untuk merancang user interface dalam bentuk form, sedangkan untuk kodingnya menggunakan dialek bahasa Basic yang cenderung mudah dipelajari. Visual Basic telah menjadi tools yang terkenal bagi para pemula maupun para developer. Visual Basic juga dapat digunakan sebagai alat untuk mengkomputasikan rangkaian-rangkaian algoritma optimisasi.


(13)

3

1.2 Perumusan Masalah

Berdasarkan latar belakang yang telah dikemukakan, permasalahan dalam penelitian ini adalah bagaimana menyelesaikan permasalahan nonlinear multivariabel tanpa kendala menggunakan metode Fletcher-Powell serta mengimplementasikan algoritma Fletcher-Powell menggunakan pemrograman Visual Basic.

1.3 Batasan Masalah

Agar tulisan ini terfokus dan tidak menyimpang dari tujuannya, penulis membuat pembatasan masalah, yaitu:

· Permasalahan yang dibahas adalah menyelesaikan permasalahan nonlinear multivariabel tak berkendala dengan menggunakan metode Fletcher-Powell. · Mengimplementasikan algoritma Fletcher-Powell untuk permasalahan

nonlinear multivariabel tak berkendala pada sebuah contoh kasus nyata dengan pemograman Visual Basic.

1.4 Tujuan Penelitian

Tujuan penelitian ini adalah untuk memperlihatkan metode Fletcher-Powell yang dapat menyelesaikan permasalahan nonlinear khususnya optimisasi multivariabel tanpa kendala.

1.5 Kontribusi Penelitian

Manfaat yang diharapkan dari penelitian ini adalah hasil implementasi yang diperoleh dengan metode ini dapat dijadikan sebagai salah satu data pendukung dalam membantu menyelesaikan permasalahan dari pemodelan nonlinear multivariabel tak berkendala.


(14)

4

1.6 Metode Penelitian

Penelitian ini bersifat literatur atau kepustakaan dengan mengumpulkan bahan-bahan dari textbooks dan jurnal-jurnal. Pada bagian awal penelitian ini akan memperkenalkan landasan teori untuk mencapai hasil penelitian yaitu mengenai langkah-langkah algoritma Fletcher-Powell, selanjutnya akan diimplementasikan menggunakan aplikasi Visual Basic.


(15)

BAB 2

LANDASAN TEORI

2.1Pemrograman Nonlinear

Dalam ilmu fisika, teknik dan ilmu ekonomi demikian juga berbagai ilmu lainnya, banyak masalah yang rumit yang menyangkut perlengkapan, operasi, sirkuit atau proses. Dalam hal ini diharapkan dapat memperkecil dan memperbesar fungsi- fungsi yang dibatasi, fungsi- fungsi objektif, representasi cost, bobot yang dibatasi kendala tertentu.

Di dalam pemrograman nonlinear dikenal 2 (dua) kondisi yaitu mempunyai kendala dan tanpa kendala. Untuk fungsi nonlinear dengan kendala bentuknya adalah:

Optimisasi: Z = f (x) dengan kendala : a x b

yaitu: jika peninjauan dibatasi pada selang berhingga (a,b) untuk kondisi tanpa kendala, maka bentuknya adalah:

Optimisasi: Z = f (x)

di mana f(x) adalah sebuah fungsi nonlinear dari variabel x, dan pencarian nilai optimumnya (maksimum ataupun minimum) ditinjau dari selang tak berhingga (- , ).

Algoritma penentuan harga optimum pemrograman nonlinear sudah banyak dikembangkan dan cukup variatif. Ide dasar metode numerik untuk optimasi nonlinear adalah mulai dengan titik perkiraan masuk akal untuk mencapai titik optimal. Kemudian fungsi objektif dan turunannya pada titik itu dihitung. Berdasarkan hal


(16)

6

tersebut, proses akan bergerak sampai kondisi optimum tercapai atau kriteria penghentian proses terpenuhi.

2.2Pemrograman Nonlinear Tak Berkendala

Pada umumnya pemrograman nonlinear tanpa kendala berbentuk

Optimisasi: Z = f(x) x En

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

1. f(x) dapat diturunkan (differentiable) x*

2. f(x) = 0 : sebuh titik stasioner (stationary point) pada x*

Kondisi cukup (sufficient conditions) untuk x* untuk menjadi lokal minimum dari persamaan tersebut yaitu penambahan untuk kondisi 1 dan 2 di atas. 3. f(xi) > 0 definit positif matriks Hessian (kondisi untuk maksimum adalah

sama, kecuali matriks Hessian dan f(xi) harus definit negatif).

Sebuah pemrograman nonlinear satu variabel tanpa kendala berbentuk:

Optimisasi: Z = f(x)

di mana f(x) adalah sebuah fungsi (nonlinear) dari variabel tunggal x, dan pencarian nilai optimumnya (maksimum dan minimum) ditinjau dari selang tak terhingga (- , ).

Untuk kasus multivariabel tanpa kendala berbentuk:


(17)

7

Sebagai maksimisasi, jika f(x) diganti dengan –f(x), maka semua hasilnya dapat diterapkan pada pemrograman minimisasi. Dalam masalah pemrograman nonlinear, fungsi nonlinear yang akan dioptimalkan disebut fungsi objektif. Setiap titik (x1, x2,……,xn) yang akan koordinatnya tidak negatif yang memenuhi sistem dari

tanpa kendala disebut nilai akhir.

Jadi masalahnya adalah menentukan satu titik nilai akhir yang meminimumkan atau memaksimumkan fungsi objektif.

2.3 Algoritma Fletcher-Powell

Perkembangan teknik turunan berkembang dengan pengenalan metode variabel metrik oleh Davidon (1963). Metode ini dilanjutkan oleh Fletcher dan Powell (1965). Pada umumnya metode tersebut adalah metode yang terbaik untuk teknik optimisasi fungsi nonlinear tanpa kendala.

Metode ini mula-mula dikembangkan untuk fungsi kuadratik definit positif. Untuk fungsi- fungsi tersebut, metode ini akan konvergen menuju optimum paling banyak dalam n- iterasi, dengan n adalah banyaknya variabel fungsi. Hal ini tidak berlaku untuk fungsi objektif umum akan menyerupai fungsi kuadratik definit positif pada saat berada di dekat titik minimum. Jadi kelakuan yang sama dapat diharapkan untuk fungsi- fungsi tersebut pada saat berada dekat titik minimum. Jika fungsi yang tidak konveks, maka tidak ada jaminan konvergensi dalam n-iterasi. Jika metode ini tidak konvergen, maka secara umum dapat dimulai lagi pada setiap iterasi ke n+1.

Metode Fletcher-powell didasarkan pada ide metode Newton Raphson:

) ( ) ( )

( ) 1

( k 1 k

k k k

c H x

x + = -a

-Invers matiks (H(k)-1)didekati dengan hanya menggunakan turunan pertama. Dengan memanfaatkan informasi yang diperoleh dari sebelumnya, konvergensi menuju minimum menjadi lebih cepat.


(18)

8

2.4 Matriks

Matriks adalah susunan segiempat siku-siku dari bilangan yang diatur berdasarkan baris dan kolom. Bilangan-bilangan dalam susunan tersebut dinamakan entri dalam matriks atau disebut juga elemen (unsur). Bentuk penulisan angka-angkanya dikenal sebagai bentuk atau notasi matriks. Untuk batasnya biasanya digunakan: ( ), [ ], atau || ||.

2.4.1 Notasi Matriks

Pada umumnya matriks disimbolkan dengan huruf kapital A, B, C dan lain- lain. Secara lengkap ditulis matriks A = ( ij), artinya, suatu matriks A yang elemen-elemen

aij, di mana indeks i menyatakan baris ke-i dan indeks j menyatakan kolom ke-j dari

elemen tersebut. Pandangan sebuah matriks A = ( ij) di mana i = 1,2,….,m dan j =

1,2,….,n. Maka dapat ditulis:

A =

ú ú ú ú û ù

ê ê ê ê ë é

mn m

m

n n

a a

a

a a

a

a a

a

K M M

M

K K

2 1

2 22

21

1 12

11

Dapat ditulis juga A(mxn) =(aij), di mana (mxn) disebut (ordo) dari matriks A. Ukuran matriks atau ordo matriks dijelaskan dengan menyatakan banyaknya baris (m), dan banyaknya kolom (n) yang terdapat dalam matriks tersebut. Jadi, suatu matriks yang mempunyai m baris baris dan n kolom disebut matriks berordo mxn.


(19)

9

2.4.2 Ope rasi Matriks

1. Penjumlahan Matriks

Jika ke dua matriks mempunyai ordo (ukuran) yang sama, maka penjumlahan pada akan matriks terpenuhi. Misalkan matriks C adalah matriks yang diperoleh dengan menjumlahkan matriks A dan B, sehingga elemen-elemen dari C adalah hasil penjumlahan dari elemen-elemen yang seletak/bersesuaian dari matriks A dan matriks B. Dari penjelasan tersebut dapat ditulis A(m xn) +

B(m xxn) = C(m xn).

Misalkan, jika terdapat matriks:

ú ú ú û ù ê ê ê ë é = ú ú ú û ù ê ê ê ë é = 33 32 31 23 22 21 13 12 11 33 32 31 23 22 21 13 12 11 ) 3 3

( ; (3 3)

b b b b b b b b b x B a a a a a a a a a

A x ,

maka A(3x3) + B(3x3) = C(3x3), atau:

ú ú ú û ù ê ê ê ë é + + + + + + + + + = ú ú ú û ù ê ê ê ë é + ú ú ú û ù ê ê ê ë é 33 33 32 32 31 31 23 23 22 22 21 21 13 13 12 12 11 11 33 32 31 23 22 21 13 12 11 33 32 31 23 22 21 13 12 11 b a b a b a b a b a b a b a b a b a b b b b b b b b b a a a a a a a a a

2. Pengurangan Matriks

Sama halnya pada kasus penjumlahan, pada pengurangan matriks tetap berlaku aturan bahwa ke dua matriks yang dioperasikan harus memiliki ordo yang sama. Sehingga berlaku A(3x3) – B(3x3) = C(3x3)

Misalkan, jika terdapat matriks:

ú ú ú û ù ê ê ê ë é = ú ú ú û ù ê ê ê ë é = 33 32 31 23 22 21 13 12 11 33 32 31 23 22 21 13 12 11 ) 3 3

( ; (3 3)

b b b b b b b b b x B a a a a a a a a a


(20)

10

maka A(3x3) - B(3x3) = C(3x3), atau:

ú ú ú û ù ê ê ê ë é -= ú ú ú û ù ê ê ê ë é -ú ú ú û ù ê ê ê ë é 33 33 32 32 31 31 23 23 22 22 21 21 13 13 12 12 11 11 33 32 31 23 22 21 13 12 11 33 32 31 23 22 21 13 12 11 b a b a b a b a b a b a b a b a b a b b b b b b b b b a a a a a a a a a

3. Perkalian Skalar dengan Matriks

Jika terdapat matriks A(m xn) dan skalar k, di mana k Î R, maka hasil kali kA

adalah matriks yang diperoleh dengan mengalikan entri/elemen dari A dengan skalar k. Dari penjelasan tersebut:

4. Perkalian Matriks dengan Matriks

Pada umumnya matriks tidak komutatif terhadap operasi perkalian yaitu AB BA. Pada perkalian matriks AB, A disebut sebagai matriks pertama dan B adalah matriks ke dua. Syarat dua buah matriks dapat dilakukan operasi perkalian yaitu kolom matriks pertama sama dengan baris pada matriks ke dua. Jika A adalah matriks mxr dan B adalah matriks rxn, maka hasil kali AB adalah matriks mxn yang elemen-elemennya ditentukan sebagai berikut.

Untuk mencari entri dalam baris I dan kolom j dari AB, pilihlah baris I dari matriks A dan kolom j dari matriks B. Lakukan perkalian elemen-elemen yang bersesuaian dari baris dan kolom tersebut kemudian jumlahkan hasil-hasil dari perkalian tersebut.

Sehingga, dapat dituliskan sebagai berikut A(m xr) x B(rxn) = AB(m xn).

ú ú ú ú û ù ê ê ê ê ë é = ú ú ú ú û ù ê ê ê ê ë é × = mn m m n n mn m m n n a k a k a k a k a k a k a k a k a k a a a a a a a a a k kA . . . . . . . . . 2 1 2 22 21 1 12 11 2 1 2 22 21 1 12 11 K M M M K K K M M M K K


(21)

11

Jika terdapat matriks

. 23 22 21 13 12 11 ) 3 2 ( ; 32 31 22 21 12 11 ) 2 3 ( ú û ù ê ë é = ú ú ú û ù ê ê ê ë é = b b b b b b x B a a a a a a

A x ,

maka A(mxr) - B(rxn) = AB(m xn), atau:

ú ú ú û ù ê ê ê ë é + + + + + + + + + = ú û ù ê ë é ú ú ú û ù ê ê ê ë é 23 32 13 31 22 32 12 31 21 32 11 31 23 22 13 21 22 22 12 21 21 22 11 21 23 12 13 11 22 12 12 11 21 12 11 11 23 22 21 13 12 11 32 31 22 21 12 11 . b a b a b a b a b a b a b a b a b a b a b a b a b a b a b a b a b a b a b b b b b b a a a a a a

2.4.3 Transpose Matriks

Jika suatu matriks A=(aij)berordo mxn, maka transpose dari A adalah matriks )

( ij

T

a

A = berordo nxm yang diperoleh dari matriks A dengan menuliskan baris ke-i dari A; i=1,2…, m sebagai kolom ke-i dari matriks AT. Jika matriks C berordo 3x2,

maka dapat dituliskan C =

ú ú ú û ù ê ê ê ë é 32 31 22 21 12 11 C C C C C C

; sehingga CT = ú

û ù ê ë é 32 22 12 31 21 11 C C C C C C berordo 2x3.

2.4.4 Invers Matriks

Sebuah matriks bujur sangkar A berordo n x n:

A = ú ú ú ú û ù ê ê ê ê ë é mn m m n n a a a a a a a a a K M M M K K 2 1 2 22 21 1 12 11


(22)

12

Jika terdapat sebuah matriks B, maka AB = BA = I disebut sebuah invers. matriks B disebut invers dari matriks A, atau dapat ditulis B = A-I sebagai invers dari matriks A. Contoh invers matriks:

1. Jika A(2x2) = ú

û ù ê ë é 22 21 12 11 a a a a

, maka berlaku:

A-I =

21 12 22 11 11 21 12 22 a a a a a a a a -ú û ù ê ë é

-;

dan a11a22 -a12a21 0

2. Jika M(3x3) =

ú ú ú û ù ê ê ê ë é 33 32 31 23 22 21 13 12 11 a a a a a a a a a

Maka, M-I =

) det( ) ( M M adj

; dan det(M) 0

di mana ú ú ú û ù ê ê ê ë é -= ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( 33 32 31 23 22 21 13 12 11 a kov a kov a kov a kov a kov a kov a kov a kov a kov M adj

dan kov(a11) menyatakan kofaktor dari baris ke-i dan kolom ke-j yang didefenisikan sebagai: ú û ù ê ë é = ú û ù ê ë é = 33 31 23 21 12 33 32 23 22

11) ; ( )

( a a a a a kov a a a a a

kov dan seterusnya.

3. Untuk A(m x n),n 3, biasanya akan lebih mudah menyelesaikannya dengan metode transformasi elementer.


(23)

13

2.5 Penyelidikan Selang Tiga Titik

Penyelidikan selang tiga titik adalah salah satu metode untuk mencari titik optimum. Penyelidikan selang tiga titik ini adalah prosedur penyelidikan berjarak sama yang paling efisien dalam hal mencapai toleransi yang diinginkan dengan jumlah langkah perhitungan yang minimal. Penelitian ini juga merupakan salah satu dari beberapa penyelidikan sekuensial yang termudah untuk diprogramkan ke dalam komputer.

Di sini selang yang ditinjau dibagi ke dalam empat bagian dan fungsi objektifnya dihitung pada ke tiga buah titik interior yang berjarak sama. Tentukan titik interior yang menghasilkan nilai terbaik bagi fungsi objektif (dalam hal ke tiga titik interior ini setara, pilihlah secara sembarang salah satunya) dan bagikan subselang yang berpusat di titik interior ini ke dalam empat bagian lagi untuk menggantikan selang yang ditinjau semula. Dengan mengikutsertakan titik-titik interior yang setara, terdapat 10 buah pola pengambilan contoh sampling yang mungkin, salah satunya diilustrasikan dalam Gambar 2.1.

Gambar 2.1 Metode Pencarian Tiga Titik

2.6 Visual Basic

Visual Basic adalah salah satu development tools untuk membangun aplikasi dalam lingkungan Windows. Dalam pengembangan aplikasi, Visual Basic menggunakan pendekatan visual untuk merancang user interface dalam bentuk form, sedangkan untuk kodingnya menggunakan dialek bahasa Basic yang cenderung mudah dipelajari.

x1 x2 x3

Jika yang diselidiki adalah maksimum, maka pertahankan

Jika yang diselidiki adalah minumum, maka pertahankan


(24)

14

Visual Basic telah menjadi tools yang terkenal bagi para pemula maupun para developer.

Dalam lingkungan windows user interface sangat memegang perana n penting, karena dalam pemakaian aplikasi yang dibuat, pemakai senantiasa berinteraksi dengan user interface tanpa menyadari dibelakangnya berjalan instruksi-instruksi program yang mendukung tampilan dan proses yang dilakukan.


(25)

BAB 3

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


(26)

16

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 awalxˆ (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 nilaixˆ 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 vectorxˆ yang baru dan ambil Y = B – C. 7. Hitunglah matriks n x n

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

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.


(27)

17

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


(28)

18

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


(29)

19

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.

LANGKAH 1


(30)

20

(

) (

)

(

) (

)

( ) (

)

(

) (

)

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 LANGKAH 2

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

) (x GB

f +l maksimum.

Untuk memaksimumkan nilailpada 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


(31)

21

( )

(

)

(

( )

)

( )

( )

( )

( )

(

)

(

( )

)

( )

(

)

(

( )

)

( )

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


(32)

22

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;


(33)

23

( )

(

)

(

(

)

)

( )

( )

(

ˆ

)

(

ˆ

(

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 x13adalah 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 LANGKAH 3


(34)

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

Hitunglah b = f(xˆ)untuk nilaixˆ 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

LANGKAH 6

Hitung Cf |xˆuntuk vektorxˆ 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


(35)

25

LANGKAH 7 Hitung matriks n x n

L(1/DTY) dan M = (-1/YTGY)GYYTG

[

]

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


(36)

26 ú û ù ê ë é -= ú û ù ê ë é -× -= × -= 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

LANGKAH 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 LANGKAH 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


(37)

27

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 LANGKAH 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 LANGKAH 4

Hitunglah β = ƒ( xˆ) untuk nilaixˆ 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

LANGKAH 5

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

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

Dan

( )

( )

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


(38)

28

Jadi pemecahannya adalah * 1

X = 311,803 km, * 2

X = 369,143 km dengan

*

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:

Private Sub Command1_Click() Dim i1 As Double


(39)

29

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 - nf3) ^ 2) + ((X2 - nf4) ^ 2)) ^ 0.5))


(40)

30

'===================== 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


(41)

31

'===================== 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

L1 = Round((1 / DTY) * DDT1, 3) L2 = Round((1 / DTY) * DDT2, 3)


(42)

32

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


(43)

33

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

Berikut tampilan aplikasi dijalankan:


(44)

34

Hasil tampilan output setelah diproses:


(45)

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.


(46)

DAFTAR PUSTAKA

Bronson, R. 1996. Teori dan Soal – soal Operations Research. Jakarta: Erlangga. Nash, G. Stephen.1996. Linear and Nonlinear Programming. McGrow-Hill

International.

Bunday B. D. 1984. Basic Optimisation Methods. USA: Edward Arnold (Publishers) Ltd.

Basuki, Achmad Drs.2005. Metode Numerik dan Algoritma Komputansi. Penerbit ANDI, Yogyakarta.

Basaruddin. T.2007. Komputasi Numerikal. Lembaga Penerbit FEUI. Jakarta.

Hadi, Rahadian.2001. Pemrograman Windows API dengan Microsoft Visual Basic. Jakarta: PT. Elex Media Komputindo.

Yuswanto.2000. Panduan Belajar Microsoft Visual Basic 5.0. Kawan Pustaka.

Nash, G. Stephen.1996. Linear and Nonlinear Programming. McGrow-Hill International.

S.S, RAO.1987. Optimization Theory and Application. Willey Eastern Limited, New Delhi.


(1)

'===================== 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

L1 = Round((1 / DTY) * DDT1, 3) L2 = Round((1 / DTY) * DDT2, 3)


(2)

32

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


(3)

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

Berikut tampilan aplikasi dijalankan:


(4)

34

Hasil tampilan

output

setelah diproses:


(5)

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.


(6)

DAFTAR PUSTAKA

Bronson, R. 1996. Teori dan Soal – soal Operations Research. Jakarta: Erlangga.

Nash, G. Stephen.1996.

Linear and Nonlinear Programming

. McGrow-Hill

International.

Bunday B. D. 1984. Basic Optimisation Methods. USA: Edward Arnold (Publishers)

Ltd.

Basuki, Achmad Drs.2005.

Metode Numerik dan Algoritma Komputansi

. Penerbit

ANDI, Yogyakarta.

Basaruddin. T.2007.

Komputasi Numerikal

. Lembaga Penerbit FEUI. Jakarta.

Hadi, Rahadian.2001.

Pemrograman Windows API dengan Microsoft Visual Basic.

Jakarta: PT. Elex Media Komputindo.

Yuswanto.2000.

Panduan Belajar Microsoft Visual Basic 5.0

.

Kawan Pustaka.

Nash, G. Stephen.1996.

Linear and Nonlinear Programming

. McGrow-Hill

International.

S.S, RAO.1987. Optimization Theory and Application. Willey Eastern Limited, New

Delhi.