理论教育 零阶方法:状态变量近似反映实际情况与优化处理器

零阶方法:状态变量近似反映实际情况与优化处理器

时间:2023-10-25 理论教育 版权反馈
【摘要】:零阶方法之所以称为零阶方法是由于它只用到因变量而不用到它的偏导数。1)对于零阶方法,优化处理器开始通过随机搜索建立状态变量和目标函数的逼近。2)如果零阶方法生成了许多不合理的设计,可能说明状态变量的近似不能良好地反映状态变量的实际情况。

零阶方法:状态变量近似反映实际情况与优化处理器

零阶方法之所以称为零阶方法是由于它只用到变量而不用到它的偏导数。在零阶方法中有两个重要的概念:目标函数和状态变量的逼近方法,由约束的优化问题转换为非约束的优化问题。

1.逼近方法

本方法中,程序用曲线拟合来建立目标函数和设计变量之间的关系。这是通过用几个设计变量序列计算目标函数然后求得各数据点间最小平方实现的。该结果曲线(或平面)叫做逼近。每次优化循环生成一个新的数据点,目标函数就完成一次更新。实际上是逼近被求解最小值而并非目标函数。

状态变量也是同样处理的。每个状态变量都生成一个逼近并在每次循环后更新。

用户可以控制优化近似的逼近曲线。可以指定线性拟合,平方拟合或平方差拟合。默认情况下,用平方差拟合目标函数,用平方拟合状态变量。用下列方法实现该控制功能。

命令:OPEQN

GUI:Main Menu|Design Opt|Method/Tool

OPEQN同样可以控制设计数据点在形成逼近时如何加权。

2.转换为非约束问题

状态变量和设计变量的数值范围约束了设计,优化问题就成为约束的优化问题。ANSYS程序将其转化为非约束问题,因为后者的最小化方法比前者更有效率。转换是通过对目标函数逼近加罚函数的方法计入所加约束的。

搜索非约束目标函数的逼近是在每次迭代中用Sequential Unconstrained Minimization Technique(SUMT)实现的。

3.收敛检查

在每次循环结束时都要进行收敛检查。如果当前的、前面的或最佳设计是合理的而且满足下列条件之一,问题就是收敛的。

●目标函数值由最佳合理设计到当前设计的变化应小于目标函数容差。

●最后两个设计之间的差值应小于目标函数容差。

●从当前设计到最佳合理设计所有设计变量的变化值应小于各自的容差。

●最后两个设计所有设计变量的变化值应小于各自的容差。

用下列方法指定目标函数和设计变量容差。

命令:OPVAR

GUI:Main Menu|Design Opt|Design Variables

Main Menu|Design Opt|Objective

收敛并不代表实际的最小值已经得到了,只说明以上四个准则之一满足了。因此,用户必须确定当前设计优化的结果是否足够。如果不足的话,就要另外做附加的优化分析。

有时候求解过程会在收敛前终止,这是因为发生下列情况之一。

●指定的循环次数达到了。(www.daowen.com)

●连续的不合理设计达到了指定的值(OPSUBP命令的NINFS域、默认值为7)。

4.零阶方法的特殊问题

由于目标函数和状态变量都是使用逼近的,因此优化设计和逼近数值具有同样的精确度。下面给出了一些得到较好的逼近的建议。

1)对于零阶方法,优化处理器开始通过随机搜索建立状态变量和目标函数的逼近。由于是随机搜索,收敛的速度可能很慢。用户有时可以通过给出多个合理的起始设计来加速收敛,只简单地运行一系列的随机搜索并删除所有不合理的设计。用下列方法之一运行随机搜索。

命令:OPTYPE,RAND

GUI:Main Menu|Design Opt|method/Tool

用下列方法删除所有不合理设计:

命令:OPSEL

GUI:Main Menu|Design Opt|Select/Delete

也可以运行多次单独的循环,并在每次运行前指定新的设计变量序列来生成起始设计序列。用下列方法实现。

命令:OPTYPE,RUN

GUI:Main Menu|Design Opt|Method/Tool

注意:做一些小的设计分析将有利于收敛。但如果设计之间差别不大,也就是说设计数据点“堆积”在一起时,用户就要指定优化处理器沿一个指定的路径分析,以避免丢掉好的设计。

2)如果零阶方法生成了许多不合理的设计,可能说明状态变量的近似不能良好地反映状态变量的实际情况。在这种情况下,可以处理如下。

●增加连续不合理设计的允许值,然后进行附加的零阶方法分析。用下列方法实现。

命令:OPSUBP,NINFS

GUI:Main Menu|Design Opt|Method/Tool

●在连续的逼近中不断地选择最佳设计,可以得到更好的曲线拟合。用下列方法实现。

命令:OPSEL

GUI:Main Menu|Design Opt|Select/Delete

●在状态变量逼近时选择交叉项。用下列方法实现。

命令:OPEQN,KFSV

GUI:Main Menu|Design Opt|Method/Tool

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