Anda di halaman 1dari 23

Lie Hendri Hariwijaya Optimisasi dalam Rek.

Struktur
25013020

TUGAS 4 Optimisasi Resizing dengan Multi Variabel

Sebuah struktur statis tak tentu yang memiliki satu derajat ketidaktentuan dibebani dengan
gaya 10000 kg pada salah satu joint-nya. Batangnya adalah silinder tidak pejal. Struktur
tersebut tampak seperti berikut.

Gambar 1 Struktur statis tak tentu serta penampang batangnya

Penomoran DOF (degree of freedom) pada struktur adalah seperti berikut.

Gambar 2 Penomoran DOF struktur

1
Lie Hendri Hariwijaya Optimisasi dalam Rek. Struktur
25013020

Data struktur tersebut adalah sebagai berikut.

Tabel 1 Data batang (satuan kg-cm)

Batang E A Δx Δy DOF1 DOF2 DOF3 DOF4 fy


1 2100000 0 0 300 5 6 1 2 2400
2 2100000 0 300 300 5 6 3 4 2400
3 2100000 0 -300 300 7 8 1 2 2400
4 2100000 0 0 300 7 8 3 4 2400
5 2100000 0 300 0 1 2 3 4 2400

Luas penampang A untuk setiap batang terlebih dahulu diatur bernilai nol karena pada proses
optimisasi, nilai ini akan dirubah ke suatu nilai awal. Data dari tabel di atas disimpan dalam
"param_elm.txt" agar mudah di-load oleh MATLAB yang disajikan sebagai berikut.

Gambar 3 File param_elm.txt

Tabel 2 Data beban dan nomor dan sifat DOF (satuan kg)

No. DOF Bebas? Beban 1


1 1 10000
2 1 0
3 1 0
4 1 0
5 0 0
6 0 0
7 0 0
8 0 0

DOF bebas ditandai dengan angka 1 sedangkan yang tidak bebas ditandai angka 0. Beban
terpusat 10000 kg bekerja searah nomor DOF 1. Tabel di atas disimpan dalam file
"gaya_dof.txt" agar dengan mudah di-load oleh MATLAB yang disajikan sebagai berikut.

2
Lie Hendri Hariwijaya Optimisasi dalam Rek. Struktur
25013020

Gambar 4 File gaya_dof.txt

Berdasarkan beban yang bekerja, struktur akan dioptimalkan volumenya (sebanding dengan
beratnya) tetapi harus memenuhi ketentuan (constraint) seperti tegangan batang tidak lebih
dari tegangan leleh material, tegangan tekuknya tidak dilewati, dan lain-lain. Keterangan
lebih detil adalah sebagai berikut:

 Fungsi objektif/tujuan: (ekivalen dengan nilai volume total struktur)


5

F (re j , ri j )   L j  re j 2  ri j 2 
j 1

dimana:
j  nomor batang  1, 2, 3, 4, dan 5
re j  jari-jari luar penampang batang j
ri j  jari-jari dalam penampang batang j
L j  panjang batang j

 Persamaan kendala (constraint ):


 syarat tegangan leleh:
 j  f y atau  j  f y  0 diperoleh g j   j  f y

 j   f y atau   j  f y  0 diperoleh p j   j  f y

 syarat tekuk Euler:


2 E j I j 
j   dimana I j  
re j 4  ri j 4 

L j 2  re j 2  ri j 2  4

 E  re
2
j j
2
 ri j 2  
2 E j re j 2  ri j 2  0
j  2
atau   j  2
4L j 4L j

diperoleh h j   j 

2 E j re j 2  ri j 2 
2
4Lj

3
Lie Hendri Hariwijaya Optimisasi dalam Rek. Struktur
25013020

 syarat geometri:
ri j  1 atau 1  ri j  0 diperoleh q j  1  ri j

re j  1,1ri j atau 1,1ri j  re j  0 diperoleh s j  1,1ri j  re j

keterangan:
 j  tegangan batang j
E j  modulus elastisitas batang j
I j  momen inersia batang j
f y  tegangan leleh material

Secara geometri, pada penampang batang jari-jari dalam ri j dibatasi harus sama dengan atau

lebih besar dari 1 cm. Sedangkan jari-jari luar re j harus sama dengan atau lebih besar 10%

dari jari-jari dalam ri j . Dengan demikian luas penampang masing-masing batang tidak akan

sama dengan nol atau nilai negatif.

Metode Fungsi Penalti (Penalty Function Method)

Metode fungsi penalti adalah metode optimisasi berkendala yang merubah optimisasi
berkendala menjadi optimisasi nirkendala. Dengan begitu, optimisasi nirkendala tersebut
dapat diselesaikan dengan salah satu metode untuk optimisasi nirkendala.

Fungsi penalti dibedakan menjadi fungsi penalti interior dan fungsi penalti eksterior. Pada
fungsi penalti interior, nilai awal variabel-variabel yang ingin dioptimalkan harus diatur agar
memenuhi semua persamaan kendala yang tersedia. Sedangkan fungsi penalti eksterior tidak
memiliki syarat tersebut. Oleh karena itu dipilih metode fungsi penalti eksterior karena dirasa
sulit menentukan nilai awal variabel-variabel yang memenuhi semua persamaan kendala yang
tersedia.

Dengan menggunakan metode fungsi penalti eksterior, fungsi objektif berkendala F (re j , ri j )

dirubah menjadi fungsi penalti eksterior tanpa kendala (re j , ri j , rp) yang diberikan berikut

ini:

4
Lie Hendri Hariwijaya Optimisasi dalam Rek. Struktur
25013020

(re j , ri j , rp) 
5

 2 2 2 2
F (re j , ri j )  rp  max 0, g j   max 0, h j   max 0, p j   max 0, q j   max 0, s j 
j 1
2

(re j , ri j , rp) 
5

 L  re  
2 2 2 2 2
j j
2

 ri j 2  rp max 0, g j   max 0, h j   max 0, p j   max 0, q j   max 0, s j 
j 1

