Diska Armeina
NIM. 20119005
Institut Teknologi Bandung
2020
I. PENDAHULUAN
Metode Barrier adalah salah satu metode yang digunakan untuk menyelesaikan masalah optimasi
berkendala. Metode Barrier merupakan metode titik interior yang mendekati titik optimum dari
dalam daerah feasible dengan mengubah masalah optimasi berkendala menjadi submasalah
optimasi tak berkendala[1]. Misal diberikan suatu masalah optimasi fungsi konveks sebagai
berikut [2].
𝑠. 𝑡 ℎ𝑖 (𝑥) ≤ 0, 𝑖 = 1, … , 𝑚
𝐴𝑥 = 𝑏
dengan 𝑥 merupakan anggota himpunan tak kosong {𝑥: ℎ𝑖 (𝑥) < 0, 𝑖 = 1, … , 𝑚}. Dengan fungsi
log barrier ini, akan diselesaikan masalah optimasi berkendala (1) menjadi masalah optimasi tak
berkendala sebagai berikut.
𝑚
1
min 𝑓(𝑥) − ∑ log(−ℎ𝑖 (𝑥)) (3)
𝑥 𝑡
𝑖=1
dengan 𝑡 merupakan parameter yang apabila 𝑡 → ∞ akan mengahasikaln solusi optimum. Nilai 𝑡
akan diperbarui untuk tiap iterasinya dengan persamaan (4) berikut [3].
1
𝑡𝑘+1 = (1 + ) 𝑡𝑘 (4)
13√𝑣
Pencarian arah dalam menyelesaikan masalah ini akan digunakan metode newton sebagai
berikut.
Berikut ini algoritma penyeselaian masalah optimasi berkendala dengan metode Barrier.
Pada Laporan ini akan diselesaikan masalah optimasi berkendala sebagai berikut.
𝑠. 𝑡 𝑥12 − 4 ≤ 0
𝑒 −𝑥1 − 𝑥2 ≤ 0
𝑥1 + 2𝑥2 − 4 ≤ 0
𝑥1 , 𝑥2 ≥ 0
Secara grafis, 𝑓(𝑥) dinyatakan pada Gambar 1. Penyelesaian masalah optimasi berkendala ini akan
diambil dua titik awal yang berbeda yaitu (4, 3) dan (3, 3) dengan 𝑚 banyaknya kendala adalah
3, 𝜏 = 0.5 dan nilai toleransi 1e-4. Perhitungan pada laporan ini dibantu oleh perangkat lunak
Matlab R2017a.
Pertama dilakukan pengujian dengan titik awal 𝑥0 = (4, 3). Hasil pertihungan dengan Matlab
diperoleh titik optimum untuk masalah optimasi berkendala ini dengan galat 1e-4 dicapai
pada iterasi ke-5 dengan nilai 𝑥𝑜𝑝𝑡 = (2, 1), 𝑓(𝑥𝑜𝑝𝑡 ) = 34. Hasil iterasi ini ditunjukkan pada
Tabel 1 dan secara visual, ditampilkn pada Gambar 2.
TABEL 1. Hasil Iterasi Metode Barrier dengan 𝑥0 = (4, 3)
Berdasarkan hasil dan pembahasan, dengan titik awal 𝑥0 = (4,3) dan (3, 3) diperoleh titik
optimum untuk masalah optimasi berkendala berikut
min 𝑓(𝑥) = (𝑥1 − 5)2 + (𝑥2 − 6)2
𝑥
𝑠. 𝑡 𝑥12 − 4 ≤ 0
𝑒 −𝑥1 − 𝑥2 ≤ 0
𝑥1 + 2𝑥2 − 4 ≤ 0
𝑥1 , 𝑥2 ≥ 0
adalah 𝑥𝑜𝑝𝑡 = (2, 1) dengan 𝑓(𝑥𝑜𝑝𝑡 ) = 34 yang dicapai pada iterasi ke-5 untuk masing-masing
titik dengan nilai toleransi 1e-4.
Sebagai bahan diskusi, masukan, belajar dan perbaikan kedepannya bagi penulis, ada beberapa hal
yang ingin namun belum sempat terbahas oleh penulis dari laporan ini sebagai berikut.
1. Untuk beberapa titik awal yang berbeda, pada metode dan program ini menghasilkan titik
optimum yang berbeda-beda
2. Untuk beberapa titik awal misal 𝑥0 = (12, 12) hasil iterasi tidak konvergen ke titik optimum
3. Terkait perilaku nilai parameter 𝑡 dan 𝑣 pada metode Barrier ini dan perbandingan dengan
metode-metode lainnya dirasa menarik untuk dianalisis pada laporan berikutnya untuk dapat
mengetahui metode mana yang paling efisien dalam menyelesaikan masalah optimasi
berkendala
V. REFERENSI
[1] H. W. Berhe, Barrier function methods using Matlab, Scholarly Journal of Mathematics and
%% plot awal
[x1new, x2new] = meshgrid(0:0.5:7,0:0.5:7);
f = (x1new-5).^2 + (x2new-6).^2;
h_1=x1new.^2-4;
h_2=exp(-x1new)-x2new;
h_3=x1new+2*x2new-4;
% surf(x1new,x2new,f)
grr = contourf(x1new,x2new,f,15, 'ShowText','on');
hold on
grr = contour(x1new,x2new,h_1,1,'b','Linewidth',1.5);
hold on
grr = contour(x1new,x2new,h_2,1,'m','Linewidth',1.5);
hold on
grr = contour(x1new,x2new,h_3,1,'r','Linewidth',1.5);
% %grr = contour(x1new,x2new,f,10,'ShowText','on')
colormap(flipud(summer(30)))
%title('Kontur Fungsi')
xlabel('x1')
ylabel('x2')
hold on
%% Insialisasi
syms x1 x2
%fungsi objektif
f_obj=((x1-5)^2)+((x2-6)^2);
% constrain
h1=x1^2-4;
h2=exp(-x1)-x2;
h3=x1+2*x2-4;
%Fungsi Barrier
bf=-(log(-h1)+log(-h2)+log(-h3));
gradf=gradient(bf,[x1;x2]);
hess=hessian(bf,[x1;x2]);
fb=matlabFunction(f_obj,'vars',{[x1;x2]});
H=matlabFunction(hess,'vars',{[x1;x2]});
dF=matlabFunction(gradf,'vars',{[x1;x2]});
%inisialisasi
tol=10^-5;
iter=0;
iter_max = 20;
x=[4;3];
c=[1;1];
t=0.2;
m=3;
v=2;
tau=0.5;
err = 1;
galat = 1;
X = [x'];
%% display
disp('Hasil Iterasi Metode Barrier')
disp('================================================')
disp(' i x1 x2 f galat')
disp('================================================')
%% Main Code
while galat >tol && iter<iter_max
i=0;
s=1;
while i<40
y=-inv(H(x))*(t*c+dF(x));
x_new=x-s*y;
if fb(x_new)<fb(x)
s=tau*s;
end
i=i+1;
end
if (m/t) < tol
break
else
t_new=1+(1/(13*sqrt(v)))*t;
end
galat = (abs(fb(x_new)-fb(x)));
fprintf('%2d\t %5.5f\t %5.5f\t %5.5f\t
%5.5f\n',iter+1,x_new(1),x_new(2),fb(x_new),galat)
x=x_new;
X=[X;x'];
t=t_new;
iter=iter+1;
end
%% Plot iterasi
plot(X(:,1),X(:,2),'-k','linewidth',1.5)
hold on
plot(X(:,1),X(:,2),'or','linewidth',1.5)
plot(X(end,1),X(end,2),'o','MarkerFaceColor','green','MarkerEdgeColor','k')
plot(X(1,1),X(1,2),'o','MarkerFaceColor','blue','MarkerEdgeColor','k')
xlabel('x1')
ylabel('x2')
legend('f','h1','h2','h3','x_opt','x0')