引言
首先,接上一篇https://zhuanlan.zhihu.com/p/585886012开个头。此算例笔者有个寻优问题:找到一个内层恒温值的临界值让外壳的最大温度不能超过315K,因为这个温度会让人觉得烫手,转化为生活问题就是,这个杯子里面装的液体温度超过多少就会让人觉得烫手。
优化分类
上个博客是采用COMSOL Multiphysics with MATLAB的方式编写matlab脚本使用二分法进行优化,计算出的结果是液体温度超过76.9[degC]时,杯子拿起来就会觉得烫手。这里用comsol自身的优化算法进行计算,不借助于其它软件联合仿真。关于comsol的寻优,如果从建模思路分类有三种:1.在物理场里直接加全局方程(只能算简单的、一个变量);2.在组件里加优化模块+研究里加优化;3.直接在研究里加优化。从优化问题类型来分:1.参数优化;2.形状优化;3.拓扑优化,当然,也可进行参数估计。
全局方程需勾选
全局方程需勾选
物理场和研究里优化
参数估计
comsol自带优化功能解决
这里解决引言里的问题,不借助matlab。
首先,设置个最大值算子。
然后,设置个求外壳最大温度的变量。
然后,设置内壁温度控制变量。
然后,在物理场里把控制变量赋到内壁温度。
然后,组件里添加优化模块并设置全局目标。
然后,在研究里添加优化,选个无梯度的算法Nelder-Mead,同时设置下控制变量的初值和上下限以减少迭代时间。
最后,开始计算。结算结束后派生值里设置全局计算,计算出内壁的温度,结果为76.900[degC]。
至此计算结束,关于各个优化算法下面叙述。
优化算法
根据官方材料,迭代算法分两类,一类是基于梯度的,一类是无梯度的。基于梯度的有:Levenberg-Marquardt、SNOPT、MMA;无梯度的有:坐标查找(南北西东)、Monto-Carlo(随机)、Nelder-Mead(三角形)、BOBYQA(侦察兵带椭圆)和COBYLA。无梯度的鲁棒性强,计算慢;基于梯度的对方程要求高,计算快,至于优化算法的选择,可见官方视频使用 COMSOL® 软件进行设计优化。