Buatlah suatu kasus penembakan meriam, tentukan sendiri (Vomin, Vomaks, αmin, αmaks, P, Q, R dan S, kemudian gunakan metode pencarian Goleden Searching, Steepest descent, Monte Carlo untuk salah satu dari versi fungsi biaya untuk mendapatkan tabel (S, α, Vo) yang seminimum mungkin biayanya.
Penyelesaian :
Kasus Penembakan suatu meriam, dapat digambarkan seperti grafik berikut, misalkan letak meriam letaknya berada pada titik A, dan sasaran penembakan berada pada titik B :
Misalkan kita ambil nilai−nilai jarak tembak/sasaran(S),gravitasi (g), kecepatan awal minimum(Vomin), kecepatan awal maksimum (Vomaks), sudut elevasi maksimum dan minimum (αmin & αmaks), dengan biaya (P, Q, dan R) sebagai berikut :
Dari persamaan fungsi biaya diatas, akan dicari biaya minimum (α dan Vo ) dengan 3 metode searching sebagai berikut :
I. Metode Golden Searching
Prinsip dari metode golden searching, dapat diilustrasikan seperti gambar diatas, untuk mencari batu yang paling kecil, maka melangkah, kemudian ambil batu, bandingkan dengan sebelumnya, buang yang lebih besar, kemudian ulangi lagi. Intinya bahwa “semakin kecil langkah yang kita lakukan, maka akan semakin teliti pelacakan. Jika langkah diperkecil tetapi hasil yang diperoleh tidak lagi berbeda, maka dapat diyakini bahwa memang itulah hasilnya”
Pada Kasus penembakan meriam, Dengan metode golden searching, J(α,Vo) dihitung dari αmin s/d αmaks dan V0-min s/d V0-maks dengan langkah :
Maka Pelacakan dilakukan dengan langkah demi langkah bisa dari αmin s/d αmaks kemudian V0-min s/d V0-maks, setiap kali diperoleh nilai J(α,Vo) yang lebih besar atau lebih kecil sesuai dengan pesanan maks dan min maka ia disimpan.
Untuk kasus diatas, Fungsi biaya yang akan diminimasi ialah:
Dengan menggunakan program matlab, dapat dicari sudut elevasi, kecepatan awal dan biaya minimum dengan listing program sebagai berikuti:
% Penentuan sudut elevasi, kecepatan awal dan biaya minimum
% Using line searching method or Golden searching method
% Searching Alpha,Vo
clear
clc
S=input('Input jarak sasaran tembak (m)= ');
alphalb=input('input nilai batas minimum alpha =');
alphaub=input('input nilai batas maksimum alpha =');
Volb=input('input nilai batas minimum Vo =');
Voub=input('input nilai batas maksimum Vo =');
N=input('input jumlah step=');
dalpha=(alphaub-alphalb)/N;
dVo=(Voub-Volb)/N;
No=0;
clc
g=10;
disp(' ')
%disp([' "Jarak tembak = num2str(x), meter "'])
disp(' ')
disp('============================================================');
disp('No. Sudut Elevasi Kecepatan Biaya minimum ');
disp(' (deg) Vo(m/dtk) Jmin (Rp) ');
disp('============================================================');
disp(' ');
for alpha=alphalb:dalpha:alphaub
for Vo=Volb:dVo:Voub
end
Biaya=(50*Vo^(2)*(sin(alpha)*sin(alpha)))+ ((500*S)/(Vo*cos(alpha)))+2000*Vo;
format short g
No=No+1;
sudut=alpha*180/pi;
kecepatan=sqrt((g*S)/sin(2*alpha));
fprintf('%g%' ,No), disp([sudut, kecepatan, Biaya])
end
disp('============================================================')
Hasil program :
Setelah memasukan nilai alpha(min & maks) dan kecepataan awal ( maks & min ) serta jumlah langkah N = 100, dan jarak S = 500 m maka diperoleh output program :
===========================================
No. Sudut Elevasi Kecepatan Biaya minimum
(deg) Vo(m/dtk) Jmin (Rp)
===========================================
1 0 Inf 6.0083e+005
2 0.89954 399.08 6.0194e+005 à biaya minimum tapi tdk memenuhi kendala
3 1.7991 282.26 6.0527e+005 àmemenuhi kendala kecepatan dan biaya minimum
4 2.6986 230.56 6.1081e+005
... ..... ......... ...........
32 27.886 77.765 1.5853e+006
33 28.785 76.966 1.6444e+006
..... ...... ....
99 88.155 278.75 5.1212e+006
100 89.055 389.33 5.1493e+006
=========================================
setelah menjalankan program diatas untuk beberapa jarak tembakan (yang ditampilkan hanya jarak S= 500 m), dan setiap jarak dipilih biaya paling minimum dan dengan kecepatan awal yang memenhui syarat kendala, maka diperoleh tabel sebagai berikut :
Jarak Sasaran (m) | Sudut Elevasi (derajat) | Kecepatan awal (m/s) | Biaya Minimum (Rp) |
500 | 1.7991 | 282.26 | 605,270.00 |
600 | 2.6986 | 252.56 | 610,980.00 |
700 | 2.6986 | 272.8 | 611,140.00 |
800 | 2.6986 | 291.64 | 611,310.00 |
900 | 3.5982 | 268.04 | 619,230.00 |
1000 | 3.5982 | 282.54 | 619,390.00 |
II Metode Gradient Searching Descent
Metode gradient searching memulai pencarian dalam arah lereng curam. arah ini disimpan untuk setiap langkah baru, sampai minimum telah ditemukan. Kemudian arah pencarian baru ditentukan dan melakukan proses pencarian terus menerus
Denga fungsi biaya yang sama pada metode golden searching, maka listing program matlab metode gradient descent sebagai berikut:
% Penentuan sudut elevasi, kecepatan awal dan biaya minimum
% Using gradient Descent Method
% Searching alpha,Vo
clear
clc
S=input('Input jarak sasaran tembak (m)= ');
alphalb=input('input nilai batas minimum alpha =');
alphaub=input('input nilai batas maksimum alpha =');
Volb=input('input nilai batas minimum Vo =');
Voub=input('input nilai batas maksimum Vo =');
% Penentuan titik awal penembakan
alpha=input('input nilai alpha =');
Vo=input('input nilai Vo =');
dalpha=0.01;
dVo=dalpha
No=0;
clc
g=10 ;
disp(' ')
disp(' ')
disp('============================================================');
disp('No. Sudut Elevasi Kecepatan Biaya minimum ');
disp(' (deg) Vo(m/dtk) Jmin (Rp) ');
disp('============================================================');
disp(' ');
for alpha=alphalb:dalpha:1-dalpha
for Vo=-1+dalpha:dVo:Voub
end
Biaya=(50*Vo^(2)*(sin(alpha)*sin(alpha)))+ ((500*S)/(Vo*cos(alpha)))+2000*Vo;
format short g
No=No+1;
sudut=alpha*180/pi;
kecepatan=sqrt((g*S)/sin(2*alpha));
fprintf('%g%' ,No), disp([sudut, kecepatan, Biaya])
end
disp('============================================================')
Hasil program di atas ialah:
Setelah menjalankan program beberapa kali sesuai dengan jarak tembakan, demikian pula menginput nilai alpha dan kecepatan awal sembarang sebagai titik awal pencarian ( contoh dlm program ini α = 0.9 dan Vo = 200) maka diperoleh tabel berikut :
Jarak Sasaran (m) | Sudut Elevasi (derajat) | Kecepatan awal (m/s) | Biaya Minimum (Rp) |
500 | 1.7189 | 288.76 | 604,880.00 |
600 | 2.2918 | 274.01 | 608,200.00 |
700 | 2.2918 | 295.96 | 608,360.00 |
800 | 2.8648 | 283.08 | 612,580.00 |
900 | 3.4377 | 274.19 | 617,680.00 |
1000 | 3.4377 | 289.02 | 617,850.00 |
III. Metode Monte Carlo
Metode pencarian acak adalah suatu metode dimana solusi dicari secara acak dan diulang-ulang sampai dihasilkan solusi yang diharapkan. Ada beberapa hal yang perlu diperbaiki dari konsep pencarian acak ini, antara lain:Tidak semua nilai pada solusi harus diubah pada setiap iterasi. Bila sudah solusi mendekati target tidak perlu perubahan yang terlalu besar. Perlu pertimbangan bahwa munculnya bilangan acak sangat tergantung pada distribusi bilangan acak yang digunakan.
Metode Monte Carlo memperbaiki metode pencarian acak ini dengan mempertimbangkan kedua hal di atas, sehingga metode ini menjadi metode simulasi yang banyak digunakan. Metode Monte Carlo sebenarnya merupakan metode pencarian acak, tetapi dengan beberapa perbaikan, yaitu: tidak semua nilai pada solusi diacak ulang, tetapi dipilih satu nilai saja di antara barisan nilai solusi, dan kemungkinan acak dari setiap kejadian solusi.
Pada kasus penembakan meriam, untuk mencari biaya minimum, diambil bilangan random atau acak antara alpha minimum dan alpha maksimum, antara Vo min dan Vo maks, sampai diperoleh biaya minimum (Jmin). Berikut listing program MATLAB metode Monte Carlo dari kasus diatas :
clc
S=input('Input jarak sasaran tembak (m)= ');
alphalb=input('input nilai batas minimum alpha =');
alphaub=input('input nilai batas maksimum alpha =');
Volb=input('input nilai batas minimum Vo =');
Voub=input('input nilai batas maksimum Vo =');
alpha = alphalb + (alphaub-alphalb).*rand(10,10);
sudut=alpha*180/pi
Vo = Volb + (Voub-Volb).*rand(10,10)
Biaya=50*Vo*Vo*sin(alpha)*sin(alpha)+ (500*S)./(Vo*cos(alpha))+ 2000*Vo
Jmin=min(Biaya)
Catatan : pada Matlab untuk membangun nilai bilangan acak terdistribusi uniform dari interval [a,b],dengan matrik [100 x 1] digunakan command : misal r = a + (b-a).*rand(100,1); pada listing diatas digunakan matriks [10 x 10]
Hasil program untuk berbagai jarak tembakan dibuat dalam tabel berikut, (hasil keluaran program hanya ditampilkan untuk S = 500 m ) :
Jarak Sasaran (m) | Sudut Elevasi (derajat) | Kecepatan awal (m/s) | Biaya Minimum (Rp) |
500 | 17.693 | 290.07 | 410,950,000.00 |
600 | 37.386 | 124.14 | 272,350,000.00 |
700 | 84.0183 | 139.5673 | 242,530,000.00 |
800 | 17.5199 | 141.6013 | 251,400,000.00 |
900 | 28.7494 | 195.4019 | 315,200,000.00 |
1000 | 3.4377 | 289.02 | 183,640,000.00 |
Kesimpulan
Dari ke tiga metode penentuan nilai Jmin dengan metode yang berbeda, perbandingan hasilnya dapat dilihat di bawah ini:
Jmin | Metode Searcing | ||
Golden Searcing | Gradienr Descent | Monte Carlo | |
S= 500 m | 223.0167e+003 | 223.2238e+003 | 223.0563e+003 |
S= 600 m | 249.8907e+003 | 249.9017e+003 | 249.9193e+003 |
S= 700 m | 275.2378e+003 | 275.2608e+003 | 275.3709e+003 |
S= 800 m | 299.3588e+003 | 299.3714e+003 | 299.3714e+003 |
S= 900 m | 322.4649e+003 | 323.0376e+003 | 322.6992e+003 |
S= 1000 m | 344.7096e+003 | 345.7850e+003 | 344.7040e+003 |
- selisih hasil antara golden searching dengan monte carlo sebesar 0,0178 %
- selisih hasil antara golden searching dengan Gradient Descent sebesar 0,0928 %
- selisih hasil antara Monte Carlo dengan Gradient Descent sebesar 0,075 %
Comments (0)
Posting Komentar