APP下载

基于遗传算法的项目风险最优控制

2019-01-30曾东

电子技术与软件工程 2019年1期
关键词:项目风险二进制算子

文/曾东

1 引言

项目风险管理对可能导致项目损失的不确定因素进行预测、识别、分析、评估和控制。现代项目管理需要在项目生命周期内合理考虑各种风险的影响,并采取合适的风险控制措施,优化控制项目成本和工时。

项目风险的抑制措施一方面既能有效降低风险对项目成本和时间的冲击,同时也将不可避免地需要项目资源的额外开销;工程项目中每个风险因素的发生概率、潜在损害、控制方法和控制成本都不一样。因此采取简单的执行或不执行的风险控制策略并不能获得良好的风险管理。通过在项目风险集合中引入全局可变风险决策向量,并对之进行优化,能获得优异的风险控制效果。

项目风险最优控制等效为一个非线性MIQP问题的全局优化求解,属于NP-hard类问题,计算复杂度呈指数关系。在问题规模较大时,传统算法求解困难。遗传算法(Genetic Algorithm)作为一种启发式算法,解决各类复杂非线性问题具有很强的优势。本文采用基于混合遗传算子的遗传算法来解决项目风险的最优控制问题。

2 项目风险的最优控制

图1:项目、风险和风险控制措施关系图

子任务、风险和风险控制措施有下述关系:

(1)每个子任务有可能受到若干个风险的影响;

(2)同一个风险因素可能对多个子任务存在潜在的冲击;

(3)同一个风险控制措施可能同时降低多个风险的损失;

(4)若干风险控制措施可以同时应用来降低同一个风险的损失;

在一个项目中,三者关系如图1所示。

风险量Ri是风险i发生的概率ρi和所造成的直接损失li的函数,表示为:

同一个风险能被多个风险控制手段{Mk}联合抑制。注意到每种控制手段Mk的应用并不是简单的执行或不执行,而是调整相应的风险策略变量mk来实现最有控制。mk取值与具体控制措施有关,可以是整数、连续量或者逻辑量。风险控制量是与mk相关的函数fRM(mk),对某风险最终的控制效果体现为联合降低该风险对项目成本和时间所带来的冲击:

上式中的下标c和t分别代表成本和时间,当控制手段mk对风险j有抑制作用时,RM(j,k)=1,否则RM(j,k)=0。通常情况下,对风险的控制效果有一定的约束,如风险的损失可以降低到一个大于零的最低值,即风险控制不能带来额外收益,要求:

项目计划在考虑风险威胁和相应的风险控制措施时,子任务Ti的实际成本和执行时间将受到影响。分别表示为:

ci为子任务i的无风险时的名义成本,ti是名义执行时间。仅当风险j对子任务Ti有影响时,TR(i,j)=1,否则TR(i,j)=0。

因此,项目的总体成本是所有子任务的实际成本与风险控制措施成本的总和:

gk(mk)是mk的成本消耗函数。公式(7)中,该项目从TS到TE所有可能路径数量为P,当子任务Ti属于第l条路径时,PATH(l,i)=1,否则PATH(l,i)=0。

因风险及风险控制手段的引入,项目成本和完工时间不再是定值,而受不同的风险因素和控制手段的影响。为了优化控制项目的执行成本和时间,可采用多目标线性加权法,构成最终的优化目标函数:

其中:

(8)式中,需要优化的变量是一个风险策略向量,其元素可以是整数、连续值或者逻辑量,实际上是一个非线性混合整数规划问题,等效为一个MIQP的最优求解,具有NP计算复杂度。需要指出的是,对该JC,T的优化应满足m自身的取值约束条件。

3 遗传算法

遗传算法直接对解空间进行搜寻,无需待求解函数具备连续性,不需求导,同时具有一定的并行性和可靠的全局寻优能力,非常适合解决复杂非线性规划问题。

实际工程管理中,风险决策变量有多种类型。例如,商业保险的决策表现为确定投保金额的多少,取值正实数;为消除人工可能短缺的风险,需要确定新增雇员工的数量,取值正整数;是否建立新的任务转包关系,为逻辑值(二进制)。传统遗传算子采用二进制编码实现算子的交叉、变异等操作。虽然二进制编码可以实现对实数和整数的精确表示,但在决策变量取值范围大,精度要求高时,将导致二进制字符串过长,从而降低搜索效率和算法收敛速度。

因此本文采用融合二进制变量和实型变量的混合遗传算子来提高遗传算法的收敛性能,其基本操作步骤与传统遗传算法一致。此处重点讨论风险决策向量的混合遗传算子设计。

3.1 混合编码方案

混合遗传算子的每一染色体分为两个基因子段,一个基因子段采用二进制编码,对应风险决策向量中的逻辑变量;另一个基因段对应实型变量和整型变量。此处将整型变量当作实型变量进行运算,中间结果为实型,计算完成后通过取整恢复为整型数值,并满足该变量的取值范围。

3.2 基因交叉算子

交叉运算按照一定的发生概率ρm进行。二进制编码子段的信息交换采取单点交叉法,先随机确定基因交叉点位置,再互换染色体对上相应交叉点的基因段信息。对于实数编码子段的交叉运算,则采用基于概率的随机线性组合来实现信息互换,交换公式如下:

3.3 基因变异算子

二进制编码子段采用位变异操作,先随机确定要进行变异操作基因位置,然后将该位置变量的数值取反。实数编码子段某变量取值范围满足按下式进行变换:

3.4 选择算子

遗传算法的基因在进化过程中具有一定的随机性,所产生子代有可能退化。此处采用改进的选择算子来提高种群的适应度和健壮性,提高算法的收敛速度。算法动态维护一个包含前K代最优个体的记录。在父代向子代进化时,把记录中的前K代最优个体加入到父代种群中一起进行交叉、变异操作并得到子代种群。然后按照适应度大小更新包含了子代的最优个体的前K代最优记录,并按照比例选择法淘汰部分适应度低的子代个体。这种改进的选择算子,不仅提高了种群的健壮性和多样性,能保证进化时子代优于父代,而且能使最佳个体参与进化,群体的平均适应值不断增大,显著提高遗传算法的收敛速度。

4 结论

基于全局可变风险决策向量可以对项目风险实现最优控制,待解决问题等效为一个非线性MIQP问题的全局优化求解,属于NPhard类问题,计算复杂度呈指数关系。在项目规模较大时,传统方法难以求解。

本文将遗传算法引入到风险管理的最优控制中,并针对风险控制变量具有多种取值类型,设计了一种混合遗传算子来提高遗传算法解决本类问题的收敛性和收敛速度。

猜你喜欢

项目风险二进制算子
用二进制解一道高中数学联赛数论题
拟微分算子在Hp(ω)上的有界性
各向异性次Laplace算子和拟p-次Laplace算子的Picone恒等式及其应用
有趣的进度
二进制在竞赛题中的应用
一类Markov模算子半群与相应的算子值Dirichlet型刻画
基于概率分布的PPP项目风险承担支出测算
Roper-Suffridge延拓算子与Loewner链
联锁项目风险应对措施制定与实施
代建项目风险管理