【BiliBili】 【知乎】 【QQ空间】 【微博】


博学慎思,坚持创新,求知若飢,虛心若愚                       关键字     类型    
  • 博主
  • 全部
  • 日志
  • 研究
  • 论文
  • 自编程序
  • 工程
  • Dino笔记
  • DinoBox
  • OpenSEES
  • Dino公开课
  • 每周挑战
  • Dino爱编程
  • 留言板

DinoBox

ETE_Frame3D
结构分析程序
ETE_Frame3D
2022-01-19
ETE-section截面分析程序
ETE-section
2021-08-19
ETO_OpenSEES前后处理程序
程序通过邮件申请。
★注意,软件不能下载,是通过邮箱发送软件的。

申请ETO时,注意EMAIL 的写法:(格式一定要对,否则电脑收不到)
邮件题目: ETO (版本号) 下载
注册人: (真实姓名)
学校/单位: (大学或工作单位)
邮件回复,大约需要1~4天的时间。
ETO_程序
2014-03-26
上一篇 | 下一篇
Dino笔记 订阅所有Dino笔记的日志

[Dino笔记]粒子群算法在钢结构优化分析中的应用

作者:dinochen1983 日期:2021-12-23

字体大小: 小 中 大

【Dino结构笔记】粒子群优化算法在钢结构优化分析中的应用

[小记]12月22日,昨天看了《黑客帝国4》的电影,电影有一幕鸟群觅食的动画,让我想起了粒子群的优化算法。
以下是本篇笔记的相关内容:

【点击下载】 _PSO优化算法_python代码
【点击下载】 _相关的ETABS与OPENSEES模型文件

粒子群优化算法,也叫鸟群觅食算法

上次已经介绍了基于OPENSEES的遗传算法在钢结构优化中的应用。这次介绍粒子群优化算法的使用,同样基于OPENSEES平台进行二次开发。粒子群算法(Particle Swam Optimization,简称PSO),是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。这个算法相对容易理解与实现,采用的随机优化算法,每次迭代需要进行结构计算,采用无界面的OPENSEES是好的选择。一般在优化算法的书或网页都有该算法的介绍,网上还可以下载相关的python代码。但是网上的算法只介绍优化算法的细节及对一个方程式的求解,并没有结构工程相关实例,那么本节笔记以一个简单的实例介绍算法应用的过程。
相关阅读:
http://dinochen.com/article.asp?id=362

一般学习优化算法在结构工程中的应用:
(1)了解算法的细节,可以下载python代码学习
(2)采用结构分析软件如OPENSEES,走通第一个结构分析的实例
(3)将结构分析代码化,把参数融入结构模型当中,实现改参数改模型
(4)编程控制结构分析程序迭代计算
(5)将计算结果提取计算适应度,生成下一步的结构模型参数。
 
粒子群优化算法的介绍
粒子群优化算法属于随机优化算法的一种,在结构工程能够较好的运用,结合OPENSEES进行二次开发以后就可以使用了。
具体优化计原理可以看这里:
https://cloud.tencent.com/developer/article/1424756

以一个二维方程的最大值求解为例,整个PSO的迭代过程动画如下图所示。PSO的经典算法的Python代码可以在下面下载。

以下求解方程是:y=100*(x1*x1-x2)^2+ (x1-1)^2

 
编制PSO优化算法求解曲面方程解

那么这一期的Dino结构笔记就通过OPENSEES, ETABS等软件结合编程实现一个粒子群算法的计算,以一个曲线布置的钢桁架结构为例进行介绍吧。

实例:对一定总重量(恒定的)的曲线钢桁架结构进行结构优化,使桁架在重力荷载作用下(荷载如下图所示)的变形最小,也即是刚度最大。桁架上弦的节点的作用力为150kN,由于桁架是对称的,采用半跨建模,初始条件,全部截面的尺寸为4000mm2,统计一下,半跨的桁架的总重量约为2.359 ton。

计算简图如下图所示。通过粒子群优化算法确定每一节截面的大小,以保证在用钢量一定的情况下总刚度最大,变形最小。

  
钢桁架的计算简图
模型可以在CAD进行建模后,保存为DXF文件后导入ETABS程序中再进行建模。