Konstanta rp adalah parameter penalti. Pada fungsi penalti eksterior, nilai rp harus bertambah
besar seiring dengan bertambahnya iterasi fungsi penalti tersebut.

Pada iterasi pertama fungsi penalti eksterior, disubstitusikan nilai awal rp sama dengan 5
pada fungsi penalti eksterior, selanjutnya fungsi penalti eksterior (re j , ri j , rp) dioptimisasi

dengan menggunakan metode untuk optimisasi nirkendala. Setelah diperoleh nilai variabel-
variabel re j dan ri j optimum serta nilai fungsi penalti tersebut untuk variabel-variabel

optimum tersebut, dilanjutkan ke iterasi kedua dan disubstitusikan nilai rp baru sama dengan
5 kali nilai rp pada iterasi sebelumnya. Proses selanjutnya adalah sama dengan yang terjadi
pada iterasi pertama.

Seiring dengan bertambahnya iterasi dan bertambahnya nilai rp, nilai fungsi penalti eksterior
pada setiap iterasi akan konvergen (berdasarkan nilai toleransi tertentu). Ketika fungsi penalti
tersebut konvergen, maka nilai variabel-variabel re j dan ri j yang menyebabkannya

konvergen adalah variabel-variabel yang optimum untuk persoalan optimisasi berkendala.

Metode Simplex untuk Nonlinear Programming Nirkendala†

Pengertian simplex di sini adalah bentuk geometri yang dibentuk oleh sekumpulan n+1 titik
dimana geometri tersebut berada di dalam ruang n dimensi. Posisi titik-titik tersebut adalah
X1 , X2 , X3 ,..., Xn+1 . Sebagai contoh, dalam bidang 2 dimensi, simplex akan berbentuk
bangun segitiga, dan pada ruang 3 dimensi, simplex akan berbentuk benda solid tetrahedron.


Rao, Singiresu S., 2009, Engineering Optimization: Theory and Practice, 4th Edition, John Wileys & Sons,
Inc., hal. 328.

5
Lie Hendri Hariwijaya Optimisasi dalam Rek. Struktur
25013020

Gambar 5 Contoh simplex dalam bidang 2 dimensi (kiri) dan 3 dimensi (kanan) yang
mengalami proses refleksi

Konsep dasar dalam metode simplex ini adalah membandingkan nilai-nilai fungsi objektif
dari titik-titik sudut pada simplex yang berjumlah n+1 yang memiliki posisi
X1 , X2 , X3 ,..., Xn+1 . Posisi dari sebuah titik sudut tersebut adalah semua nilai awal dari
variabel-variabel yang ingin dioptimalkan terhadap fungsi objektif. Setelah itu, simplex
tersebut dipindahkan secara perlahan menuju titik optimum melalui proses iterasi. Proses
pemindahan simplex tersebut terdiri dari proses refleksi, ekspansi, dan kontraksi.

Refleksi

Jika Xh adalah titik sudut simplex yang menghasilkan nilai fungsi objektif tertinggi di antara
titik-titik sudut simplex yang lain, maka dapat diharapkan titik Xr yang diperoleh dengan
merefleksikan (mencerminkan) titik Xh terhadap X0 memiliki nilai fungsi objektif terkecil
atau lebih kecil. Jika memang demikian, dapat dibangun simplex baru dengan membuang
titik Xh dan menggantinya dengan titik Xr. Agar lebih jelas, perhatikan Gambar 5. X0 adalah
nilai rata-rata X1 sampai Xn+1 kecuali Xh yaitu titik sudut simplex yang memiliki nilai fungsi
objektif tertinggi. Sedangkan X adalah titik sudut simplex yang memiliki nilai fungsi
objektif terendah. Koefisien α adalah koefisien refleksi.

Xr  (1  ) X0  Xh
jarak antara Xr dan X0

jarak antara Xh dan X0
F ( Xh )  max F ( Xi )
i 1 to n 1

1 n1
X0   Xi
n i 1
i h

6
Lie Hendri Hariwijaya Optimisasi dalam Rek. Struktur
25013020

Ekspansi

Jika suatu proses refleksi memberikan sebuah titik Xr dimana pada titik ini berlaku
F (Xr )  F (X ) atau proses refleksi tersebut menghasilkan nilai minimum baru, maka
diharapkan dengan menurunkan nilai Xr menjadi Xe dapat menurunkan nilai fungsi objektif.
Formulasi untuk nilai Xe adalah:

Xe  Xr  (1   ) X 0
jarak antara Xe dan X 0
 1
jarak antara Xr dan X 0

Koefisien  adalah koefisien ekspansi. Jika F (Xe )  F (X ) , titik Xh diganti dengan Xe dan

kemudian proses refleksi dilakukan kembali. Jika F (Xe )  F ( X ) , maka ini berarti proses
ekspansi tidak berhasil sehingga titik Xh diganti dengan titik Xr dan kemudian proses refleksi
dilakukan kembali.

Kontraksi

Jika proses refleksi memberikan suatu titik Xr dimana F ( Xr )  F (Xi ) untuk semua i kecuali

i  h dan F (Xr )  F (Xh ) , maka titik Xh diganti dengan Xr. Setelah itu dilakukan proses
kontraksi dengan menghitung Xc dengan formulasi berikut:

Xc  Xh  (1  ) X0
jarak antara Xc dan X0

jarak antara Xh dan X0
0   1

Koefisien  adalah koefisien kontraksi. Jika F ( Xr )  F ( Xh ) , tetap dihitung Xc tanpa


mengubah titik Xh. Jika proses kontraksi menghasikan suatu titik Xc dimana
F ( Xc )  min  F ( Xh ), F ( Xr ) , maka titik Xh diganti dengan titik Xc dan kemudian proses

refleksi dilakukan kembali. Jika F ( Xc )  min  F ( Xh ), F ( Xr ) , maka ini berarti proses

kontraksi gagal sehingga semua titik Xi diganti dengan (Xi  X ) / 2 dan kemudian proses
refleksi dilakukan lagi.

