请教:流体力学中的最优化问题
阻力最小应该是机翼形状应该满足的一项基本条件。实际生活中,类似的最优化问题很多(如鱼的游泳)。请问,这方面有没有比较成熟的理论?有没有经典的著作? 我是新手,我也不会啊。不过帮你顶一下。 最优化应该是数学。理论是有的。不过如何用于流体,则是另外一会事情。比如,阻力最小是合理的目标函数吗?最多,只是条件之一。那么,还需要满足什么条件呢?这些问题都不是理论能够解决的。 通流说的时目标函数的问题,也就是理解设计目的的问题。如果知道什么是优化目标,那么还是有不少理论来做优化,以节省计算量的。比如http://seit.unsw.adfa.edu.au/research/sites/mdo/
但是,对于复杂非定常,尤其是具有混沌特性的流动和/或者湍流,传统的优化算法常常失效,所以这也是为什么做优化的人没办法理解CFD的人为什么算个问题动不动几个月的原因 如果能够算出个有用的解,几个月时间不长。确实有成功的例子。有人就是把商业软件拼起来,如FLUENT和isight,有时能用的。不过,垃圾结果也不少。 优化算法有很多,大家都希望能用自动化的方式完成整个优化过程,但实际上往往需要人工干预,所以感觉这个方向还不是很成熟,见的最多的例子是翼型优化,主要就是因为翼型网格相对简单,同时计算量也比较小,因而比较容易实现自动计算吧。 恩,老周说到点子上 站长说的是目前的情况。我从楼主的第一句话中觉得他其实对优化不是很了解。
优化的数学理论虽然不是很完美,但是足够了。全局优化也能通过一些笨的办法实现。我想如果用户很够提出合理的目标函数和合理的限制条件,优化是可以自动完成的。
不过目标函数和限制条件对于大多数问题,是给不完全的。这应该是造成人工干预的原因。
我这里再瞎扯点不是我的专业的东西,onesupeng可能又会挤得我几句。像鱼的游动的问题。首先对于鱼,是个生存问题。简单的用阻力和驱动并不能真正回答这些问题。即使是就是游泳,速度可能比较容易表达,那么灵活性的数学表达就不太容易了。 我不挤你啊,我第一个回帖不是说清楚了嘛,你的第一个回帖说的是优化目的的问题,我假定的是已经知道“什么是优化目标”的情况,并没有什么矛盾和值得攻击的漏洞。
然后后面我提出在CFD目前的困难,比如我说道“具有混沌特性的流动和/或者湍流,传统的优化算法常常失效”,这并不是我瞎猜的阿,我的一个合作者就是优化算法的专业人士,我们就这种非定常复杂流动问题的优化,进行很多讨论,给我的感觉,他们能做得好的是定常/准定常流动、周期/准周期流动。所以,简单问题有很多办法实现用比较小的计算量来优化设计(注:免得你抬杠,仍然假定目标已经知道)。
站长说的也是简单问题能够做了,复杂问题还不能自动实现,这个也是和我的论断没有什么矛盾的。人工干预很多的,为什么非得是干预目标阿,他可以是协助智能学习、可以是中段计算等啊~ 我同意你的这个说法。比如
“具有混沌特性的流动和/或者湍流,传统的优化算法常常失效”
如果流动都算不对,优化根本就无从谈起。 说得更准确一点,就是目标函数的时间变化曲线在不同参数下有较好的相似性或者分段有较好的相似性的设计案例,就比较容易做好。
回复 11# onesupeng 的帖子
你的这个“目标函数的时间变化”不只是指什么?难道这个目标函数不是一个时间平均值,而是有某个变化的要求?如果是的话,那就更难定义了。我想对于实际问题,你可以用时间平均量,甚至加入标准偏离,频率之类的量来作为目标函数,和限制条件。对于那些没有明显的固有频率的现象,要计算平均值,花的时间比较长。不过这个并不是优化方法的问题,而是物理现象本身就不清楚。不幸的是,很多流动现象就是没有明显的固有频率。 各位老大说的都是理论层面的,我上面讲需要人工干预主要是指技术层面,即网格划分、流场计算和后处理过程这个层面的现实的障碍。理想的CFD优化当然先要定义好目标函数和约束条件,然后选择一种优化方法进行优化计算。与常规单一流场的计算不同,优化计算需要计算一系列的流场,每个流场都可以看作对上一个流场进行扰动后的新流场。在这个过程中,网格划分、流场计算、后处理等几个过程循环进行,如果在这几个环节中有一个环节出现问题就需要人工干预,比如网格划分过程中出现高畸变网格,或者流场计算中出现发散,或者后处理过程中出现问题等等就需要人工介入,重新启动计算,或者重新设定条件开始新的计算等等。不过这个问题我的看法是一个暂时的现象,也就是在目前这个历史阶段,软件的完善度和整合度还没达到理想状态,所以才会出现这样的问题。现在主流CFD软件产品都在向整合(或者说是大而全或小而全)的方向发展,代码设计也在不断完善,所以我觉得可能再过两年,这类人工干扰将大大减少,那个时候自动的优化计算才能逐渐进入实用阶段。 提CFD的优化,其实得注意一个问题的完全N-S模拟是非常耗时间的。用昆虫飞行作为例子,一般的三维昆虫飞行,有人用fluent并行模拟一个例子大概24核两个月一个完整算例。我们暂时定效率为目标函数,不施加约束。
那么我们假定可以变化翅膀弹性模量E和拍动角phi两个参数,来寻找什么样的E和phi组合效率最高。那么各位看看最好的方法是什么?搞优化的人告诉我,他们的遗传算法没办法做,非常耗时。
优化的途径一般就是减少计算算例,或者减少每个算例的时间。我这里有个人使用后者,首先在E-phi平面选取几个典型的例子,比如三个E和三个phi组成的9个算例,分析效率的时间序列曲线,如果这个时间序列曲线相似性非常好,那么他就不需要模拟2个月得出完整的结果,它只需要第二个周期甚至第5步的结果,就能的到最优化的参数。举个例子,如果A参数的结果和B参数相似性很好,那么A第10个周期的平均值大于A,则其第二个周期的平均值甚至第5步的值就大于B。于是,居于第二个周期或者第5步得到的E-phi平面的效率等值线的峰值,和完整模拟得到的峰值就基本重合。从优化的角度,就能得出优化参数。这里的一个前提就是,问题不要太复杂。
而计算量很小的问题如几秒几分钟的计算,即便用遍历法,也可以得到很好的结果。这个就没有什么好讨论的,至少从工程应用的角度没有迫切需要。 加速优化速度可以考虑制定一个策略,即采用2种甚至2种以上的算法进行优化,比如可以先用一种比较粗略的可以快速搜索的算法,然后再用一种或二种细致的算法寻找最优解。优化计算我还是建议用优化软件来做,优化软件中集成了很多种优化算法,具体用遗传算法还是别的算法,在软件中只是勾选不同选项这么简单的事。在初期尝试的时候可以先用粗网格做试算,整个流程走通了以后再做大规模计算。当然,这里的现实问题就是优化计算的计算量太大,最好还是有HPC系统帮助,只有一台工作站的话还是暂时不要尝试了。
页:
[1]
2