Uni Kirsch. (1981). Optimum Structural Design: Concepts, Methods and Applications. McGraw — Hill Book Company.
W. F. Chen and D. J. Han. (1988). Plasticity for Structural Engineers.
Springer-Verlag New York Inc.
A. Adamu, B.L. Karihaloo, and G.I.N. Rozvany. (1994). “Minimum Cost Design of Reinforced Concrete Beams Using Continuum-type
Optimality Criteria”. Struct Optim Vol. 7, pp. 91-102.
M.J. Fadaee, D.E. Grierson. (1996). “Design Optimization of 3D Reinforced Concrete Structures”. Struct Optim Vol 12, pp. 127-134.
S. Rajeew and C.S. Krishnamoorthy. (1998). “Genetic Algorithm-based Methodology for Design Optimization of Reinforced Concrete Frames”.
Computer-Aided Civil Infrastruct Eng Vol. 13, pp. 63-74.
Fuat Erbatur, Oguzhan Hasancebe, llker Tutunce, Hakan Kilic. (1999).
"Optimal Design of Planar and Space Structures With Genetic Algorithms". Computers and Structures, Vol. 3, pp. 209-224.
William McGuire, Richard H. Gallagher, Ronald D. Ziemian. (2000).
Matrix Structural Analysis. John Wiley & Sons, Inc.
Mitsuo Gen, Runwei Cheng. (2000). Genetic Algorithms & Engineering Optimization. John Wiley & Sons, Inc.
Zou XK. (2002)."Optimal seismic Performance-Based Design of Reinforced Concrete Buildings" ph.D. Dissertation, Hong Kong University of Science and Technology.
C.C. Ferreira, M.H.F.M. Barros, and A.F.M. Barros. (2003). “Optimal Design of Reinforced Concrete T-sections in Bending”. Eng Struct Vol. 25, pp. 951-964.
C. V. Camp, S. Pezeshk, and H. Hansson. (2003). "Flexural Design of Reinforced Concrete Frames Using a Genetic Algorithm". J Struct Eng, ASCE Vol. 129, pp. 105-115.
C. Lee C, and J. Ahn. (2003). "Flexural Design of Reinforced Frames By Genetic Algorithm". J Struct Eng, ASCE Vol. 129, pp. 762-774.
[13]
[14]
[15]
[16]
[17]
[18]
[19]
[20]
[21]
Vu Duc Thang, Bui Cong Thanh. (2003). “Thiết Kế Tối Ưu Khung Bê Tông Cốt Thép Theo Tiêu Chuẩn Việt Nam — Optimum Design of
Reinforced Concrete Frames following Vietnamese Bechmark (TCVN)”. Science & Technology Development — Vietnam National University — Ho Chi Minh City, ISSN 1859 — 0128, pp. 116-125,
Vol. 6.
Bùi Công Thành, Lê Đức Hiển. (2003). “Ung Dung Thuật Giải Di Truyền Vào Thiết Kế Tối Ưu Dam Don Giản Bê Tông Cốt Thép”. Tạp
Chí “Xây Dựng” của Bộ Xây Dựng, ISSN 0866 — 8762, pp. 38-41.
Randy L. Haupt, Sue Ellen Haupt. (2004). Practical Genetic Algorithms. John Wiley & Sons, Inc.
P-E Austrell, O Dahlblom, J Lindemann, A Olsson, K-G Olsson, K Persson, H Petersson, M Ristinmaa, G Sandberg, P-A Wernberg.
(2004). Calfem — A Finite Element Toolbox — Version 3.4.
The Division of Structural Mechanics at Lund University.
Mohsen KARGAHI and James C. ANDERSON (2004). "Structural
Optimization for Seismic Design". 13" World Conference on
Earthquake Engineering, Vancouver, B.C., Canada.
Xiao-Kang ZOU and Chun-Man CHAN. (2004). "Seismic Drift
Performance-Based Design Optimization of Reinforced Concrete
Buildings". 13” World Conference on Earthquake Engineering,
Vancouver, B.C., Canada.
R. Sedaghati. (2005). "Benchmark Case Studies In Structural Design Optimization Using The Force Method". International Journal of Solids and Structures, vol. 42, pp. 5848-5871.
X.-K. Zou, C.-M. Chan. (2005). "Optimal Seismic Performance-Base Design of Reinforced Concrete Buildings Using Nonlinear Pushover Analysis". Engineering Structures, Vol. 27, pp. 1289-1302.
PGS. TS Bùi Công Thanh. (2005). Bài Giảng Thiết Kế Kết Cau Tôi Ưu,
tài liệu giảng dạy, trường Đại Học Bách Khoa TP. HCM.
Luận Văn Thạc Sĩ GVHD: PGS. TS. Bùi Công Thanh
[22]
[23]
[24]
[25]
[26]
[27]
[28]
[29]
[30]
Bùi Công Thanh, Nguyễn Trường Sơn. (2005). “Thiết Kế Tôi Ưu Dam Cầu Bê Tông Cốt Thép Dự Ứng Lực Căng Trước Bằng Thuật Toán Di Truyền”. Tạp Chí “Xây Dựng” của Bộ Xây Dung, ISSN 0866 — 8762,
pp. 3l —- 35.
Hojjat Adeli, Kamal C. Sarma. (2006). Cost Optimization of Structures:
Fuzzy Logic, Genetic Algorithms and Parallel Computing. John Wiley
& Sons, Ltd.
Andres Guerra and Panos D. Kiousis. (2006). "Design Optimization of Reinforced Concrete Structures". Computers and Concrete, Vol. 3, pp.
313-334.
Bùi Công Thanh, Nguyễn Trung Sơn. (2006). “Áp Dung Thuật toán di Truyền Trong Thiết Kế Tối Ưu Cầu Nhịp Liên Tục Dầm Hộp Bê Tông Cốt Thép Dự Ứng Lực Căng Sau Theo Tiêu Chuẩn 22TCN272-05”.
Tạp Chí “Xây Dung” Của Bộ Xây Dung, ISSN 0866 — 8762, pp. 32-36.
Nguyễn Trung Hòa. (2008). Kết Câu Bê Tông Cốt Thép Theo Quy
Pham Hoa Ky. Nhà Xuât Ban Xây Dung Hà Nội.
Bùi Công Thành, Trương Tuan Hiệp. (2008). “Tối Ưu Vị Tướng Kết Cau Dan Phang Sử Dụng Thuật Giải Mô Phỏng Luyện Kim”. Tạp Chí Phát Trién KH&CN, Tập 11, Số 05-2008.
Lê Anh Thái. (2008). Thiết Kế Tối Ưu Kết Câu Khung Bê Tông Cốt
Thép Theo Tiêu Chuan Việt Nam Sử Dụng Thuật Giải Di Truyện, luận văn cao học.
M. H Arslan, M. Ceylan, T. Kayuncu. (2010). "A New Method for Rapid Assesment of Performances of Existing RC Buildings Under Earthquake Loading". ECCM 2010.
Gregory G. Deierlein, Andrei M. Reinhom, Michael R. Willford.
(2010). Nonlinear Structural Analysis For Seismic Design, A Guide for Practicing Engineers. National Institute of Standards and Technology, U.S Department of Commerce.
[31]
[32]
[33]
[34]
[35]
[36]
[37]
[38]
[39]
[40]
[41]
Srinivasan Chandrasekaran, Luciano Nunziante, Giorgio Serino, Federico Carannante. (2010). Seismic Design Aids for Nonlinear Analysis of Reinforced Concrete Structures. Taylor and Francis Group, LLC.
Bùi Công Thanh. (2010). Cơ Kết Cau Nâng Cao. Nhà Xuất Ban Dai Học Quốc Gia TP. Hỗ Chí Minh.
Đỗ Kiến Quốc, Lương Văn Hải. (2010). Động Lực Học Kết Cau. Nhà Xuất Bản Đại Học Quốc Gia TP. Hồ Chí Minh.
Đỗ Kiến Quốc, Nguyễn Trọng Phước. (2010). Các Phương Pháp Số Trong Động Lực Học Kết Câu. Nhà Xuất Bản Đại Học Quốc Gia TP.
Hỗ Chí Minh.
Bora Gencturk, Amr S. Elnashai. (2011). Multi-Objective Optimal Seismic Design of Buildings Using Advanced Engineering Materials.
Deparment of civil and Environmental Engineering, University of Illinois at Urbana-Champaign.
A. Kaveh, O. Sabzi. (2012). "Optimal Design of Reinforced Concrete Frames Using Big Bang - Big Crunch Algorithm". International Journal of Civl Engineering, Vol. 10.
Tiéu Chuan Thiét Ké Tai Trong Va Tac Dong, TCVN 2737-1995.
Nhà Cao Tang — Thiết Kế Kết Câu Bê Tông Cốt Thép Toàn Khối,
TCVN 198-1997,
Tiêu Chuan Thiết Kế Kết Cấu Bê Tông Và Bê Tông Cốt Thép,
TCXDVN 356-2005.
Tiêu Chuan Thiết Kế Công Trinh Chịu Động Dat, TCVN 9386-2012.
American Concrete Institute (ACI). Building Code Requirements for Structural Concrete and Commentary, ACI 318M-11, 2011.
Luận Văn Thạc Sĩ GVHD: PGS. TS. Bùi Công Thanh
PHU LUC
1. Frameoptimization.m file
% Reinforce concrete frame
% PURPOSE
% Optimize Framecost
% REFERENCES
% Khanh Ba Nguyen 20-05-15
%---Set the options---
opts = gaoptimset('PopulationT ype’, 'doubleVector’, ...
‘PopInitRange', [0.3 O45 03 O45 03...],...
‘PopulationSize’, 300, ...
'EliteCount'’, 30, ...
'CrossoverFraction', 0.6, ...
'ParetoFraction’, [], ...
'MigrationDirection'[], ...
‘Migration Interval',[], ...
'MigrationFraction',[], ...
'Generations', 500, ...
"TimeLimit’, [], ...
FitnessLimit’, [], ...
‘StallGenLimit’, [], ...
‘StallTest',[], ...
‘StallTimeLimit', [], ...
'TolFun’, le-5, ...
'TolCon’, []. ...
InitialPopulation’, [], ...
TInitialScores'’, [], ...
PlotInterval'[], ...
‘CreationFcn', @gacreationuniform, ...
‘FitnessScalingFcn', @fitscalingrank, ...
‘SelectionFcn', @selectiontournament, ...
‘CrossoverFcn', @crossovertwopoint, ...
'‘MutationFcn', @mutationuniform, ...
'DistanceMeasureFcn'], ...
'HybridFcn', [], ...
‘PlotFcns',@ gaplotbestf, ...
‘OutputFens'’, [], ...
'Vectorized', 'off', ...
"UseParallel', []);
%---Call |gal to Solve the Problem---
[xbest, fbest, exitflag, Output] = ga(@framecost, 34, [], []. []. [. ...
[]: [I. LÍ: L: opts);
fprintf(‘The number of generations was : %d\n', Output.generations);
fprintf(‘The number of function evaluations was : %d\n', Output.funccount);
fprintf(‘The best function value found was : %ứ\n', fbest);
fprintf('The best variation value found was : %g\n', xbest);
2. Framecost.m file function Fp = framecost(x)
% Reinforce concrete frame
% PURPOSE
% Calculate Framecost
% REFERENCES
% Khanh Ba Nguyen 20-05-15
Fb = 12*L*(cc*gb*x(1)*x(2)+cs* gs*(x(2 1)+x(22))+cf*(x(1)+2*x(2)) ...
+cc* gb*x(3)*x(4)+cs* gs*(x(23)+x(24))+cf*(x(3)+2*x(4)) ...
+cc* gb*x(5)*x(6)+cs* gs*(x(25)+x(26))+cf*(x(5)+2*x(6))) ...
+9*#L*(cc*eb*x(7)*x(8)+cs#ứs*(x(27)+x(28))+cf#(x(7)+2*x(8)));
Fe = 10*H*(cc* gb*x(9)*x(10)+cs* gs*x(29)+2*cf*(x(9)+x(10)) ...
+cc*ob*x(11)*x(12)+cs* gs*x(30)+2*cf*(xC1 1)+x(12)) ...
+cc* gb*x(13)*x(14)+cs* gs*x(3 1)+2*cf*(x(13)+x(14)) ...
+cc* gb*x(15)*x(16)+cs* gs*x(32)+2*cf*(x(15)+x(16)) ...
+cc* gb*x(17)*x(18)+cs* gs*x(33)+2*cf*(x(17)+x(18)) ...
+cc* gb*x(19)*x(20)+cs* gs*x(34)+2*cf*(x(19)+x(20)));
F = Fb+Fc;
Fp=F+rp*G;
Luận Văn Thạc Sĩ GVHD: PGS. TS. Bùi Công Thanh
3. Frameanalysis.m file
function G = frameanal ysis(x)
% Reinforce concrete frame
% PURPOSE
% Analyze Planar Frame
% REFERENCES
% Khanh Ba Nguyen 20-05-15
E=3000000;
fc=1450;
fy=36500;
Al=x(1)*x(2); I1=x(1)*x(2)43/12;
A10=x(19)*x(20); II0=x(19)#x(20)^3/12;
%% --- Case | ---
K=zeros(192,192);
f=zeros(192,1);
epl=[E Al I1];
Edof1l=[61 13 14 15 16 17 18;
72 55 56 57 58 59 60];
[Ex] ,Ey1 J=coordxtr(Edof1 ,Coord ,Dof,2);
for i=1:12 [Ke,fe]=beam2e(Ex1(,:),Ey1G,:),ep!,eq1);
[K fJ=assem(Edof1(,:),K.Ke-.f,fe);
end
bc= [1 0; 2 0; 3 0; 40; 5 0; 60; 70; 8 0; 9 0; 100; 11 0; 12 0];
esól_ I=beam2s(ExI(1,:),Eyl(1,:),ep1,EdI(I:),eq1 21);
es62_1=beam2s(Ex1(2,:),Ey1(2,:),epl,Ed1(2,:),eq1 21);
es63_ I=beam2s(ExI(3.,:),Eyl(3,:),ep1I,Ed1(5 ;),eq1 21);
%% --- Case 2 --- K=zeros(192,192);
f=zeros(192,1);
{(13)=0.9* 1.2372;
{(25)=0.9*4 0209;
epl=[E Al I1];
Edof1l=[61 13 14 15 16 17 18;
72 55 56 57 58 59 60];
[Ex] ,Ey1 |Ecoordxtr(EdofT1 ,Coord ,Dof,2);
for 1=1:12 [Ke,fe]=beam2e(Ex1(,:),Ey1G,:),ep!,eq1);
[K fJ=assem(Edof1(,:),K.Ke-.f,fe);
end
bc= [1 0; 2 0; 3 0; 40; 5 0; 60; 70; 8 0; 9 0; 100; 11 0; 12 0];
a=solveq(K,f,bc);
es61_2=beam2s(Ex1(1,:),Ey1(1,:),ep1 ,Ed1(1,:),eq1 21);
es62_2=beam2s(Ex1(2,:),Ey1(2,:),epl ,Ed1(2,:),eq1 21);
es63_2=beam2s(Ex1(3,:),Ey1(3,:),ep1 ,Ed1(3,:),eq1 21);
Luận Văn Thạc Sĩ GVHD: PGS. TS. Bùi Công Thanh
% Group |
Mn_nt=checkbeam(fy,fc,as1 ,as2,w,h0,ab,alpha,coxi);
Mn_pt=checkbeam(fy,fc,as1 ;as2,w,h0,ab,alpha,coxI);
2e61_1 = (abs(max(es61_1(11,3),es61_2(11,3)))/abs(phi*Mn_pt))-1;
e61_2 = (abs(min(es61_1(1,3),es61_2(1 3)))/abs(phi*Mn_nt))-1;
ứ6ẽ_ 3 = (abs(min(es61_1(21,3),es61_2(21 3)))/abs(phi*Mn_nt))-1;
261 = (max(0,g61_1))42+(max(0,g61_2))42+(max(0,g61_3))%2;
%% --- Column constraints---
% Group |
% Combo "MIbottom & Nicor"
if abs(esl_ I(1,3))>abs(esl_2(1.3)) M=abs(esl_ I(1,3));
N=abs(es1_1(1,1));
else M=abs(esl_ 2(1.3));
N=abs(es1_2(1,1));
end [Ne, Negh] = checkcolumn(M,N,L0,w,h,h0,z,ac,fc,fy,E,coxI,as);
gl_1l=max(0,(Ne/Negh)-1)42;
% Combo "MI middle & Nicor"
if abs(es1_1(11,3))>abs(es1_2(11,3)) M=abs(es1_1(11,3));
N=abs(es1_1(11,1));
else M=abs(es1_2(11,3));
N=abs(es1_2(11,1));
end
[Ne, Negh] = checkcolumn(M,N,L0,w,h,h0,z,ac,fc,fy,E,coxI,as);
g1_2=max(0,(Ne/Negh)-1)/2;
% Combo "MItop & Nicor"
if abs(esI_1(21,3))>abs(es1_2(21,3)) M=abs(es1_1(21,3));
N=abs(es1_1(21,1));
else M=abs(es1_2(21,3));
N=abs(es1_2(21,1));
end
[Ne, Negh] = checkcolumn(M,N,LO,w,h,h0,z,ac,fc,fy,E,coxi,as) ; g1_3=max(0,(Ne/Negh)-1)/2;
ứl=gl_I+gl 2+sl_3;
%% --- Coding the constraints---
Luận Văn Thạc Sĩ GVHD: PGS. TS. Bùi Công Thanh
4. Seclectiontournament.m file
function parents = selectiontournament(expectation ,nParents options,tournamentSize)
%SELECTIONTOURNAMENT Each parent is the best of a random set.
% Copyright 2003-2007 The MathWorks, Inc.
% How many players in each tournament?
if nargin < 4 lÌ isempty(tournamentSize) tournamentSize = 4;
end
% Choose the players playerlist = ceil(size(expectation,1) * rand(nParents,tournamentSize));
% Play tournament parents = tournament(playerlist,expectation);
function champions = tournament(playerlist,expectation)
%tournament between players based on their expectation
playerSize = size(playerlist,1);
champions = zeros(1 ,playerSize);
% For each set of players for 1 = 1:playerSize
players = playerlist(i,:);
% For each tournament winner = players(1); % Assume that the first player is the winner for j = 2:length(players) % Winner plays against each other consecutively
scorel = expectation(winner,:);
score2 = expectation(players(j),:);
if score2(1) > scorel(1) winner = players(J);
elseif score2(1) == scorel(1) try % socre(2) may not be present for single objective problems
if score2(2) > score1(2) winner = players(J);
end catch end end end champIons(1) = winner;
5. Crossovertwopoint.m file
function xoverKids = crossovertwopoint(parents options ,GenomeLength,FitnessFcn unused ,thisPopul ation)
%CROSSOVERTWOPOINT Two point crossover.
% XOVERKIDS = CROSSOVERTWOPOINT(PARENTS OPTIONS ,GENOMELENGTH, ...
% FITNESSFCN,SCORES ,THISPOPULATION) creates the crossover children XOVERKIDS
% of the given population THISPOPULATION using the available parents PARENTS.
% Two points A and B are chosen at random. The child has the genes of the
% first parent at the locations after A and before B, and the genes of the
% second parent after B and before A. The individual is treated as a ring so
% that sections can wrap around the end.
% Copyright 2003-2007 The MathWorks, Inc.
% If GenomeLength is less than equal to 2 then there is one point to do
% crossover and this becomes single point crossover if GenomeLength <= 2
xoverKids = crossoversinglepoint(parents options ,GenomeLength,FitnessFcn,
unused ,thisPopulation);
return;
end
% where will the crossover points be?
% uniformly distributed over genome
% How many children to produce?
nKids = length(parents)/2;
% Extract information about linear constraints, if any linCon = options.LinearConstr;
constr = ~isequal(linCon.type,'unconstrained’);
% Allocate space for the kids xoverKids = zeros(nKids,GenomeLength);
% To move through the parents twice as fast as thekids are
% being produced, a separate index for the parents is needed index = 1;
Luận Văn Thạc Sĩ GVHD: PGS. TS. Bùi Công Thanh
for i=1:nKids
% get parents parent! = thisPopulation(parents(index),:);
index = index + 1;
parent2 = thisPopulation(parents(index),:);
index = index + 1;
% choose two (nonequal) crossover points sz =length(parent!) - 1;
xOverPointl = ceil(sz * rand);
xOverPoint2 = ceil(sz * rand);
while(xOverPoint2 == xOverPoint1) xOverPoint2 = ceil(sz * rand);
end
% Deal with the case where the splice wraps around the ends.
if(xOverPointl < xOverPoint2) left = xOverPoint1 ;
right = xOverPoint2;
else left = xOverPoint2;
right = xOverPointl ; swap = parentẽ;
parent! = parent2;
parent2 = swap;
end
% make one child xoverKids(i,:) = [ parentl(1:left), parent2(( left+ 1): nght), parent! ((
right+ 1): end) ];
% Make sure that offspring are feasible w.r.t. linear constraints if constr
feasible = is TrialFeasible(xoverKids@,:)',linCon.Aineq,linCon.bineg,linCon.Aeq, ...
linCon.beq,linCon.Ib,linCon.ub,sqrt(options.TolCon));
if ~feasible % Kid is not feasible
% Children are arithmetic mean of two parents (feasible w.r.t
% linear constraints) alpha = rand;
xoverKids(i,:) = alpha*parent! + (1 -alpha)*parent2;
end end
6. Mutationuniform.m file
function mutationChildren = mutationuniform(parents ,options,GenomeLength,FitnessFcn,state ,thisScore,this Population ,mutationRate)
ZMUTATIONUNIFORM Uniform multi-point mutation.
% MUTATIONCHILDREN = MUTATIONUNIFORM(PARENTS OPTIONS GGENOMELENGTH....
% FITNESSFCN,STATE,THISSCORE,THISPOPULATION, ...
% MUTATIONRATE) Creates the mutated children using
% uniform mutations at multiple points. Mutated genes are uniformly
% distributed over the range of the gene. The new value is NOT a function
% of the parents value for the gene.
% Copyright 2003-2007 The MathWorks, Inc.
if nargin < 8 || isempty(mutation Rate) mutationRate = 0.01; % default mutation rate end
if(strempi(options.PopulationT ype, 'doubleV ector')) mutationChildren = zeros(length(parents),GenomeLength);
for i=1:length(parents) child = thisPopulation(parents(i),:);
% Each element of the genome has mutationRate chance of being mutated.
mutationPoints = find(rand(1 ,length(child)) < mutationRate);
% each gene is replaced with a value chosen randomly from the range.
range = options.PopInitRange;
% range can have one column or one for each gene.
[r,c] = size(range);
if(c ~= 1) range = range(: mutationPoints);
end lower = range(1,:);
upper = range(2,:);
span = upper - lower;
child(mutationPoints) = lower + rand(1 ,length(@mutationPoints)) .* span;
mutationChildren(i,:) = child;
end