Anda di halaman 1dari 9

LAPORAN METODE OPTIMASI LANJUT

PENYELESAIAN MASALAH OPTIMASI NONLINEAR BERKENDALA DENGAN


MENGGUNAKAN METODE BARRIER

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].

min 𝑓(𝑥) (1)


𝑥

𝑠. 𝑡 ℎ𝑖 (𝑥) ≤ 0, 𝑖 = 1, … , 𝑚

𝐴𝑥 = 𝑏

dimana 𝑓, ℎ1 , … , ℎ𝑚 merupakan fungsi konveks dan difererensiabel pada ℝ𝑛 . Selanjutnya,


diberikan fungsi log barrier sebagi berikut.
𝑚

𝜙(𝑥) = − ∑ log(−ℎ𝑖 (𝑥)) (2)


𝑖=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√𝑣

dengan 𝑣 merupakan parameter fungsi Barrier.

Pencarian arah dalam menyelesaikan masalah ini akan digunakan metode newton sebagai
berikut.

𝑥𝑘+1 = 𝑥𝑘 − [∇2 𝐹 (𝑥)][𝑡𝑘 𝑐 + ∇𝐹(𝑥)] (5)

Berikut ini algoritma penyeselaian masalah optimasi berkendala dengan metode Barrier.

Langkah 1: Inisialisasi titik awal 𝑥0 , 𝑡0 , 𝜏, banyak kendala 𝑚 dan nilai toleransi 𝜖


Langkah 2: While galat > 𝜖
Langkah 3: Atur 𝑖 = 0 dan 𝑠 = 1
Langkah 4: While 𝑖 < 𝑖𝑚𝑎𝑥
Langkah 5: Atur 𝑦 = −[∇2 𝐹(𝑥)]−1 [𝑡𝑘 𝑐 + ∇𝐹(𝑥)]
Langkah 6: Atur 𝑥𝑘+1 = 𝑥 − 𝑠𝑦
Langkah 7: if 𝑓(𝑥𝑘+1 ) < 𝑓(𝑥0 )
→ 𝑠𝑘+1 = 𝜏𝑠
end(if)
Langkah 8 : Atur 𝑖 = 𝑖 + 1
end(while)
Langkah 9: if 𝑚/𝑡 < 𝜖
→ 𝑺𝑻𝑶𝑷
else update 𝑡 persamaan (4)
end(if)

Langkah 10: Atur galat = ||𝑓(𝑥𝑘+1 ) − 𝑓(𝑥)||


Langkah 11: Update 𝑥, 𝑡 dan iterasi
end(while)
II. HASIL DAN PEMBAHASAN

Pada Laporan ini akan diselesaikan masalah optimasi berkendala sebagai berikut.

min 𝑓(𝑥) = (𝑥1 − 5)2 + (𝑥2 − 6)2


𝑥

𝑠. 𝑡 𝑥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.

GAMBAR 1. Grafik Permukaan dan Kontur Fungsi 𝑓(𝑥)

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)

GAMBAR 2. Hasil Iterasi Solusi Metode Barrier dengan 𝑥0 = (4, 3)


Selanjutnya diambil titik awal lain yaitu 𝑥0 = (3, 3). Hasil yang diperoleh adalah dengan
titik awal tersebut titik minimum diperoleh pada 𝑥𝑜𝑝𝑡 = (2, 1) dengan 𝑓(𝑥𝑜𝑝𝑡 ) = 34 yang
dicapai pada iterasi ke-5 dengan galat 1e-2.

GAMBAR 3. Hasil Iterasi Solusi Metode Barrier dengan 𝑥0 = (3, 3)


III. KESIMPULAN

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.

IV. SARAN DAN PERBAIKAN

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

Computer Science Vol. 1(3), pp. 38-50 ( 2012)

[2] J. Nocedal., Wright, J. Stephen., Numerical Optimization (1999)

[3] Niao He, Lecture 7: Introduction to Optimization Algorithms – September (2016)


VI. LAMPIRAN

clear all; clc; close all

%% 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')

Anda mungkin juga menyukai