避免约束系数过大的2种技巧

2023-12-23 22:47:00

相关文章:
数学建模中提升目标、变量和约束的紧凑度的几种技巧
计算机存储精度引起的模型数值问题


如前文所述,当数学模型当中的约束系数过大时,会增加模型的求解难度,这一点会在预处理当中改善;另一方面是,当模型的约束系数差距过大时(系数范围很广),会发生数值问题,即造成求解结果的不稳定(求解时间长或求解结果有误),因此在建模当中有着这样一些准则,就是约束函数当中的项,应该具有可比较的大小,以便将计算误差降至最低。

简而言之,就是控制约束函数的项的系数差距。以下介绍避免这种约束系数过大的2种技巧。

现有一个约束如下:

x ? 1 0 6 y ≥ 0 y ∈ [ 0 , 10 ] x-10^6y\geq 0\\ y\in [0,10] x?106y0y[0,10]

方法1:增加中间变量(这个方法的效果往往不明显):

x ? 10 y 1 ≥ 0 y 1 ? 10 y 2 = 0 y 2 ? 10 y 3 = 0 y 3 ? 10 y 4 = 0 y 4 ? 10 y 5 = 0 y 5 ? 10 y = 0 y ∈ [ 0 , 10 ] x-10y_1\geq 0 \\ y_1-10y_2= 0 \\ y_2-10y_3= 0\\y_3-10y_4= 0\\y_4-10y_5= 0\\y_5-10y= 0\\y\in [0,10] x?10y1?0y1??10y2?=0y2??10y3?=0y3??10y4?=0y4??10y5?=0y5??10y=0y[0,10]

方法2:改变变量的取值范围(更常用):

x ? 1 0 3 y ′ ≥ 0 y ′ ∈ [ 0 , 1 0 4 ] x-10^3y'\geq 0\\y'\in[0, 10^4] x?103y0y[0,104]

通过改变变量 y y y 的范围成为新的变量 y ′ y' y,来降低约束系数的范围。其中 y ′ = 1 0 3 y y'=10^3y y=103y

文章来源:https://blog.csdn.net/Linshaodan520/article/details/135173835
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。