7
Lie Hendri Hariwijaya Optimisasi dalam Rek. Struktur
25013020

Konvergensi

Pada metode simplex ini, diasumsikan telah mencapai konvergensi jika nilai standar deviasi
dari nilai-nilai fungsi objektif dari titik-titik sudut simplex yang berjumlah n  1 lebih kecil
dari nilai toleransi ε yang ditetapkan.

1/2
 n 1  F ( Xi )  F ( X 0 )2 
Q    
 i 1 n 1 

Langkah-langkah Metode Simplex untuk Nonlinear Programming

Sebelum melakukan optimisasi, ditentukan dahulu nilai koefisien α, β, dan γ masing-masing


adalah 1, 0,5, dan 2.

Langkah 1

Tentukan X1 , X2 , X3 , , Xn+1 serta F (X1 ), F ( X2 ), F (X3 ),, F (Xn+1 ) . Pilih titik mana yang

merupakan Xh dan X . Dalam tugas ini, nilai dari suatu titik sudut simplex X adalah:

T
X   re1 re2  re5 ri1 ri2  ri5 

Sehingga jumlah titik X yang diperlukan untuk membentuk simplex adalah 10  1  11. Ini
karena jumlah variabel adalah 10 ( n  10 ) dan titik yang diperlukan harus berjumlah n  1 .
Pada batang j yang dimiliki struktur memiliki dua variabel yaitu re j dan ri j .

Nilai variabel-variabel dalam titik X dibangkitkan secara acak (random) sebelum proses
iterasi optimisasi nirkendala (dilakukan satu kali setiap iterasi fungsi penalti). Untuk
mencegah ri j lebih besar dari re j saat dibangkitkan secara acak, maka diatur ri j  0, 9re j .

Langkah 2

Hitung nilai X0 dan F(X0).

Langkah 3

Melakukan proses refleksi. Hitung Xr dan F(Xr).

8
Lie Hendri Hariwijaya Optimisasi dalam Rek. Struktur
25013020

Langkah 4

Proses ekspansi: Jika F (Xr )  F (X ) maka hitung Xe dan F(Xe). Jika F (Xe )  F (X ) maka

ganti Xh dengan Xe. Jika F (Xe )  F ( X ) maka ganti Xh dengan Xr.

Proses kontraksi: jika F ( Xr )  F (Xi ) untuk semua i kecuali i  h dan F (Xr )  F (Xh ) ,

maka titik Xh diganti dengan Xr, kemudian hitung Xc. Jika F ( Xr )  F ( Xh ) , tetap dihitung

Xc tanpa mengubah titik Xh. Jika F ( Xc )  min  F ( Xh ), F ( Xr ) , maka titik Xh diganti dengan

titik Xc. Jika F ( Xc )  min  F ( Xh ), F ( Xr ) , semua titik Xi diganti dengan (Xi  X ) / 2 .

Langkah 5

Periksa konvergensi. Dikatakan konvergen jika Q   . Jika Q   lanjut kembali ke langkah


1. Jika konvergen, maka titik X0 adalah nilai variabel-variabel yang menyebabkan fungsi
objektif optimum. Dalam program MATLAB, nilai ε diatur sama dengan 0,1.

Hasil Optimisasi Struktur

Hasil iterasi fungsi penalti eksterior oleh program MATLAB disajikan dalam tabel berikut.

Tabel 3 Hasil iterasi fungsi penalti eksterior

Iterasi Jumlah iterasi Nilai fungsi Nilai fungsi


Parameter rp
f. penalti op. nirkendala penalti objektif
1 5 588 6665.9599 6651.842
2 25 560 6890.9216 6784.5927
3 125 376 6938.8909 6703.0366
4 625 455 7619.7588 7307.6208
5 3125 415 7872.3037 7763.3665
6 15625 504 7979.8565 7943.0147
7 78125 407 7981.6298 7975.8312
8 390625 401 7984.4433 7983.2235
9 1953125 667 8019.9815 8019.7842
10 9765625 1245 8816.5227 8816.5227
11 48828125 397 7986.1286 7986.1286
12 244140625 352 9574.871 9574.871
13 1220703125 881 8206.4064 8206.4064
14 6103515625 609 8142.1834 8142.1834
15 30517578125 609 7992.7659 7992.7659
16 1.52588E+11 587 8021.6082 8021.6082

9
Lie Hendri Hariwijaya Optimisasi dalam Rek. Struktur
25013020

17 7.62939E+11 416 8027.0917 8027.0917


18 3.8147E+12 606 8350.3046 8350.3046
19 1.90735E+13 532 8005.5612 8005.5612
20 9.53674E+13 500 8339.5122 8339.5122
21 4.76837E+14 662 8005.3256 8005.3256
22 2.38419E+15 397 7985.4535 7985.4535
23 1.19209E+16 539 8060.6954 8060.6954
24 5.96046E+16 586 7985.7862 7985.7862
25 2.98023E+17 423 7985.4847 7985.4847

Sesuai dengan Tabel 3, total iterasi fungsi penalti eksterior yang diperlukan oleh program
adalah 25 iterasi. Pada iterasi ke-25 ini, konvergensi telah tercapai pada nilai fungsi penalti
7985,4847 cm3, nilai fungsi objektif pada iterasi ini juga sama dengan 7985,4847 cm3.
Dengan begitu volume optimum struktur untuk tugas ini adalah 7985,4847 cm3. Kriteria
konvergen yaitu selisih absolut nilai fungsi penalti pada iterasi terkini dan sebelumnya diatur
sama dengan 0,5 cm3.

Jumlah iterasi optimisasi nirkendala dengan Metode Simplex (nonlinear programming)


bervariasi cukup signifikan pada setiap iterasi fungsi penalti. Hal ini wajar karena nilai awal
variabel-variabel dibangkitkan secara acak, semakin jauh nilai-nilai acak ini dari nilai-nilai
optimum, semakin banyak iterasi optimisasi nirkendala yang diperlukan.

10000

9500