(1) 这个实例我打算采用OPENSEES进行分析,那么首先我们建立ETABS模型,加入支座与荷载条件,如下图所示,导出S2K文件以供导入OPENSEES所用。
 

桁架在ETABS中建模

(2) 导入ETO生成OPENSEES的分析命令流文件,导入ETO以后处到桁架的构件编号如图所示。在OPENSEES中我们只需要输入点9 ,10 ,11 ,12 ,19 ,14的竖向位移,程序求解这几个节点竖向位移的最大值,做为粒子群算法的评分标准,也就是适应度,这些点的位移越小,评分越高,代表粒子群算法中的粒子接近目标点。
 钢桁架在OPENSEES中的建模
 
ETO展示模型的单元与节点编号

(3) OpenSEES的命令流如下所示,命令流分为3个部分:
第一部分:节点、材料与支座条件(分析过程中不发生改变)
第二部分:截面(分析过程中不断改变),采用引入文件  source section_1.tcl
第三部分:分析与结果提取,结果提取的命字改变,即:
recorder Node -file node.out -node 9 10 11 12 19 14 -dof 3 disp
不同的个体(粒子)分析存储的文件名不同, 分别是 node1~node50.out, 记录几个上弦节点的竖向位移,本算例的粒子群为50个粒子(size = 50)
基本TCL命令流如下:
model basic -ndm 3 -ndf 6
node 1 0.000E+000 0.000E+000 0.000E+000
………
node 20 7.500E+003 0.000E+000 4.238E+003
fix 1 1 1 1 1 1 1;
………
fix 21 0 1 0 1 1 1;
uniaxialMaterial Elastic 1 1.999E+005
source section_1.tcl
recorder Node -file node.out -node 9 10 11 12 19 14 -dof 3 disp

## Load Case = DEAD
pattern Plain 1 Linear {
load 9 0.000E+000 0.000E+000 -1.500E+005 0.000E+000 0.000E+000 0.000E+000
……
load 19 0.000E+000 0.000E+000 -1.500E+005 0.000E+000 0.000E+000 0.000E+000
}
constraints Plain
numberer Plain
system BandGeneral
test EnergyIncr 1.0e-6 200
algorithm Newton
integrator LoadControl 1
analysis Static
analyze 1

(4) 桁架截面在粒子群优化算法的过程中是不断变化的,所以这个文件需要不断的修改,50个粒子群的文件存储,如其中一个粒子的相关截面文件section_1.tcl如下所示。
element truss 1 1 15 157.687 1
……
element truss 37 7 14 357.453 1

(5) 基本的OPENSEES的文件构造就搭好了,只要Run OpenSEES,程序就会计算出不同截面布置情况下的上弦节点的竖向位移,我们的目标就是让这些节点位移的最小。

 

整个简化PSO算法的流程图
图中g_best就是群组最优解,p_best单个粒子整个过程的最优解。

(6) 接下来我们就需要通过编程实现PSO优化算法,并控制OPENSEES不断计算。这里我采用DELPHI进行编程,编了一个简化的粒子群算法逻辑,详细可以参考PYTHON代码。流程图如下图所示。
粒子群算法的主要内容如下:
a). 随机生成50个母代桁架结构模型,截面是随机大小分布,总重量恒定
b). 采用OPENSEES作为计算核心计算出50个桁架的位移作为评分标准(适应度)
c). 对桁架进行排序,位移最小则最优,得到单个粒子最优位置及群粒子最优位置,通过这两个位置计算粒子下一步的速度向量v与更新位置x。
d). 根据向量计算得到的新的位置X计算得到新的50个桁架模型(更新桁架截面)。
f)把下一批50个粒子交给OPENEES进行计算,即执行b的操作,整个过程循环操作。
最后粒子群算法的程序编好,如图所示,迭代次数与上弦节点的竖向位移曲线如图所示。

基于OPENSEES的粒子群算法控制程序


证明,随着粒子群算法的不断迭代,桁架的刚度越来越大。上弦节点的位移从51.20降至18.91mm。ETABS对应的计算结果是51.07降到18.48mm。


 迭代次数与竖向位移值的关系


(7) 采用ETABS进行分析:原方案与最后优化方案的用钢量是相等
原方案:全部杆件的截面为4000mm2,14号节点竖向变形为51.07mm
优化方案:每个截面如下图表所示,14号节点竖向变形为18.48mm。刚度有了明显的提高。而这个算法的优化方向是指定的,虽然有可能不是最优,但是足够指导工程设计了。

  
原方案的ETABS计算结果
   
优化方案的ETABS计算结果


最终优化所得截面使位移最小


最初状态与优化后的钢结构桁架变形图对比


OPENSEES模型变形动画图

 
鸟群觅食图

总结:遗传算法与粒子群优化(鸟群觅食)算法一样思维都来自大自然,遗传算法是通过把样本往时间(世代)铺开进行迭代优化,把适应度高的东西保存下来,而粒子群优化是通过(多维)空间把大样本铺开,将接近最优空间点的样本找出来。鸟群觅食的小鸟会通过自身经验(粒子过程最优解)与打探消息(全局最优化解),根据这两者提供的方向作为综合考虑得到下一步解的方向,然后见一步走一步,最终求得最优解。
====本节完====

请关注我的微信公众号:DINOSTRU


更多有趣的结构分析知识分享



[本日志由 dinochen1983 于 2021-12-23 06:29 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: openseesopensees 钢结构钢结构 优化优化
评论: 0 | 引用: 0 | 查看次数: 2747
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: 验证码
Dino:如果看不到验证码,再刷几下就可以了
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 200 字 | UBB代码 关闭 | [img]标签 关闭

信息(Information)

DinoChen 视频频道

My GitHub Page



扫描以下二维码,加入公众号!


dinochen.com需要你的支持


日历(Calendar)

2022年5月
  • 日
  • 一
  • 二
  • 三
  • 四
  • 五
  • 六
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4

查找(Search)

关键字
 
类 型

文章(Recent Article)

[OpenSEES]OpenSEES实例教程[汇总...[OpenSEES] 新版ETO更新及相关下载方法...[新闻]祝韩老师荣获广东省科技进步一等奖[程序]ETE-section功能更新:可修改划分...[App开发]采用Swfit语言编制经典的推箱子游...[程序]ETE-section更新_考虑混凝土保护...[App开发]SecData钢结构截面数据查询(新...[App开发]成语我抖Wordle成语猜谜游戏[Dino爱编程]用Python+Pillow画一...[程序]ETE-section更新_截面洞口与Op...

评论(Comments)

可以打开的,新版的ETO需要联网,电脑不可以,可以...下载下了,软件不能打开,提示需要授权,授权怎么弄呢...您好,陈博士。程序怎么打不开了陈博,这个小程序,最近显示访问违规是什么情况呢?程序打不开,请问是需要注册吗?如何注册?请教,软件提示要注册,怎么才能注册?陈博士,您好:最新的程序使用一段时间后,再打开就显...好的,中文版已经列入编程的计划当中。界面能弄成中文的吗?看英文有点吃力。这个软件在计算多夸连续梁时,添加非均布荷载,且起始...

留言(GuestBook)

I love assembling utile i...陈博,新版ETO下载以后界面打不开是什么原因呢,旧...陈博士您好,请问可以出一期画易损性曲线的教程吗陈博士您好,我在学习您4.33侧向多自由度简化模型...陈博士您好,計算wind2019的program ...陈博士,您好,我下载使用了您编写的压型钢板组合楼板...陈博士您好,我是opensee初学者,想向您请教两...陈博士你好,请问开洞混凝土截面,ETE-secti...陈博士您好,感谢您的回复,我的刚性隔板设置了转动惯...陈博士您好,我看了《足尺钢框架振动台试验及动力弹塑...

TagBar

Loading...

用户面板(User Panel)

登录用户注册

统计(Statistics)

日志: 404 篇
评论: 881 个
留言: 407 个
访问: 13718274 次
在线: 8 人
建站时间: 2008-02-08

Powered By PJBlog3 V2.7 Build 05 CopyRight 2005 - 2011, 陈学伟的博客

Processed in 0.266113 second(s) , 6 queries 粤ICP备15071789号-1