作者:周平章
链接: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. webpack4 系列教程(九): CSS Tree Shaking

    教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步原文地址 有空就来看看个人技术小站, 我一直都在 0. 课程介绍和资料 本次课程的代码目录(如下图所示): >>> ...

  2. jsp使用servlet实现文件上传

    1.在index.jsp中写入以下代码 <form method="post" action="demo3" enctype="multipar ...

  3. React 入门学习笔记整理(七)—— 生命周期

    (1)react 生命周期 只有类组件有生命周期,函数组件没有生命周期 1.挂载阶段:这些方法会在组件实例被创建和插入DOM中时被调用: 1)constructor(props) 初始化组件的状态.绑 ...

  4. 从零开始学习html(七)CSS样式基本知识

    一.内联式css样式,直接写在现有的HTML标签中 <!DOCTYPE HTML> <html> <head> <meta http-equiv=" ...

  5. python自动化开发-9 进程 线程

    进程与线程 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一 ...

  6. 《Inside C#》笔记(十四) 反射

    通过反射可以在运行时动态地获取一个应用的元数据. 一 反射相关的类和方法 与反射相关的类处在System.Reflection命名空间下,包括Assembly.Module.MethodInfo.Fi ...

  7. Android--px(像素)和dp、sp之间的相互转化

    public class DensityUtil { public DensityUtil() { } public static int dip2px(Context var0, float var ...

  8. vmare连接远程服务器的问题

    测试环境:两端都是VMware Workstation 12 Pro 1.需要共享虚拟机 在虚拟机上点击右键 -> Manage -> Share 后面按照操作设置 2.远程服务器的443 ...

  9. [20171106]配置客户端连接注意.txt

    [20171106]配置客户端连接注意.txt --//在配置客户端连接时一般建议使用Net Manager工具,windows下调用执行Net Manager.--//linux下执行 netmgr ...

  10. 修改css的(屏蔽)overflow: hidden;实现浏览器能把网页全图保存成图片

    摘要: 1.项目需要,需要对网页内容“下载”保存成全图片 2.QQ浏览器等主流浏览器都支持这种下载保存功能 3.项目需要场景:编写好的项目维护文档,放在服务器上.如果是txt不能带图片可视化,如果wo ...