首页 理论教育 地下结构方法:求解准备与分析

地下结构方法:求解准备与分析

时间:2023-08-24 理论教育 版权反馈
【摘要】:1.3.2.1消除计算上的困难寻优过程中,数值计算上的困难会导致寻优过程过早地结束,其原因有下面四种情况:1)定标不当。

地下结构方法:求解准备与分析

有了实际系统数学模型后,就应该做好准备,以便使用适当的优化算法顺利求解问题。如:设法消除可能出现的数值计算障碍、增加计算的有效性以及分析和识别某些对解题有指导意义的数学模型结构上的特征。

在建模以后,准备工作基本包括下面三种工作:

1)修改模型,以避免数值计算中出现困难。

2)改写模型,以提高解题效率

3)分析模型,以了解解的特性。

1.3.2.1 消除计算上的困难(消除数值计算的障碍)

寻优过程中,数值计算上的困难会导致寻优过程过早地结束,其原因有下面四种情况:

1)定标不当。

2)函数和微分程序不一致。

3)不可微的模型成分。

4)不恰当的变量限制。

大多数情况下,通过仔细分析模型,这些问题都可以发现,并通过简单的修改消除这些问题。

定标指的是被优化模型中该出现数的相对大小。变量的定标指模型变量的相对值;约束定标指的是每个约束的相对值,即灵敏度。理想的情况是,模型中所有的变量应该定标使其值落在0.1~10的范围内。这就能保证搜索方向向量和拟牛顿修正向量有一个合理的值。如果一些变量在估计的近似解处落在这个定标的范围之外,可把它们乘以一个合适的常数,使之回到定标范围之内,并用得到的新变量代替原相应的变量。

在多数情形下,这些障碍可通过对模型的仔细分析辨认出来,然后对问题做简单的修正,把它们消除。

1.数学模型的尺度变换

尺度变化的方法有多种,最简单的是将变量或函数乘以一个常数,变为一个新变量或新函数,使新变量或函数有一个好的尺度。例如新的变量可取为

式中,常数ki可取初始值的倒数,即

这样,当初始点x(0)选得靠近最优点x*时,的值均在1附近变化。

又如,在最优点[1,1]T附近的点[1.1,1.0]T处考察两个数量级相差很大的约束

这时,约束函数值为

显然,二者对变量数值变化的灵敏度相差很大,这将导致二者在惩罚函数中的作用也相差甚远,灵敏度高的约束在优化过程中将首先得到满足,而灵敏度低的却几乎得不到考虑。为了避免这种不正常的情况,应使各个约束规格化,使它们具有相近的量级。为此可将某些约束除以各自的一个常数,使约束值均接近于0.1~10之间。例如上例第二个约束除以106,尺度变换后的新约束为

这时,有=0.1。(www.xing528.com)

2.函数与导数值之间的不一致

数值计算有时会使函数值与导数值之间产生不一致性,并且可能会不易察觉地加剧。严重时,会使计算机运行产生错误,所以是一种隐伏的危险。检查函数和梯度值的不一致性的最简单方法是用函数值的差分计算梯度,并且把它与由倒数子程序产生的解析梯度作比较。为了避免这类故障,许多有实际经验的专业人员,总是用函数值的数值差分来计算梯度。但是,一般地讲,使用解析梯度的计算效率要高一些。

3.函数的不可微性

最常见的函数不可微的两种形式为:条件语句(按照变量或函数的不同取值去执行不同的表达式或模型的不同部分)和最大、最小运算。一般说,在求条件语句转换点附近处的数值梯度或求max,min运算的数值梯度时会引起不可微的故障。max或min运算可以用多个不等式来代替,例如

替代。但是,如果一个模型广泛使用条件表达式,那么最好用一个不使用梯度值的算法。

4.在定义区域内求函数值

引起计算机中断运算的一个很普遍原因是在函数的无定义区域中求它的值。可是这一点却经常被人忽略了。在工程模型中形如[g(x)]b,log[g(x)][其中g(x)为x的表达式]的项是十分常见的,如果在优化过程中允许g(x)取负或零值,则会发生程序中断。为了避免这个问题,有许多实用的方法,例如在求值前加一条逻辑语句,使变量的值大于某个小正数时,才进行求值运算;或者在模型中加上约束g(x)≥ε>0,其中ε是某个小容差值。这两种方法中,前一种更实用些,因为不少算法允许搜索暂时进入不可行区域中。

