摘要:使用遗传算法求解0-1规划问题,解决了使用传统寻优方法最优解搜索时间长的问题。但是,由于遗传算法的核心算法包含了随机搜索方法,所求出的“最优解”不一定是最优的,也就是说,在一个极大问题中,遗传算法的最优解可能比使用传统枚举算法得到的最优解要小。对于工程应用而言,对遗传算法的最优解与实际最优解的接近程度或者说误差的估计,具有重要的使用价值。本文通过分析一般线性规划最优解与边界值的关系,提出了“扰动边界法”对遗传算法的最优解进行误差估计的方法,并讨论了扰动边界法的可靠性。
1 扰动边界法原理
一般线性规划模型可以写成如下形式:
(1)
(2)
其中(1)为目标函数,(2)为约束方程组。
根据一般线性规划原理,线性规划模型的最优解必定在边界点取得。在上述模型中,如果 在 取得最大值,则 必定是一个边界点,也就是说解 可以使某约束方程(不失一般性,假设第k个方程)满足下列条件:
(3)
一般情况下,当第k个约束方程满足上述关系式时,其它约束方程一般不能满足上述等式条件,即对于解 和约束方程j(j<>k)有:
(4)
此时,当约束方程k的约束边界值 在一个较小的范围( )内变动,得到的新解 依然会满足(3)式、(4)式。也就是说,约束方程k的约束边界值 在( )内变动时,解仅与 的变动有关,即在( )内,最优解 仅与 有关,与其它约束方程的边界值无关,方程k可称为最优解的关键方程。对于实际问题,最优解的关键方程对应着紧缺资源。
在关键方程的边界点附近区域( ),可建立 与 的关系式。可以证明, 与 呈线性关系,即:
(5)
上述通过在关键方程边界点附近( )建立最优解与边界值之间的关系,进而分析非精确解与精确解之间的偏差程度的方法称为“扰动边界法”。
2 最优解误差估计的基本步骤
对于遗传算法,当最优解不能到达边界点时,可以利用“扰动边界法”法建立的最优解与边界值关系式,对遗传算法取得的“最优解”与实际最优解的贴近度,或误差进行估计,方法如下:
(1)求解0-1问题
首先用遗传算法求解0-1问题,得到最优解 和对应的约束边界的实现值 。
(2)确定关键约束方程计算约束
计算各约束边界的实现值 与原约束边界 的相对偏差 ,从中找出相对偏差最小的对应的约束方程,既是确定关键约束方程,假设为第k个约束方程。
(3)扰动关键约束方程的边界值
对关键约束方程的边界值 进行小的扰动,扰动后的边界值为 。
(4)计算扰动后的最优解
利用扰动后的边界 重新计算最优解 和边界值实现
(5)建立最优解与关键约束方程边界值的关系式
利用 和 建立线性关系式 ,其中:
(6)
(7)
(6)估计最优解误差
绝对误差:
(8)
相对误差:
(9)
3 最优解误差估计实例
求解带下列约束值的0-1问题:
约束变量 | b1 | b2 | b3 | b4 | b5 |
约束值 | 1000 | 9000 | 23000 | 200 | 100 |
得到最优目标解394.4,以及相应的边界值实现如下:
方案 | b1 | b2 | b3 | b4 | b5 |
约束实现值 | 39222.7 | 8888 | 22438 | 176 | 1083 |
计算各边界实现值与目标边界值的偏差度,见下表:
约束变量 | b1 | b2 | b3 | b4 | b5 |
约束实现值偏差 | 3822.3 | 1.2 | 2.4 | 12.0 | 983.0 |
可以看到,b2对应的边界实现值与目标边界值的偏差最小。确定b2对应的约束方程为关键约束方程,并进行求解。
扰动得到下列边界值:
约束变量 | b1 | b2 | b3 | b4 | b5 |
方案1 | 1000 | 9000 | 23000 | 200 | 100 |
方案2 | 1000 | 9500 | 23000 | 200 | 100 |
方案3 | 1000 | 10000 | 23000 | 200 | 100 |
方案4 | 1000 | 10500 | 23000 | 200 | 100 |
方案5 | 1000 | 11000 | 23000 | 200 | 100 |
对上述扰动边界分别求解,得到如下最优目标值,以及相应的边界实现值:
方案 | b1 | b2 | b3 | b4 | b5 | 目标解 |
方案1 | 39222.7 | 8888 | 22438 | 176 | 1083 | 394.4 |
方案2 | 39902.0 | 9476 | 22694 | 183 | 1083 | 401.2 |
方案3 | 40368.2 | 9950 | 22596 | 186 | 1106 | 406.0 |
方案4 | 40967.6 | 10482 | 22792 | 188 | 1125 | 411.9 |
方案5 | 41374.4 | 10907 | 22993 | 191 | 1155 | 416.0 |
利用b2边界实现值与最优目标值的对应可以用下列图表表示,可以看出它们呈线性关系:
根据上图,最优目标值与b2边界实现值的关系式如下:
(10)
对应公式(5):
利用公式(8)、(9),对遗传算法得到的最优目标值(394.4)的绝对误差及相对误差进行如下估计:
绝对误差:
(11)
相对误差:
(12)
上述误差估计说明,本算例最优解与真实最优解的偏差很小。
4 最优解误差估计的可靠性讨论
上述误差估计方法是基于最优解在边界上取得,这种假设对于一般的线性规划是成立的,因其求解范围是连续的定义区间。对于求解范围是不连续的整数规划问题,由于求解只能在整数上取得,因此最优解可能够达到边界。
如上图所示,整数规划的解仅仅在整数位上取得,但整数位不一定在边界上。此时,真实最优解 对应的关键约束方程的约束实现 将比目标约束 小。因此,遗传算法求得的最优解 对应的关键约束方程的约束实现 与真实最优解 对应的关键约束方程的约束实现 及目标约束 之间存在下列关系:
(13)
即:
(14)
遗传算法对0-1规划求解的误差,由公式(8)应为:
(15)
由(15)式知:
也就是说,遗传算法得到的最优解与真实最优解的误差不会超过公式(8)的误差估计值。这说明使用上述方法估计最优解的误差是可靠的。
虽然公式(8)中使用目标边界值替代真实最优解的边界实现,造成误差估计有些保守,但是只要遗传算法的搜索策略合适,一般可以使关键约束方程的边界实现值与目标约束值有比较好的贴近,从而使得误差估计有较强的指示意义。