9000
Nilai fungsi penalti

8500

8000

7500
Iterasi f. penalti vs. nilai f. penalti
7000

6500
1 5 9 13 17 21 25
Iterasi fungsi penalti

Gambar 6 Hubungan iterasi fungsi penalti dengan nilai fungsi penalti

10
Lie Hendri Hariwijaya Optimisasi dalam Rek. Struktur
25013020

Berdasarkan Gambar 6, sebelum iterasi fungsi penalti ke-9, nilai fungsi penalti secara
perlahan menuju ke nilai optimum (pada nilai ±8000 cm3). Tetapi setelah itu hingga iterasi
ke-21, nilai fungsi penalti berubah secara signifikan dan fluktuatif. Pada saat ini seolah-olah
terjadi proses penentuan posisi optimum. Kemudian, setelah iterasi ke-21, konvergensi
cenderung mulai terlihat.

Tabel 4 Data batang pada volume optimum

Batang j Panjang (cm) rej (cm) rij (cm) Gaya (kg) Tegangan (kg/cm2)
1 300 2.5119 2.2607 9037.8 2399.6
2 424.2641 1.1112 1.0001 1360.8 1846.3
3 424.2641 4.5025 4.0523 -12781 -1056.2
4 300 1.9833 1.785 -962.21 -409.81
5 300 1.9835 1.785 -962.21 -409.72

Berdasarkan Tabel 4, batang 1 adalah batang yang memiliki tegangan tarik paling efisien
karena tegangan batangnya mendekati tegangan leleh +2400 kg/cm2. Tegangan batang 2
memang kurang efisien. Ini karena dimensi penampang batang 2 telah mencapai dimensi
minimum penampang yaitu minimum jari-jari dalam ri 1 cm dan minimum jari-jari luar re
1,1 cm. Tegangan tekan batang 3 adalah paling besar di antara batang tekan lain. Oleh sebab
itu diperlukan dimensi penampang paling besar untuk menghindari kegagalan tekuk.

Tabel 5 Nilai persamaan kendala setiap batang saat kondisi optimum

Persamaan kendala
Batang j
gj pj hj qj sj
1 -0.36628 -4799.6 -3057.2 -1.2607 -0.02512
2 -553.71 -4246.3 -1910.6 -7.68E-05 -0.01111
3 -3456.2 -1343.8 -0.043197 -3.0523 -0.04503
4 -2809.8 -1990.2 -0.099657 -0.78499 -0.01983
5 -2809.7 -1990.3 -0.2716 -0.78518 -0.01984

Menurut Tabel 5, semua nilai persamaan kendala di dalam tabel bernilai kurang dari nol. Ini
membuktikan pada kondisi optimum hasil optimisasi, semua persamaan kendala dipenuhi
oleh struktur.

Sebagai informasi, waktu yang dihabiskan untuk menjalankan program hingga selesai adalah
2,77 menit. Untuk struktur sederhana, ini merupakan waktu yang cukup lama.

11
4/22/14 8:17 AM E:\Documents\TUGAS S2 ITB\OPTIM...\analisis_tegangan.m 1 of 3

%====================================
% PROSEDUR ANALISIS TEGANGAN BATANG
%====================================
 
% syarat: re() dan ri() harus sudah didefinisikan, "param_elm.txt" dan 
"gaya_dof.txt" hrs sudah di‐load.
 
% Menghitung luas penampang masing2 batang berdasarkan jari2 luar re() dan 
jari2 dalam ri()
for i=1:ne
    param_elm(i,3)=pi*(re(i,1)^2‐ri(i,1)^2);    % param_elm(:,3) adlh kolom 
luas penampang batang
end
 
% Menyusun matriks hubungan indeks DOF global dengan lokal
conn=zeros(ne,4);
for i=1:ne
    for j=1:4
        conn(i,j)=param_elm(i,j+5);     % conn() adalah matriks hub. indeks DOF 
global‐lokal
    end
end
 
% Menyusun semua matriks kekakuan elemen
kkaku_elm=zeros(4,4,ne);    % kkaku_elm() adalah matriks kekakuan elemen
for i=1:ne
    A=param_elm(i,3);       % A : Luas penampang batang
    E=param_elm(i,2);       % E : Modulus elastisitas material batang
    L=((param_elm(i,4))^2+(param_elm(i,5))^2)^0.5;  % L : Panjang batang
    teta=atan(param_elm(i,5)/param_elm(i,4));       % teta : Sudut orientasi 
batang
    kkaku_elm(1,1,i)=E*A*(cos(teta))^2/L;
    kkaku_elm(1,2,i)=E*A*(cos(teta)*sin(teta))/L;
    kkaku_elm(1,3,i)=‐1*kkaku_elm(1,1,i);
    kkaku_elm(1,4,i)=‐1*kkaku_elm(1,2,i);
    kkaku_elm(2,1,i)=kkaku_elm(1,2,i);
    kkaku_elm(2,2,i)=E*A*(sin(teta))^2/L;
    kkaku_elm(2,3,i)=‐1*kkaku_elm(1,2,i);
    kkaku_elm(2,4,i)=‐1*kkaku_elm(2,2,i);
    kkaku_elm(3,1,i)=‐1*kkaku_elm(1,1,i);
    kkaku_elm(3,2,i)=‐1*kkaku_elm(1,2,i);
    kkaku_elm(3,3,i)=kkaku_elm(1,1,i);
    kkaku_elm(3,4,i)=kkaku_elm(1,2,i);
    kkaku_elm(4,1,i)=‐1*kkaku_elm(1,2,i);
    kkaku_elm(4,2,i)=‐1*kkaku_elm(2,2,i);
    kkaku_elm(4,3,i)=kkaku_elm(1,2,i);
    kkaku_elm(4,4,i)=kkaku_elm(2,2,i);
end
 
% Merakit matriks kekakuan global/struktur
kkaku_glo=zeros(dof,dof);   % kkaku_glo() : matriks kekakuan global seluruh DOF
for i=1:ne
    for j=1:4
        for k=1:4
            m=conn(i,j);
            p=conn(i,k);
