A Novel Method for Structural Lightweight Design with Topology Optimization
Abstract
:1. Introduction
2. Topology Optimization for Minimum Compliance Problem
2.1. SIMP Method
2.2. Sensitivity Filtering
2.3. Genetic Algorithm
3. Implementation of the SIMP-GA Method
4. Examples and Calculation Process
4.1. MBB Beam
4.2. Cantilever Beam
4.3. Half-Wheel Beam
5. Results and Comparison
5.1. MBB Beam
5.2. Cantilever Beam
5.3. Half-Wheel Beam
5.4. Characteristics of Methods
5.5. Comparison between Methods
5.6. Discussion
6. Conclusions
Author Contributions
Funding
Institutional Review Board Statement
Informed Consent Statement
Data Availability Statement
Conflicts of Interest
Appendix A
- %% %% A TOPOLOGY OPTIMIZATION CODE FOR SIMP-GA METHOD BASED THE GATBX TOOLBOX %%%
- %% THE MAIN FUNCTION
- function top_SIMP_GA_01( nelx,nely,rmin,volfrac,nind,maxgen,loo )
- %% INITIALIZE PARAMETER
- gen = 0;
- ggap = 0.8;
- lowthick = 0.01;
- volfrac = (volfrac-lowthick)/(1-lowthick); %correct the volume fraction
- %% INITIALIZE THE POPULATION
- % chrom = crtrp(nind,fielddr); % ‘chrom’ store the all chromosome of the population
- chrom = max(rand(nind,nelx*nely),lowthick); % ‘chrom’ store the all chromosome of the population
- objv = zeros(nind,1); % initialize the objective function values of the population
- parfor kkk = 1:nind
- [objv(kkk),chrom(kkk,:)] = objv_SG(chrom(kkk,:),nelx,nely,volfrac,rmin,loo,lowthick); % initialize the ‘objv’ and ‘chrom’
- end
- best = objv(1); % initialize the ‘best’,which store the best solution’s objective function value.
- bstgen = chrom(1,:); % initialize the ‘bstgen’,which store the best chromosome
- %% THE MAIN LOOP OF THE GENETIC ALGORITHM
- while gen < maxgen
- sel_chance = rand(nind,1).*objv; % the chance of the individual to be choose
- [B1,I1] = sort(sel_chance);
- selch = chrom(I1(1:nind*ggap),:);
- po_recom = randi([1 nelx*nely-1],nind,1); % the position to crossover
- for ii = 1:size(selch,1)/2
- temp = selch(ii,(po_recom(ii) + 1):end);
- selch(ii,(po_recom(ii) + 1):end) = selch(size(selch,1)-ii + 1,(po_recom(ii) + 1):end);
- selch(size(selch,1)-ii + 1,(po_recom(ii) + 1):end) = temp;
- end
- selch = abs((rand(size(selch,1),size(selch,2)) < 0.1)-selch); % mutation
- % CACULATE THE OBJECTIVE FUNCTION VALUE AND UPDATE THE CHROMOSOME
- objvsel = zeros(nind*ggap,1);
- parfor kkk = 1:nind*ggap
- [objvsel(kkk),selch(kkk,:)] = objv_SG(selch(kkk,:),nelx,nely,volfrac,rmin,loo,lowthick);
- end
- [B2,I2] = sort(rand(nind,1).*objv);
- chrom(I2(1:size(selch,1)),:) = selch; % insert the offspring into the population
- objv(I2(1:size(selch,1)),:) = objvsel;
- chrom(size(selch,1) + 1,:) = bstgen;
- objv(size(selch,1) + 1,:) = best;
- gen = gen + 1;
- % UPDATE THE BEST CHROMOSOME AND IT’S OBJECTIVE FUNCTION VALUE
- [objvsee,aee] = min(objv); %%% find the minimum objective function value and it’s position in the ‘objv’
- if(best > objvsee)
- best = objvsee; %%% update the ‘best’
- bstgen = chrom(aee,:); %%% update the ‘bstgen’
- end
- % DECONE THE BEST CHROMOSOME AND UPDATE THE BEST SOLUTION’S DESIGN VARIABLE
- for ii = 1:(nelx*nely)
- x(floor((ii-1)/nelx) + 1,ii-nelx*(floor((ii-1)/nelx) + 1-1)) = bstgen(ii);
- end
- cvol = sort(bstgen);
- x = min(1,max(ceil(x-cvol(ceil(nelx*nely*(1-volfrac)))),lowthick));
- % PRINT RESULTS AND PLOT DENSITIES
- disp([‘ gen ‘ sprintf(‘%4i’,gen) ‘ compliance: ‘ sprintf(‘%10.10f’,best) …
- ‘ vol: ‘ sprintf(‘%6.5f’,sum(sum(x))/nelx/nely) ])
- colormap(gray); imagesc(-x); axis equal; axis tight; axis off;pause(1e-6);
- end
- %% THE CALLED FUNCTION
- function [objv,chromo] = objv_SG(chromo,nelx,nely,volfrac,rmin,loo,lowthick)
- %% MATERIAL PROPERTIES
- E = 1;
- nu = 0.3;
- %% PREPARE FINITE ELEMENT ANALYSIS
- A11 = [12 3 -6 -3; 3 12 3 0; -6 3 12 -3; -3 0 -3 12];
- A12 = [-6 -3 0 3; -3 -6 -3 -6; 0 -3 -6 3; 3 -6 3 -6];
- B11 = [-4 3 -2 9; 3 -4 -9 4; -2 -9 -4 -3; 9 4 -3 -4];
- B12 = [ 2 -3 4 -9; -3 2 9 -2; 4 9 2 3; -9 -2 3 2];
- KE = 1/(1-nu^2)/24*([A11 A12;A12’ A11] + nu*[B11 B12;B12’ B11])*E;
- nodenrs = reshape(1:(1 + nelx)*(1 + nely),1 + nely,1 + nelx);
- edofVec = reshape(2*nodenrs(1:end-1,1:end-1) + 1,nelx*nely,1);
- edofMat = repmat(edofVec,1,8) + repmat([0 1 2*nely + [2 3 0 1] -2 -1],nelx*nely,1);
- iK = reshape(kron(edofMat,ones(8,1))’,64*nelx*nely,1);
- jK = reshape(kron(edofMat,ones(1,8))’,64*nelx*nely,1);
- % DESIGN LOADS AND SUPPORTS (HALF MBB-BEAM)
- F = sparse(2,1,-1,2*(nely + 1)*(nelx + 1),1);
- U = zeros(2*(nely + 1)*(nelx + 1),1);
- fixeddofs = union([1:2:2*(nely + 1)],[2*(nelx + 1)*(nely + 1)]);
- alldofs = [1:2*(nely + 1)*(nelx + 1)];
- freedofs = setdiff(alldofs,fixeddofs);
- %% PREPARE FILTER
- iH = ones(nelx*nely*(2*(ceil(rmin)-1) + 1)^2,1);
- jH = ones(size(iH));
- sH = zeros(size(iH));
- k = 0;
- for i1 = 1:nelx
- for j1 = 1:nely
- e1 = (i1-1)*nely + j1;
- for i2 = max(i1-(ceil(rmin)-1),1):min(i1 + (ceil(rmin)-1),nelx)
- for j2 = max(j1-(ceil(rmin)-1),1):min(j1 + (ceil(rmin)-1),nely)
- e2 = (i2-1)*nely + j2;
- k = k + 1;
- iH(k) = e1;
- jH(k) = e2;
- sH(k) = max(0,rmin-sqrt((i1-i2)^2 + (j1-j2)^2));
- end
- end
- end
- end
- H = sparse(iH,jH,sH);
- Hs = sum(H,2);
- %% DECODE THE CHROMOSOME INTO DESIGN VARIABLES
- for ii = 1:(nelx*nely) % transform the chromosome into chromatin
- chroma(floor((ii-1)/nelx) + 1,ii-nelx*(floor((ii-1)/nelx) + 1-1)) = chromo(ii);
- end
- cvol = sort(chromo);
- x = max(ceil(chroma-cvol(ceil(nelx*nely*(1-volfrac)))),lowthick); % initialize the design variable
- %% START SMALL INERATION (to update the chromo)
- for loop = 1:loo
- %% FE-ANALYSIS
- sK = reshape(KE(:)*x(:)’,64*nelx*nely,1);
- K = sparse(iK,jK,sK); K = (K + K’)/2;
- U(freedofs) = K(freedofs,freedofs)\F(freedofs);
- %% OBJECTIVE FUNCTION AND SENSITIVITY ANALYSIS
- ce = reshape(sum((U(edofMat)*KE).*U(edofMat),2),nely,nelx);
- c = sum(sum(x.*ce));
- objv = c;
- dc = -ce.*x;
- %% OPTIMALITY CRITERIA UPDATE OF CHROMO AND DENSITIES VARIABLE
- l1 = 0; l2 = 1e9; move = 0.2;
- while (l2-l1)/(l1 + l2) > 1e-3
- lmid = 0.5*(l2 + l1);
- new_chroma = max(0,max(chroma-move,min(1.,min(chroma + move,chroma.*sqrt(-dc./lmid)))));
- if sum(new_chroma(:)) > sum(chroma(:)), l1 = lmid; else l2 = lmid; end
- end
- %% FILTERING/MODIFICATION OF SENSITIVITEIS
- chroma(:) = H*new_chroma(:)./Hs;
- %% UPDATE THE CHROMO AND DESIGN VARIABLE
- for ii = 1:(nelx*nely) % transform the matrix into vector
- chromo(ii) = chroma(floor((ii-1)/nelx) + 1,ii-nelx*(floor((ii-1)/nelx) + 1-1));
- end
- cvol = sort(chromo);
- x = max(ceil(chroma-cvol(ceil(nelx*nely*(1-volfrac)))),lowthick);
- end
References
- Bendsøe, M.P.; Kikuchi, N. Generating optimal topologies in structural design using a homogenization method. Comput. Methods Appl. Mech. Eng. 1988, 71, 197–224. [Google Scholar] [CrossRef]
- Bendsøe, M.P. Optimal shape design as a material distribution problem. Struct. Multidiscip. Optim. 1989, 1, 193–202. [Google Scholar] [CrossRef]
- Mlejnek, H.P. Some aspects of the genesis of structures. Struct. Multidiscip. Optim. 1992, 5, 64–69. [Google Scholar] [CrossRef]
- Stolpe, M.; Svanberg, K. An alternative interpolation scheme for minimum compliance optimization. Struct. Multidiscip. Optim. 2001, 22, 116–124. [Google Scholar] [CrossRef]
- Xie, Y.M.; Steven, G.P. Basic Evolutionary Structural Optimization; Springer: Berlin/Heidelberg, Germany, 1997. [Google Scholar]
- Young, V.; Querin, O.M.; Steven, G.P. 3D and multiple load case bi-directional evolutionary structural optimization (BESO). Struct. Optim. 1999, 18, 183–192. [Google Scholar] [CrossRef]
- Querin, O.M.; Steven, G.P.; Xie, Y.M. Evolutionary structural optimisation (ESO) using a bidirectional algorithm. Eng. Comput. 1998, 15, 1031–1048. [Google Scholar] [CrossRef]
- Querin, O.M.; Young, V.; Steven, G.P. Computational efficiency and validation of bi-directional evolutionary structural optimization. Comput. Methods Appl. Mech. Eng. 2000, 189, 559–573. [Google Scholar] [CrossRef]
- Xia, Q.; Shi, T.L. Generalized hole nucleation through BESO for the level set based topology optimization of multi-material structures. Comput. Methods Appl. Mech. Eng. 2019, 355, 216–233. [Google Scholar] [CrossRef]
- Sethian, J.A. Level Set Methods and Fast Marching Methods: Evolving Interfaces in Computational Geometry, Fluid Mechanics, Computer Vision, and Materials Science; Cambridge University Press: Cambridge, UK, 1999. [Google Scholar]
- Wang, Y.; Kang, Z. Structural shape and topology optimization of cast parts using level set method. Int. J. Numer. Methods Eng. 2017, 111, 1252–1273. [Google Scholar] [CrossRef]
- Holland, J.H. Adaptation in Natural and Artificial Systems; The University of Michigan Press: Ann Arbor, MI, USA, 1975. [Google Scholar]
- Vaissier, B.; Pernot, J.P.; Chougrani, L.; Véron, P. Genetic-algorithm based framework for lattice support structure optimization in additive manufacturing. Comput. Aided Des. 2019, 110, 11–23. [Google Scholar] [CrossRef]
- Goldberg, D.E.; Samtani, M.P. Engineering optimization via genetic algorithms. In Electronic Computation, Proceedings of the 9th Conference on Electronic Computation, Birmingham, UK, 23–26 February 1986; Amer Society of Civil Engineers: Reston, VA, USA, 1986. [Google Scholar]
- Sigmund, O. A 99 line topology optimization code written in Matlab. Struct. Multidiscip. Optim. 2001, 21, 120–127. [Google Scholar] [CrossRef]
- Zhu, B.; Skouras, M.; Chen, D.; Matusik, W. Two-scale topology optimization with microstructures. Acm Trans. Graph. 2017, 84, 1–19. [Google Scholar] [CrossRef] [Green Version]
- Otomori, M.; Yamda, T.; Izui, K. Matlab code for a level set-based topology optimization method using a reaction diffusion equation. Struct. Multidiscip. Optim. 2015, 51, 1159–1172. [Google Scholar] [CrossRef] [Green Version]
- Huang, X.; Xie, Y.M. Evolutionary topology optimization of continuum structures including design-dependent self-weight loads. Finite Elem. Anal. Des. 2011, 47, 942–948. [Google Scholar] [CrossRef]
- Rozvany, G. A critical review of established methods of structural topology optimization. Struct. Multidiscip. Optim. 2009, 37, 217–237. [Google Scholar] [CrossRef]
- Hajela, P.; Lee, E. Genetic algorithms in truss topological optimization. Int. J. Solids Struct. 1995, 32, 3341–3357. [Google Scholar] [CrossRef]
- Wang, S.Y.; Tai, K. Structural topology design optimization using Genetic Algorithms with a bit-array representation. Comput. Methods Appl. Mech. Eng. 2005, 194, 3749–3770. [Google Scholar] [CrossRef]
- Wang, S.Y.; Tai, K.; Wang, M.Y. An enhanced genetic algorithm for structural topology optimization. Int. J. Numer. Methods Eng. 2006, 65, 18–44. [Google Scholar] [CrossRef]
- Jakiela, M.J.; Chapman, C.; Duda, J. Continuum structural topology design with genetic algorithms. Comput. Methods Appl. Mech. Eng. 2000, 186, 339–356. [Google Scholar] [CrossRef]
- Fanjoy, D.W.; Crossley, W.A. Topology Design of planar cross-sections with a genetic algorithm: Part 1—Overcoming the obstacles. Eng. Optim. 2002, 34, 1–22. [Google Scholar] [CrossRef]
- Liu, X.; Yi, W.J.; Li, Q.S. Genetic evolutionary structural optimization. Steel Constr. 2004, 64, 305–311. [Google Scholar] [CrossRef]
- Zuo, Z.H.; Xie, Y.M.; Huang, X. Combining genetic algorithms with BESO for topology optimization. Struct. Multidiscip. Optim. 2009, 38, 511–523. [Google Scholar] [CrossRef]
- Chen, Z.M.; Gao, L.; Qiu, H.B.; Shao, X.Y. Combining genetic algorithms with optimality criteria method for topology optimization. In Proceedings of the 2009 Fourth International on Conference on Bio-Inspired Computing, Beijing, China, 16–19 October 2009. [Google Scholar]
- Qu, D.Y.; Huang, Y.Y.; Song, L.Y. Structural topology optimization based on improved genetic algorithm. In Proceedings of the 4nd International Conference on Mechanical Engineering and Green Manufacturing (MEGM2015), Guilin, China, 30–31 August 2015. [Google Scholar]
- Andreassen, E.; Clausen, A.; Schevenels, M. Efficient topology optimization in MATLAB using 88 lines of code. Struct. Multidiscip. Optim. 2011, 43, 1–16. [Google Scholar] [CrossRef] [Green Version]
Optimization Method | SIMP-GA | SIMP | ||
---|---|---|---|---|
Best | Worst | Mean | ||
161.7409 | 163.6455 | 162.5064 | 173.2377 |
Optimization Method | SIMP-GA | SIMP | ||
---|---|---|---|---|
Best | Worst | Mean | ||
62.305 | 62.96 | 62.699 | 65.92 |
Optimization Method | SIMP-GA | SIMP | BESO | ||
---|---|---|---|---|---|
Best | Worst | Mean | |||
26.1738 | 26.4424 | 26.3380 | 65.92 | 26.5683 |
Number of cores | 1 | 2 | 3 |
Calculating time (s) | 173 | 95 | 72 |
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations. |
© 2021 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Xue, H.; Yu, H.; Zhang, X.; Quan, Q. A Novel Method for Structural Lightweight Design with Topology Optimization. Energies 2021, 14, 4367. https://doi.org/10.3390/en14144367
Xue H, Yu H, Zhang X, Quan Q. A Novel Method for Structural Lightweight Design with Topology Optimization. Energies. 2021; 14(14):4367. https://doi.org/10.3390/en14144367
Chicago/Turabian StyleXue, Hongjun, Haiyang Yu, Xiaoyan Zhang, and Qi Quan. 2021. "A Novel Method for Structural Lightweight Design with Topology Optimization" Energies 14, no. 14: 4367. https://doi.org/10.3390/en14144367
APA StyleXue, H., Yu, H., Zhang, X., & Quan, Q. (2021). A Novel Method for Structural Lightweight Design with Topology Optimization. Energies, 14(14), 4367. https://doi.org/10.3390/en14144367