类似的,研究约束关于变量变化值的灵敏度,并在解的估计处评价约束都是很简单的。作为检验,我们可以在解的估计处检验约束的变化率矩阵的元素。一般地说,最好的情况是,所有的约束对变量的变化值有相近的灵敏度,且约束梯度有相同的取值范围,这将保证约束的违反机会是均等的,也将保证约束Jacobian矩阵的运算不会产生计算误差。如果不是上述情况,一个补救的方法是用一个合适的变量乘以约束函数,使约束值落在0.1~10的范围内,或使约束梯度的元素落在0.1~10的范围之内。

1.3.2.2 增加计算的有效性

线性最优化问题的难度是按变量数和约束数的指数方式递增的。约束方面的规律为:非线性约束比线性约束难,等式约束比不等式约束难。所以在准备阶段,应尝试将模型重新调整,减少约束数(特别是非线性约束数)和减少变量数。可以通过函数和变量的变换、去掉多余的约束以及从某些等式约束中解出部分变量的办法进行这种调整。

1.3.2.3 分析问题的结构特征

问题结构上的某些特征有时会对解过程起重要作用。这些特征是凸性、可行域的有界性、解的唯一性和可行点的存在性。尽管这些概念的本身显得有些抽象和偏于理论,但是,它们的确具有重要的实践意义,所以适当做些努力去辨识它们是很有价值的。

1.凸性

如果已知问题是个凸规划,那么第一,可保证一个Kuhn-Tucker(K-T)点将是全局最优点;第二,可以从一个相当宽的范围内选择求解算法,并可期望所用的通用算法的收敛性会比用于非凸情形更好。从另一方面来看,如果已知问题是非凸的,那么就必须在求解过程中准备处理可能有多个局部最优解出现的情形。证明一个问题具有凸性是比较麻烦的,通常先从反面证明给定问题是非凸的,因为后者的判别有时很简单,例如只要问题中存在非线性等式约束,则可肯定是该问题是非凸的。如果问题中没有非线性等式约束,那么就应该检验不等式约束的凸性。有两种常用的检验方法:一种是基于Hesse矩阵的正定性;另一种是将函数分界为几个凸函数之和。两种方法都应从最简单的非线性不等式开始检验,越复杂的越放在后面检查,这样可提高检验效率。这种排查的方法是基于假设:多数工程问题是非凸的,以及通过检查比较简单的非线性不等式就可确定问题的非凸性。上述假设是比较现实的。

2.有界性

在工程实施中,最优化问题总会有一些起平衡作用的因素,在任一个设计变量可能变为任意大或任意小之前,某些技术或经济因素将会阻止它的这种变化。但是在进行最优化求解计算时,使用的是实际系统的近似模型,由于建立模型时有意或无意地删去了实际系统的某些因素或限制,所以这种模型可能会十分简单地产生了不符合实际的无界解。通过直接检查模型往往可以识别出无界的情况,并且总可在所有的变量上加上合理的上、下界限,去防止无界情况的出现。当然一定要避免产生多余的约束。

3.解的唯一性

在问题分析中,第三个重点是判明问题具有不唯一的解或者存在多个局部最优解的可能性。一般,一个凸规划问题只有一个最优的目标函数值,但是可以在一系列的点处取这个最优值。因而,尽管凸性保证了一个总体最优值,但是不能保证有唯一解。此外,为了使问题具有一个以上的局部最优值,它必须是非凸的,但是非凸性不足以保证必定有多个局部最优值。所以,为了检查问题是否有非唯一解和是否可能有多个局部解,除了凸性试验外,还需要进行附加的分析。

通常,非唯一解的发生是模型的人工产物而不是实际系统的固有特色。因为在工程应用中总是存在多个局部解的威胁,可是又难于确认它们的实际存在性,所以在应用研究中有一种趋向是忽略这个问题。就事实而论,问题是现实的,除非能够证明多个局部最优不可能存在,否则总是需要讨论它的。在进行求解以前对非唯一解和多个局部解的可能性进行分析是有用的。

4.可行性

最后一个要点是应该对所建模型进行可行性检验。在经过问题的准备和分析各阶段后,可以导出一个数值稳定、有界和无多余部分的数学模型,然而这样的模型还有可能由于计算误差和数据的质量或数量不够,造成问题中的约束把所有的可能解都排除在外。所以不管所选的最优算法是否需要一个可行的初始点,这时必须再次检查模型,用逐点逐段的方式进行,直至找出错误的来源,把模型修整得完善、合理。如果可以生成一个初始点,而且在所生成的点处(也可以是多个点)各变量值显得是合理的,那么就可继续往下进行求解了,并且可以对获得较好的优化效果抱有一定的信心。

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

我要反馈