4/22/14 8:17 AM E:\Documents\TUGAS S2 ITB\OPTIM...\analisis_tegangan.m 2 of 3

            kkaku_glo(m,p)=kkaku_glo(m,p)+kkaku_elm(j,k,i);
        end
    end
end
 
% Mendeteksi jumlah DOF Tidak Bebas dan Bebas
nfreedof=0;
for i=1:dof
    if gaya_dof(i,2)==0         % jika ada 1 koefisien matriks 'gaya_dof()' di 
kolom 2 = 0, maka menandakan 1 DOF Tak Bebas
        nfreedof=nfreedof+1;
    end                         % nfreedof : jumlah DOF Tak Bebas
end                             
freedof=dof‐nfreedof;           % freedof : jumlah DOF Bebas
 
% Menghitung perpindahan DOF Bebas
kkaku_glo_s=zeros(freedof,freedof);     % kkaku_glo_s() : matriks kekakuan 
global hanya untuk DOF Bebas
for i=1:freedof              
    for j=1:freedof
        kkaku_glo_s(i,j)=kkaku_glo(i,j);
    end
end
mbeban_s=zeros(freedof,1);          % mbeban_s() : matriks beban hanya untuk 
DOF Bebas
for i=1:freedof                    
    mbeban_s(i,1)=gaya_dof(i,3);    % hanya untuk 1 sistem beban
end
mperpind_s=kkaku_glo_s\mbeban_s;    % mperpind_s() : matriks perpindahan hanya 
untuk DOF Bebas
mperpind=zeros(dof,1);            
for i=1:freedof                     % mperpind() : matriks perpindahan seluruh 
DOF
    mperpind(i,1)=mperpind_s(i,1);  % perpindahan DOF Tak Bebas di‐set sama dgn 
Nol
end
 
% Menghitung Gaya Batang dan Tegangannya
F=zeros(ne,1);              % F() : matriks Gaya Batang
sig=zeros(ne,1);            % sig() : matriks Tegangan Batang
for i=1:ne
    A=param_elm(i,3);
    E=param_elm(i,2);
    L=((param_elm(i,4))^2+(param_elm(i,5))^2)^0.5;
    teta=atan(param_elm(i,5)/param_elm(i,4));
    if teta<0               % Jika teta < 0 derajat maka teta = 180 ‐ |teta|
        teta=pi‐abs(teta);
    end
    T=[ cos(teta) sin(teta) 0 0; 0 0 cos(teta) sin(teta) ];
    perpind_btg_glo=zeros(4,1);     % T() : matriks transformasi
    for j=1:4                       
        perpind_btg_glo(j,1)=mperpind(param_elm(i,5+j),1);
    end              % perpind_btg_glo() : matriks perpind. global pada ujung2 
batang
    perpind_btg_lok=T*perpind_btg_glo;
    F(i,1)=E*A/L*(perpind_btg_lok(2,1)‐perpind_btg_lok(1,1));
4/22/14 8:17 AM E:\Documents\TUGAS S2 ITB\OPTIM...\analisis_tegangan.m 3 of 3

    sig(i,1)=F(i,1)/A;  % perpind_btg_lok() : matriks perpind. lokal pada 
ujung2 batang
end
 
 
 
4/22/14 8:16 AM E:\Documents\TUGAS S2 ITB\OPTIMASI...\fungsi_penalty.m 1 of 1

%======================================
% PROSEDUR FUNGSI PENALTY (EKSTERIOR)
%======================================
 
% syarat:
% jari2 luar re() dan jari2 dalam ri() telah didefinisikan,
% data dari "param_elm.txt" telah di‐load,
% data dari "gaya_dof.txt" telah di‐load.
 
analisis_tegangan;      % prosedur "analisis_tegangan.m" dijalankan, output‐nya 
adalah tegangan batang sig()
sum=0;                  % ne adalah jumlah batang/elemen
g=zeros(ne,1);
P=zeros(ne,1);
h=zeros(ne,1);          % g(), P(), h(), q(), s() adalah pers. kendala 
(constraint)
q=zeros(ne,1);
s=zeros(ne,1);
for j=1:ne              
    L=(param_elm(j,4)^2+param_elm(j,5)^2)^0.5;      % L : panjang tiap 
batang/elemen
    g(j,1)=sig(j,1)‐param_elm(j,10);
    P(j,1)=‐param_elm(j,10)‐sig(j,1);
    h(j,1)=‐sig(j,1)‐((pi^2*param_elm(j,2)*(re(j,1)^2+ri(j,1)^2))/(4*L^2));
    q(j,1)=1‐ri(j,1);
    s(j,1)=1.1*ri(j,1)‐re(j,1);
    sum=sum+(pi*L*(re(j,1)^2‐ri(j,1)^2)+(rp*(max(0,g(j,1))^2+max(0,h(j,1))
^2+max(0,P(j,1))^2+max(0,q(j,1))^2+max(0,s(j,1))^2)));
end                     % rp adalah parameter penalty eksterior
func_penalty=sum;
% func_penalty : nilai fungsi penalty eksterior berdasarkan nilai variabel re() 
dan ri() yg telah didefinisikan
 
 
 
4/22/14 8:14 AM E:\Documents\TUGAS S2 ITB\...\optm_rangka2D_multivar.m 1 of 4

