基于MATLAB和Optistruct的C形夹拓扑优化 - 图文 - 下载本文

SIMP对应的柔度函数和敏度形式:

C(x)???Emin?xjp?E?{Uj}T[Kj]{Uj} (2.4)

j?1nC?(x)???pxjp?1{Uj}T[Kj]{Uj}?E (2.5)

j?1n其中:以上各式中,[Kj]表示第j个单元的刚度矩阵。{U}表示结构的位移向量;x表示设计变量,为避免总刚度矩阵奇异,取xmin=0.001。n为单元数目,

C表示结构的柔度,C?表示柔度关于设计变量的敏度。

2.3 优化准则的基本理论

刚度拓扑优化问题,是典型的具有不等式约束的非线性规划问题。不等式约束多元函数极值的必要条件是Kuhn-Tucker条件,它是采用优化准则法求解非线性优化问题的重要理论。引入对设计变量上下限约束的拉格朗日乘子?1、?2以及对体积约束的拉格朗日乘子?,构造Lagrange函数L为如下形式:

L?C(xj)??(?Vjxj?V)??([K]{U}?{F})???(xmin?xj)???j2(xj?xmax)

T1jj?1j?1j?1nnn(2.6)

对于Lagrange函数,当xmin?xj ?xmax时,设计变量的上下限侧面约束均不起作用,设计变量是主动变量。主动变量在迭代过程中作为设计变量允许发生改

2变,?1j??j?0;当xmin?xj时,仅设计变量下限约束起作用,设计变量为被动2变量,?1j?0,?j?0;当xmax?xj时,仅设计变量上限约束起作用,设计变量也

2为被动变量,?1?0,?jj?0。被动变量在迭代过程中不能变化,只能由侧面约束

的边界值来确定[2]。

第3章 优化设计的数学模型及解决方案

3.1问题描述

如图所示,C形夹在自由端口受到三角形分布力F的作用,要求在保持对原材料体积一定缩减比的情况下对原实体悬臂梁做结构拓扑优化设计,优化目标是使结构刚度最大。(优化的结果应该使原设计区域产生孔洞,使结构拓扑发生变化。)

原实体C形夹为如下图3.1所示的C形,尺寸如下图所示,材料为45钢,密度ρ为7.8?103kg/m3,弹性模量E?2e5MPa,泊松比??0.3。F?20N。

图3.1 C形夹的尺寸和受力(单位:mm)

3.2 优化问题的数学模型

该问题中,要求同时满足刚度最大,质量最轻,这两个变量若同时改变,则问题复杂度太大,并且可能导致问题不可求解。所以我们采用在确定的质量下,来讨论刚度最大的问题。由于对特定的材料,其质量和体积有一定的关系,并且我们采用去除法的思想来建立模型的,故我们可以采用给优化后的体积与优化前的体积比赋确定的值,来达到在给定质量条件下满足刚度最大的问题。其数学模型如下:

N?TepTMinimize:C(X)?{U}[K]{U}?(x)uek0ue??Te?1?X?{x1,x2,...,xn}??n???Vjxj?V?0,??j?1?Subject to:?0?x?x?1,?minj??j?1,2,...,n?????[K][U]=[F].? (1)

注:其中C(X)为结构变形能,U为结构变形总位移矩阵,K为结构总刚度矩阵,N为划分单元总数,ue 为单元位移向量,k0为单元刚度,(由于划分单元的时候,我们采用等分矩形单元,所以每个单元的刚度可用一个常量来处理)

Vj是拓扑结构优化过程中变化着的体积,V为未经过优化前悬臂梁的体积。F为结构所受的三角形载荷。xj为悬臂梁的相对密度。

3.3 模型分析求解方法选择

对该问题是用两种方法求解。方法一:基于matlab的变密度拓扑优化法;方法二:是用成熟的有限元拓扑优化软件Optistruct进行优化。

基于matlab的变密度拓扑优化

该问题的优化方法有很多种,常用的有如下方法: Optimality Criteria(OC) methods,(优化准则方法)

Sequential Linear Programming (SLP) methods(序列线性规划法) Method of Moving Asymptotes (MMA bySvanberg 1987)等

为了简化问题的复杂度,此处我们采用standard OC-method.方法来实现。 在处理过程中,关于设计变量相对密度x每一步的更新,我们采用Bends?e在1995年提出的如下算法来实现。

第四章 拓扑优化步骤及结果

4.1 基于matlab的变密度拓扑优化 4.1.1 问题求解的关键技术及代码

一般而言,由于OC法所使用的单元是矩形,所以OC法很适合求解求解域为矩形的优化问题,而本文选题为一C形结构,若使用OC法,则需将C形结构划分成为三个矩形的集合,因而在整体刚度矩阵的组装方面应该考虑如何进行,由于本程序是参考经典99行OC法拓扑优化程序改变,对于程序中避免边界锯齿现象所使用的check函数,该如何进行修改,以及如何进行边界条件的施加。

优化问题的初值条件:

Nelx=60 x方向单元的数目为60 nely=50 y方向单元的数目为50

volfrac=0.35 保留原材料的体积分数为0.35

penal=3.0 抑制权值为3.0(该取值是资料建议的典型值) rmin=1.2 过滤大小为1.2(该取值是资料建议的典型值) 关键代码:

function [xnew]=OC(nelx,nely,x,volfrac,dc) %%定义OC优化准则函数 l1 = 0; l2 = 100000; move = 0.2; while (l2-l1 > 1e-4)

lmid = 0.5*(l2+l1); %采用折半查找

xnew = max(0.001,max(x-move,min(1.,min(x+move,x.*sqrt(-dc./lmid))))); %%根据xj和敏度dc更新x的值%%%

if sum(sum(xnew)) - volfrac*nelx*nely > 0;%%根据迭代过程中体积比是否达到预设的体积比,判断迭代是否继续进行%%

l1 = lmid; else l2 = lmid; end end

for ely = 1:nely

for elx = 1:(nelx-20) %%取C形夹的左半矩形区域 n1 = (nely+1)*(elx-1)+ely; n2 = (nely+1)* elx +ely;

Ue = U([2*n1-1;2*n1; 2*n2-1;2*n2; 2*n2+1;2*n2+2; 2*n1+1;2*n1+2],1); %%单元位移向量%% x(16:35,41:nelx)=0.001;

c = c + x(ely,elx)^penal*Ue'*KE*Ue;%目标函数

dc(ely,elx) = -penal*x(ely,elx)^(penal-1)*Ue'*KE*Ue;%%敏度值dc end end

4.1.2 拓扑优化结果及分析

实验结果分析: