作者:周平章
链接:https://www.zhihu.com/question/52008623/answer/187927508
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

不知道这个问题提出来有多久了,我是拓扑优化方向的PhD,下面是我自己的一点感受,未必准确。

-------------------------------------------------------

首先说结论:从现在的情形来看,水平集法以及其余所有方法都不能在短时间内超越变密度法。

  1. 变密度法源于均一化方法,相对于均一化方法,变密度法所需要的设计变量数目大大减少了。目前通常所说的变密度法均是指基于单元(或者节点)伪密度方法的拓扑优化方法。
  2. 这种方法思路清晰,程序设计流程简单,也比较容易与现有商业有限元软件进行集成。因此现有的所有商业软件中的拓扑优化功能都是基于变密度方法来实现的。
  3. 变密度法相对于其余所有方法的最大优势是:适用于任意形状的设计域。对于复杂几何形状的设计域的天然普适性是目前所有其他拓扑优化方法所不具备的。这一点可能在学术界做research的时候感受还不明显(因为做research的时候大家都会用非常规则化的可行设计域,不是一块平板就是一个立方体),但一旦到了工业界这个问题就会非常重要。
  4. 很多水平集相关的论文均所称赞的,水平集方法相对于变密度法的优势是,水平集方法能够获得显式(explicit)、清晰(crisp)的拓扑边界。而这种称赞的后面一般都跟着鄙视一下变密度法所得结果所具有的模糊边界。对这个问题,我从两个角度谈我的看法。(1)拓扑优化方法本身在产品设计的周期中多用于概念设计阶段,也就是产品设计的初期。因此,工程师在使用拓扑优化方法的时候可能并不需要知道这根梁的直径到底是10.1mm还是10.5mm。在这个产品的大致形状确定之后,还有一系列的工作要做,在强度校核等过程中,产品的尺寸是会精确地确定下来的。也就是说,即使你用水平集方法得到了显式清晰的边界,这个边界也绝不会直接被当做最终产品的尺寸。(2)在2010年以后到现在这七年里,变密度法又得到了一些发展,现在用变密度法的时候大多会配合使用一些投影(projection)技术,这样,通过变密度法得到的设计结果也可以得到很清晰的拓扑构型。
  5. 从计算量的角度,水平集和变密度法的计算量都不小,从设计变量的个数上来说,二者没什么差别,都取决于网格的规模:或者等于节点数目,或者等于网格数目。但水平集法所需要求解的是扩散方程,而变密度法所需要求解的是一个优化问题,一般均认为水平集法所求解的数学问题要比变密度法更难一些。值得注意的是,近年来不断有学者从各个角度尝试降低拓扑优化中的设计变量数目,思路很多,比如大连理工的郭旭老师所提出的MMC方法等等。我自己在这方面也有一些思考,这一块确实还是大有可为的。
  6. 我曾经跟圈内很多人聊过关于变密度法和水平集方法的对比问题,我记得周明老师是这么说的,变密度法和水平集方法,这两者的共同点要远远多于它们的不同点。近年来不断有人提出类似的观点,从这两种方法的发展来看,它们均在不断地借鉴对方的一些优点。所以,如果将来这两种方法在更高层次的数学模型中得到了完全统一,我也不会表示很惊奇。
 
 
作者:菲兹
链接:https://www.zhihu.com/question/52008623/answer/156931579
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

SIMP 法:

优点: 结构设计变量(单元密度)和优化问题直接挂钩对应,即拓扑结构explicitly dependent on设计变量。优化算法收敛好,灵敏度简单易算。可以直接进行基于有限元的离散设计灵敏度计算。适用于结合更复杂的非线性结构拓扑,比如几何非线性和材料非线性问题。

缺点:优化出来的拓扑结构边界不够清晰,特别是当过滤半径比较大的时候。 这些灰度区域没有物理意义,设计如果无后处理无法直接用于制造。

Level-set 法:

优点:用一个高纬度的水平集implicitly表达拓扑结构的边界,从而解决了SIMP法的灰度区域问题。拓扑结果边界清晰,无灰度区域,设计可以直接用于制造。

缺点:由于设计变量间接与优化问题挂钩,中间涉及一些被水平集切割的有限单元的近似,从而影响优化精度。水平集方程需要用PDE方程来更新,中间还需要重置水平集方程来保证PDE的持续更新,从而大大降低优化收敛速度或者甚至无法收敛。PDE需要连续形状灵敏度来更新,相比SIMP的离散设计灵敏度更难。线弹性体的连续形状灵敏度已经发展很成熟,但是非线性结构连续形状灵敏度非常难求,需要很高的数学基础。

PS: 水平集是高维的,但是实现起来并不复杂。在原来有限元网格基础上再增加一个水平集网格就好了。

拓扑优化中SIMP方法与水平集方法有何优缺点,水平集法变换到高维,不是更复杂了的更多相关文章

  1. lua中 table 重构index/pairs元方法优化table内存占用

    转载请标明出处http://www.cnblogs.com/zblade/ lua作为游戏的热更新首选的脚本,其优势不再过多的赘述.今天,我主要写一下如何重写lua中的元方法,通过自己的重写来实现对l ...

  2. Python中os和shutil模块实用方法集…

    Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...

  3. 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理

    [微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...

  4. .Net中的AOP系列之《方法执行前后——边界切面》

    返回<.Net中的AOP>系列学习总目录 本篇目录 边界切面 PostSharp方法边界 方法边界 VS 方法拦截 ASP.NET HttpModule边界 真实案例--检查是否为移动端用 ...

  5. 在.net中读写config文件的各种方法

    阅读目录 开始 config文件 - 自定义配置节点 config文件 - Property config文件 - Element config文件 - CDATA config文件 - Collec ...

  6. 【跟着子迟品 underscore】如何优雅地写一个『在数组中寻找指定元素』的方法

    Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...

  7. iOS中UI阶段常用的一些方法

    UI 即 UserInterface(用户界面 1.iOS系统版本,每年都有更新.对我们开发者而言,主要的是观察API的变化. 2.iPhone新手机发布,会产生不同尺寸的屏幕,现在市面上有4种尺寸, ...

  8. 不修改代码就能优化ASP.NET网站性能的一些方法

    阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一些方法用于优化ASP.NET网站性能,这些方法都是不 ...

  9. Android中仿淘宝首页顶部滚动自定义HorizontalScrollView定时水平自动切换图片

    Android中仿淘宝首页顶部滚动自定义HorizontalScrollView定时水平自动切换图片 自定义ADPager 自定义水平滚动的ScrollView效仿ViewPager 当遇到要在Vie ...

随机推荐

  1. Nginx负载均衡配置调优

    worker_processes ; error_log logs/error.log crit; #日志位置和日志级别 pid logs/nginx.pid; worker_rlimit_nofil ...

  2. Python 练习:三级菜单选择城市

    info = { 'GuangDong':{ 'GuangZhou': ['TianHe', 'HaiZhu'], 'MaoMing': ['MaoNan', 'DianBai']}, 'ShanDo ...

  3. Push notification - Caused by java.io.IOException toDerInputStream rejects tag

    苹果推送 : 文件不是P12文件当生成一个P12,需要选择两个,在钥匙串访问的私钥和证书.

  4. php文件与HTML页面的数据交互

    注意:首先需要保证本地配置了php开发环境,如WAMP开发环境 WAMP配置:https://www.cnblogs.com/shiyiaccn/p/9984579.html php获取HTML页面返 ...

  5. Android 震动模式

    震动类 public class VibratorUtil { private static final long DEFAULT_VIBRATOR = 100; private static Vib ...

  6. js 监听事件的叠加和移除

    html DOM元素有很多on开头的监听事件,如onload.onclick等,见DOM事件列表.但是同一种事件,后面注册的会覆盖前面的: window.onresize = function(){ ...

  7. SQLSERVER 死锁

    select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tra ...

  8. pip更新及Requirement already up-to-date解决方法

    pip更新及Requirement already up-to-date解决方法 文:铁乐与猫 2018-9-11 更新命令 将pip更新到最新版本 python -m pip install --u ...

  9. Centos7系统下编写systemd脚本设置redis开机自启动

    今天想设置redis开机自启动,我觉得这样子比较好,但是在网上找了很长时间发现大家都是基于chkconfig的写法来设置的,并不能由systemd进程来统一管理,所以这里我自己编写了一个,希望大家可以 ...

  10. emacs org-mode文件转html文件

    Table of Contents 1. 发布站点 by emacs org-mode 1.1 org-mode 自带的导出方法 1.2 批量导出 1.3 css 美化 1.4 导出html 1. 发 ...