clc, clear all
disp
('_____________________________________________________________________________
__')
disp('      TUGAS #4 OPTIMASI DALAM REK. STRUKTUR')
disp('OPTIMASI RANGKA BATANG 2D ‐ "RESIZING" dengan Multi Variabel')
disp('dikerjakan oleh "Lie Hendri Hariwijaya" ‐ NIM 25013020')
disp('                             25 April 2014')
disp
('_____________________________________________________________________________
__')
 
%=======================================================
%  SKRIP UTAMA OPTIMASI RESIZING DENGAN MULTI VARIABEL
%=======================================================
 
% Persiapan dan Input data struktur
waktu_awal=cputime;
format shortG
load param_elm.txt  % file ini berisi parameter elemen/batang struktur
load gaya_dof.txt   % file ini berisi besar beban per DOF & info DOF bebas
disp('DATA STRUKTUR')
disp('Matriks yang di‐load dari "param_elm.txt":')
disp(param_elm)
disp('Matriks yang di‐load dari "gaya_dof.txt":')
disp(gaya_dof)
ne=size(param_elm,1);  % ne adalah jumlah elemen/batang
dof=size(gaya_dof,1);  % dof adalah jumlah seluruh DOF struktur
 
loop2=0;                            % loop2 : jumlah iterasi fungsi penalty 
eksterior
n_lama=1;                           % n_lama : nilai fungsi penalty pada 
iterasi sebelum
n_baru=0;                           % n_baru : nilai fungsi penalty pada 
iterasi terkini
tole=0.5;                           % tole : nilai toleransi iterasi fungsi 
penalty
rp=1;                               % parameter penalty = 1 sebelum iterasi f. 
penalty
disp('Sedang memulai optimasi . . .')
while abs(n_lama‐n_baru)>tole       % iterasi fungsi penalty eksterior
    loop2=loop2+1;
    rp=5*rp;                        % rp baru sama dgn 4 kali rp lama 
    mre=rand(ne,ne*2+1)*10;         % membangkitkan rej secara acak
    mri=0.9*mre;                    % rij diatur sama dengan 0,9rej di awal 
iterasi optimisasi nirkendala
    eps=1;                          % eps : nilai standar deviasi terkini, sblm 
iterasi diatur = 1
    tole_eps=0.1;                  % tole_eps : nilai eps yang dianggap 
konvergen
    loop1=0;                        % loop1 : jumlah interasi optimisasi 
nirkendala
    while eps>tole_eps              % iterasi optimasi nirkendala dgn metode 
Simplex (nonlinear programming)
        loop1=loop1+1;
        for ii=1:ne*2+1             % LANGKAH 1 mulai dijalankan
4/22/14 8:14 AM E:\Documents\TUGAS S2 ITB\...\optm_rangka2D_multivar.m 2 of 4

            re=mre(:,ii);
            ri=mri(:,ii);
            fungsi_penalty;         % menjalankan prosedur "fungsi_penalty.m"
            phi(ii,1)=func_penalty;
        end
        nmax=1;
        nmin=1;
        phimin=phi(1,1);
        phimax=phi(1,1);
        for i=2:ne*2+1
            if phimax<phi(i,1)
                phimax=phi(i,1);
                nmax=i;
            end
            if phimin>phi(i,1);
                phimin=phi(i,1);
                nmin=i;
            end
        end                         % Langkah 1 selesai
        sum1=0; sum2=0;             % LANGKAH 2 mulai dijalankan
        for i=1:ne*2+1
            if i~=nmax
                sum1=sum1+mre(:,i);
                sum2=sum2+mri(:,i);
            end
        end
        re_0=sum1/(ne*2);
        ri_0=sum2/(ne*2);
        re=re_0; ri=ri_0;
        fungsi_penalty;
        phi_0=func_penalty;         % Langkah 2 selesai
        alpha=1;                    % alpha : parameter refleksi
        gamma=2;                    % gamma : parameter ekspansi
        beta=0.5;                   % beta : parameter kontraksi
        re_r=((1+alpha)*re_0‐(alpha*mre(:,nmax)));      % LANGKAH 3 mulai 
dijalankan
        ri_r=((1+alpha)*ri_0‐(alpha*mri(:,nmax)));      % proses refleksi
        re=re_r; ri=ri_r;
        fungsi_penalty;
        phi_r=func_penalty;                             % Langkah 3 selesai
        
        if phi_r<phimin                                 % LANGKAH 4 mulai 
dijalankan
            re_e=(gamma*re_r)+((1‐gamma)*re_0);         % proses ekspansi
            ri_e=(gamma*ri_r)+((1‐gamma)*ri_0);
            re=re_e; ri=ri_e;
            fungsi_penalty;
            phi_e=func_penalty;
            if phi_e<phimin
                mre(:,nmax)=re_e;
                mri(:,nmax)=ri_e;
            else
                mre(:,nmax)=re_r;
                mri(:,nmax)=ri_r;
            end
        elseif phi_r>phimax                             % proses kontraksi       
4/22/14 8:14 AM E:\Documents\TUGAS S2 ITB\...\optm_rangka2D_multivar.m 3 of 4

            ri_c=(beta*mri(:,nmax))+((1‐beta)*ri_0);
            re_c=(beta*mre(:,nmax))+((1‐beta)*re_0);
            re=re_c; ri=ri_c;
            fungsi_penalty;
            phi_c=func_penalty;
            if phi_c<min(phi_r,phimax)
                mre(:,nmax)=re_c;
                mri(:,nmax)=ri_c;
            else
                for i=1:ne*2+1
                    mre(:,i)=(mre(:,i)+mre(:,nmin))/2;
                    mri(:,i)=(mri(:,i)+mri(:,nmin))/2;
                end
            end
        else
            zz=0;
            for i=1:ne*2+1
                if i~=nmax
                    if phi_r>phi(i,1)
                        zz=zz+1;
                    end
                end
            end
            if zz==ne*2
                mre(:,nmax)=re_r;
                mri(:,nmax)=ri_r;
                re_c=(beta*mre(:,nmax))+((1‐beta)*re_0);
                ri_c=(beta*mri(:,nmax))+((1‐beta)*ri_0);
                re=re_c; ri=ri_c;
                fungsi_penalty;
                phi_c=func_penalty;
                re=mre(:,nmax); ri=mri(:,nmax);
                fungsi_penalty;
                phimax=func_penalty;
                if phi_c<min(phi_r,phimax)
                    mre(:,nmax)=re_c;
                    mri(:,nmax)=ri_c;
                else
                    for i=1:ne*2+1
                        mre(:,i)=(mre(:,i)+mre(:,nmin))/2;
                        mri(:,i)=(mri(:,i)+mri(:,nmin))/2;
                    end
                end
            else
                mre(:,nmax)=re_r;
                mri(:,nmax)=ri_r;
            end
        end                                     % Langkah 4 selesai        
        for ii=1:ne*2+1                         % pemeriksaan konvergensi
            re=mre(:,ii);
            ri=mri(:,ii);
            fungsi_penalty;
            phi(ii,1)=func_penalty;
        end
        sum=0;
        for i=1:ne*2+1
4/22/14 8:14 AM E:\Documents\TUGAS S2 ITB\...\optm_rangka2D_multivar.m 4 of 4

            sum=sum+((phi(i,1)‐phi_0)^2/(ne*2+1));
        end
        eps=sum^0.5;
    end
    disp('_____________________________________________________________')
    disp(['Iterasi fungsi penalty yang ke‐' ' ' num2str(loop2)])
    disp(['Nilai parameter penalty rp:' '   ' num2str(rp)])
    disp(['Jumlah iterasi optimasi nirkendala:' '   ' num2str(loop1)])    
    n_lama=n_baru;
    re=re_0; ri=ri_0;
    fungsi_penalty;
    n_baru=func_penalty;
    disp(['Nilai fungsi penalty:' '   ' num2str(n_baru)])
    sum=0;
    for i=1:ne
        L=(param_elm(i,4)^2+param_elm(i,5)^2)^0.5;
        sum=sum+(pi*L*(re(i,1)^2‐ri(i,1)^2));
    end
    disp(['Nilai fungsi objektif:' '   ' num2str(sum)])
end
re=re_0; ri=ri_0; sum=0;                   % tahap dimana semua proses iterasi 
telah mencapai konvergensi 
for i=1:ne
    L=(param_elm(i,4)^2+param_elm(i,5)^2)^0.5;
    sum=sum+(pi*L*(re(i,1)^2‐ri(i,1)^2));
end
vol_optm=sum;                              % vol_optm : volume optimum
disp('______________________________________________________________')
disp('KESIMPULAN')
disp(['Volume optimum:' '   ' num2str(vol_optm)])
disp('Data batang untuk volume optimum:')
disp(['    Batang' ' ' '          re' ' ' '            ri' ' ' '            F' 
' ' '             sig'])
disp([param_elm(:,1) re ri F sig])
disp(['Nilai persamaan kendala:' '   ' '(syarat: semua nilai harus < 0)'])
disp(['    Batang' ' ' '         g' ' ' '             P' ' ' '            h' ' 
' '               q' ' ' '               s'])
disp([param_elm(:,1) g P h q s])
waktu_akhir=cputime‐waktu_awal;
disp(['Waktu yang dihabiskan:' '   ' num2str(waktu_akhir) ' ' 'detik' ' ' 
'atau' ' ' num2str(waktu_akhir/60) ' ' 'menit'])
disp('OPTIMASI SELESAI')
 
4/22/14 8:11 AM MATLAB Command Window 1 of 4

_______________________________________________________________________________
TUGAS #4 OPTIMASI DALAM REK. STRUKTUR
OPTIMASI RANGKA BATANG 2D - "RESIZING" dengan Multi Variabel
dikerjakan oleh "Lie Hendri Hariwijaya" - NIM 25013020
25 April 2014
_______________________________________________________________________________
DATA STRUKTUR
Matriks yang di-load dari "param_elm.txt":
Columns 1 through 7

1 2100000 0 0 300 5 6
2 2100000 0 300 300 5 6
3 2100000 0 -300 300 7 8
4 2100000 0 0 300 7 8
5 2100000 0 300 0 1 2

Columns 8 through 10

1 2 2400
3 4 2400
1 2 2400
3 4 2400
3 4 2400

Matriks yang di-load dari "gaya_dof.txt":


1 1 10000
2 1 0
3 1 0
4 1 0
5 0 0
6 0 0
7 0 0
8 0 0

Sedang memulai optimasi . . .


_____________________________________________________________
Iterasi fungsi penalty yang ke- 1
Nilai parameter penalty rp: 5
Jumlah iterasi optimasi nirkendala: 588
Nilai fungsi penalty: 6665.9599
Nilai fungsi objektif: 6651.842
_____________________________________________________________
Iterasi fungsi penalty yang ke- 2
Nilai parameter penalty rp: 25
Jumlah iterasi optimasi nirkendala: 560
Nilai fungsi penalty: 6890.9216
Nilai fungsi objektif: 6784.5927
_____________________________________________________________
Iterasi fungsi penalty yang ke- 3
Nilai parameter penalty rp: 125
Jumlah iterasi optimasi nirkendala: 376
Nilai fungsi penalty: 6938.8909
Nilai fungsi objektif: 6703.0366
_____________________________________________________________
Iterasi fungsi penalty yang ke- 4
Nilai parameter penalty rp: 625
4/22/14 8:11 AM MATLAB Command Window 2 of 4

Jumlah iterasi optimasi nirkendala: 455


Nilai fungsi penalty: 7619.7588
Nilai fungsi objektif: 7307.6208
_____________________________________________________________
Iterasi fungsi penalty yang ke- 5
Nilai parameter penalty rp: 3125
Jumlah iterasi optimasi nirkendala: 415
Nilai fungsi penalty: 7872.3037
Nilai fungsi objektif: 7763.3665
_____________________________________________________________
Iterasi fungsi penalty yang ke- 6
Nilai parameter penalty rp: 15625
Jumlah iterasi optimasi nirkendala: 504
Nilai fungsi penalty: 7979.8565
Nilai fungsi objektif: 7943.0147
_____________________________________________________________
Iterasi fungsi penalty yang ke- 7
Nilai parameter penalty rp: 78125
Jumlah iterasi optimasi nirkendala: 407
Nilai fungsi penalty: 7981.6298
Nilai fungsi objektif: 7975.8312
_____________________________________________________________
Iterasi fungsi penalty yang ke- 8
Nilai parameter penalty rp: 390625
Jumlah iterasi optimasi nirkendala: 401
Nilai fungsi penalty: 7984.4433
Nilai fungsi objektif: 7983.2235
_____________________________________________________________
Iterasi fungsi penalty yang ke- 9
Nilai parameter penalty rp: 1953125
Jumlah iterasi optimasi nirkendala: 667
Nilai fungsi penalty: 8019.9815
Nilai fungsi objektif: 8019.7842
_____________________________________________________________
Iterasi fungsi penalty yang ke- 10
Nilai parameter penalty rp: 9765625
Jumlah iterasi optimasi nirkendala: 1245
Nilai fungsi penalty: 8816.5227
Nilai fungsi objektif: 8816.5227
_____________________________________________________________
Iterasi fungsi penalty yang ke- 11
Nilai parameter penalty rp: 48828125
Jumlah iterasi optimasi nirkendala: 397
Nilai fungsi penalty: 7986.1286
Nilai fungsi objektif: 7986.1286
_____________________________________________________________
Iterasi fungsi penalty yang ke- 12
Nilai parameter penalty rp: 244140625
Jumlah iterasi optimasi nirkendala: 352
Nilai fungsi penalty: 9574.871
Nilai fungsi objektif: 9574.871
_____________________________________________________________
Iterasi fungsi penalty yang ke- 13
Nilai parameter penalty rp: 1220703125
Jumlah iterasi optimasi nirkendala: 881
Nilai fungsi penalty: 8206.4064
4/22/14 8:11 AM MATLAB Command Window 3 of 4

Nilai fungsi objektif: 8206.4064


_____________________________________________________________
Iterasi fungsi penalty yang ke- 14
Nilai parameter penalty rp: 6103515625
Jumlah iterasi optimasi nirkendala: 609
Nilai fungsi penalty: 8142.1834
Nilai fungsi objektif: 8142.1834
_____________________________________________________________
Iterasi fungsi penalty yang ke- 15
Nilai parameter penalty rp: 30517578125
Jumlah iterasi optimasi nirkendala: 609
Nilai fungsi penalty: 7992.7659
Nilai fungsi objektif: 7992.7659
_____________________________________________________________
Iterasi fungsi penalty yang ke- 16
Nilai parameter penalty rp: 152587890625
Jumlah iterasi optimasi nirkendala: 587
Nilai fungsi penalty: 8021.6082
Nilai fungsi objektif: 8021.6082
_____________________________________________________________
Iterasi fungsi penalty yang ke- 17
Nilai parameter penalty rp: 762939453125
Jumlah iterasi optimasi nirkendala: 416
Nilai fungsi penalty: 8027.0917
Nilai fungsi objektif: 8027.0917
_____________________________________________________________
Iterasi fungsi penalty yang ke- 18
Nilai parameter penalty rp: 3814697265625
Jumlah iterasi optimasi nirkendala: 606
Nilai fungsi penalty: 8350.3046
Nilai fungsi objektif: 8350.3046
_____________________________________________________________
Iterasi fungsi penalty yang ke- 19
Nilai parameter penalty rp: 19073486328125
Jumlah iterasi optimasi nirkendala: 532
Nilai fungsi penalty: 8005.5612
Nilai fungsi objektif: 8005.5612
_____________________________________________________________
Iterasi fungsi penalty yang ke- 20
Nilai parameter penalty rp: 95367431640625
Jumlah iterasi optimasi nirkendala: 500
Nilai fungsi penalty: 8339.5122
Nilai fungsi objektif: 8339.5122
_____________________________________________________________
Iterasi fungsi penalty yang ke- 21
Nilai parameter penalty rp: 476837158203125
Jumlah iterasi optimasi nirkendala: 662
Nilai fungsi penalty: 8005.3256
Nilai fungsi objektif: 8005.3256
_____________________________________________________________
Iterasi fungsi penalty yang ke- 22
Nilai parameter penalty rp: 2384185791015625
Jumlah iterasi optimasi nirkendala: 397
Nilai fungsi penalty: 7985.4535
Nilai fungsi objektif: 7985.4535
_____________________________________________________________
4/22/14 8:11 AM MATLAB Command Window 4 of 4

Iterasi fungsi penalty yang ke- 23


Nilai parameter penalty rp: 11920928955078124
Jumlah iterasi optimasi nirkendala: 539
Nilai fungsi penalty: 8060.6954
Nilai fungsi objektif: 8060.6954
_____________________________________________________________
Iterasi fungsi penalty yang ke- 24
Nilai parameter penalty rp: 59604644775390624
Jumlah iterasi optimasi nirkendala: 586
Nilai fungsi penalty: 7985.7862
Nilai fungsi objektif: 7985.7862
_____________________________________________________________
Iterasi fungsi penalty yang ke- 25
Nilai parameter penalty rp: 298023223876953090
Jumlah iterasi optimasi nirkendala: 423
Nilai fungsi penalty: 7985.4847
Nilai fungsi objektif: 7985.4847
______________________________________________________________
KESIMPULAN
Volume optimum: 7985.4847
Data batang untuk volume optimum:
Batang re ri F sig
1 2.5119 2.2607 9037.8 2399.6
2 1.1112 1.0001 1360.8 1846.3
3 4.5025 4.0523 -12781 -1056.2
4 1.9833 1.785 -962.21 -409.81
5 1.9835 1.7852 -962.21 -409.72

Nilai persamaan kendala: (syarat: semua nilai harus < 0)


Batang g P h q s
1 -0.36628 -4799.6 -3057.2 -1.2607 -0.025119
2 -553.71 -4246.3 -1910.6 -7.6834e-005 -0.011112
3 -3456.2 -1343.8 -0.043197 -3.0523 -0.045025
4 -2809.8 -1990.2 -0.099657 -0.78499 -0.019833
5 -2809.7 -1990.3 -0.2716 -0.78518 -0.019835

Waktu yang dihabiskan: 166.3281 detik atau 2.7721 menit


OPTIMASI SELESAI
>>