1.一种城市突发事件紧急救援方法,其特征在于,构建一种基于蚁群遗传的分布式约束优化问题求解方法,该方法包括如下步骤:S100:用一个四元组<A,X,D,F>来表示分布式约束优化问题,其中:A={a1,...,an}是agent的集合;
X={x1,...,xm}是变量的集合,m≤n;
D={D1,...,Dm}是值域的集合,每个xi的值域为Di,每个Agent从值域Di中取值为变量xi赋值, 表示xi的第t个值;
F={f1,...,fp}是约束代价函数的集合,约束 是从任意β
个变量 的赋值组合到一个非负代价的映射;
设一个agent只控制一个变量且所有的约束关系都是二元关系,则DCOP的解表示为:将DCOP表示为约束图,在约束图中,每个节点都代表一个agent,每两个节点之间的连线代表这两个节点之间存在约束关系;
S200:对蚁群算法和遗传算法的参数初始化,将约束图转化为广度优先生成的伪树,一个节点对应一个agent,节点与节点之间的连线代表约束,伪树的值消息传递方向为上层节点传给下层节点,同层节点根据优先级或节点命名字母顺序来传递,消息传递方向即agent的优先级和蚂蚁的前进方向;
初始化路径上的信息素浓度;
S300:采用蚁群算法对n个agent进行一次遍历:如果当前ai已经从其所有较高优先级的邻居处接收到值消息,则ai为每只蚂蚁在xi对应的值域中根据选择概率选择一个值,根据当前取值,计算ai与其所有高优先级邻居取值之间的代价和,与之前算的代价和进行累加,得到当前蚂蚁的代价;
S400:生成随机概率q,若q小于扩展概率p,则转至S500,否则转至S900;
所述扩展概率p采用公式(12)计算:
式中maxCycle为最大迭代轮次,curCycle为当前所在轮次;
S500:设蚁群算法中共有K只蚂蚁,每只蚂蚁根据S300对n个agent进行一次遍历得到一个集合,该集合认为是一条染色体,通过S300针对K只蚂蚁则得到K条染色体,将该K条染色体作为遗传算法的父代染色体;
S600:计算前一步骤中获得的每条父代染色体的适应值,计算每条染色体的适应值在所有染色体适应值之和中的占比,将K条染色体中适应值最大的染色体直接复制保存到第一代子代染色体集合中,然后计算每条染色体的选择概率,每条染色体的选择概率等于该条染色体的适应值与所有染色体适应值之和之比,根据所述染色体的选择概率采用轮盘赌选择第一代子染色体集合K‑1条染色体;
轮盘赌选择:计算出每条染色体的累计选择概率,p[k]称为染色体k的累计选择概率,即前k‑1条染色体的选择概率之和;令η=1,生成K‑1个随机数 在新的父代染色体集合中,按照染色体的排序,当一条染色体的累计选择概率大于等于 则将该染色体复制保存到第一代子代染色体集合中,并令η=η+1,继续在新的父代染色体集合中,按照染色体的排序选择,依次重复直至η=K‑1时停止,此时选择了K‑1条第一代子代染色体;
S700:染色体交叉、变异:
染色体交叉:
设置交叉概率,对第x条第一代子代染色体生成一个交叉随机概率,qx表示第x条第一代子代染色体的交叉随机概率,x=1,2,...K‑1,当qx小于交叉概率时,则将第x条第一代子代染色体和第x‑1条第一代子代染色体对应的交叉位置进行交叉,所述交叉位置随机生成;
需要进行染色体交叉的第一代子代染色体完成染色体交叉后复制保存到新的第一代子代染色体集合中,不需要染色体交叉的第一代子代染色体复制保存到新的第一代子代染色体集合中,第一代子代染色体集合中的染色体称为新的第一代子代染色体;
染色体变异:
设置变异概率,对于新的第一代子代染色体上的n个位置分别生成一个变异随机概率,表示第γ条新的第一代子代染色体第ε个位置的变异随机概率,当 小于变异概率时,则将第γ条新的第一代子代染色体第ε个位置上的取值进行变异,变异方法为从值域中随机选择一个值对该位置重新赋值;
需要进行染色体变异的新的第一代子代染色体完成染色体变异后复制保存到第二代子代染色体集合中,不需要进行染色体变异的新的第一代子代染色体复制保存到第二代子代染色体集合中,第二代子代染色体集合中的染色体称为第二代子代染色体;
S800:判断遗传算法是否迭代结束,若达到遗传算法运行的最大迭代次数表示满足终止条件,则输出当前第二代子代染色体集合中的第二代子代染色体并转至S900,否则采用第二代子代染色体更新父代染色体并转至S600;
S900:更新路径上的信息素浓度和局部信息下文预估值;
局部信息下文预估值即对ai与其低优先级邻居之间的最小代价和的估计,符号表示为esti(di);生成随机概率q,当q小于扩展概率p时,使用第二代子代染色体集合中的每条染色体的代价更新信息素浓度,否则使用S500中K条染色体的代价更新信息素浓度,并使用所述K条染色体对每个agent和其邻居间约束的信息素浓度进行更新;
对每个agent更新局部信息下文预估值,对于取值di∈Di,当变量xi=di时,计算当前agent与其低优先级邻居节点之间产生的约束代价的平均值,再将上一轮agent得到的局部信息下文预估值和所求平均值再次求平均得到更新的预估值;
所述S900中计算每条第二代子代染色体的代价的方法如下:
对于第k条二代子代染色体,将每个agent和其邻居之间约束对应的代价相加即得第k条二代子代染色体的代价cos tk;
所述S900中对每个agent更新esti(di)的过程如下:首先当xi=di时,计算ai与其低优先级邻居之间产生的约束代价之和的平均值,然后将上次迭代求得的esti(di)值与当前求得的均值求平均值,用该平均值更新esti(di)的值;
S1000:判断蚁群算法是否迭代结束,若达到蚁群算法运行的最大迭代次数表示满足终止条件,输出当前代价最小的染色体对应的代价和n个变量的取值,否则返回步骤S300;
将所述基于蚁群遗传的分布式约束优化问题求解方法应用于城市突发事件紧急救援问题:给定问题交通路网G(C,E),C表示路网中的节点,E表示两节点间的连线,即路段,同时将城市突发事件可通行路径规划构建为DCOP模型,记为城市突发事件的DCOP模型,模型具体描述如下:A={car1,...,carn}为agent的集合,一辆车表示一个agent;
X={x1,...,xm}为变量的集合,一个agent控制一个变量xi;
D={S1,...,Sm}为值域的集合,每个变量xi的值域为Si,Si中为可行路径的集合,一条可行路径是变量xi的一个取值;
F={f1,...,fp}是约束代价函数的集合,fij为两辆车行驶路径之间的约束,即两条可行路径之间的路径重合度小于30%,由于每两辆车之间的行驶路径要满足约束,则抽象出的城市突发事件的DCOP模型的约束图为全连接约束图。
2.如权利要求1所述的城市突发事件紧急救援方法,其特征在于:通过如下公式(6)所述的目标函数求解所述城市突发事件的DCOP模型中xi取si与xj取sj时约束的代价,具体步骤如下:
1)路段行驶速度,采用式(2)中的Underwood模型计算车辆行驶速度:式中vf为路段h上的最大速度, 为路段h上的车辆行驶速度,c为路段h上的实际车流密度,cm为路段h上的最大车流密度;
2)路径耗时,式(3)为任意一条正常路段的耗时代价cos ti:
式中sh为无故障路段h的长度;
事故影响范围的耗时代价采用BPR路阻函数确定,式(4)为任意一条存在故障的路径的耗时代价:式中normal为m处正常路段的集合,break为n处故障路段的集合, 为路段k处的实际行驶时间,tk为路段k处的自由流的行驶时间,qk为路段k处的交通流量,Ck表示路段k处的通行能力,路段k受到突发事件影响时,设影响因素为服从均匀分布的随机变量φk,0<φk<1,路段k处的最大车流密度为ck,则路段k实际通行能力为φkck,参数a,b为常数;sh表示无故障路段h的长度, 表示无故障路段h上的行驶速度;
设路径1的长度为len1,路径2的长度为len2,len1<len2,路径1和路径2之间的重合部分长度为opart,设置路径1和路径2之间的重合率小于30%,则路径1和路径2间的约束为f12:opart/len1<30%,式(5)为每两辆车选出的可行路径之间的约束代价:式中 为路径 的耗时代价,cos tj为路径j的耗时代价,满足约束时的代价为两条路径耗时代价相加,否则取一个极大的值;
在满足约束的情况下,求得5条可行路径作为备选,且可行路径上花费的时间代价最少,因此式(6)为该DCOP模型的解集:
3.如权利要求1所述的城市突发事件紧急救援方法,其特征在于:所述S300中,当xi=di时的选择概率根据公式(7)计算:式中pk,i(di)表示xi=di时的选择概率,α为信息素因子权重,β为启发式因子权重,θk,i(d′i)表示选择值d′i的信息素浓度,ηk,i(d′i)表示选择值d′i的启发式因子,θk,i(di)为选择值di的信息素浓度,ηk,i(di)为选择值di的启发式因子;
θk,i(di)计算公式参见公式(8):
式中Hi为节点高优先级节点的集合,两个节点间约束的信息素记为τij(di,Vk,j),其中Vk,j表示高优先级节点aj给蚂蚁k选取的值;ηk,i(di)计算公式参见公式(9):式中costij(di,Vk,j)为xi=di,xj=Vk,j时的约束fij产生的代价,当xi=di时,计算公式为公式(10):其中costij(di,dj)表示xi=di,xj=dj时约束产生的代价;
LB为当前节点ai与其高优先级、低优先级邻居的最小代价和,计算公式为公式(11):
4.如权利要求1所述的城市突发事件紧急救援方法,其特征在于:所述S600中计算每条染色体的适应值的方法如下:其中costk为第k条染色体的代价大小, 为所有染色体的代价之和。
5.如权利要求1所述的城市突发事件紧急救援方法,其特征在于:所述S900中,对于第k条二代子代染色体,将每个agent和其邻居之间约束对应的代价相加即得第k条二代子代染色体的代价cos tk的具体过程如下:更新过程包括信息素浓度的增加和/或减少,信息素浓度增加时的更新方法参见公式(15):采用公式(15)的方法对第k条第二代子代染色体中每个agent和其邻居间约束的信息素浓度进行更新,k=1,2,…n:式中:τij(Vk,i,Vk,j)表示ai为蚂蚁k取值为Vk,i,aj为蚂蚁k取值为Vk,j时对应的路径上的信息素浓度,δk,ij为ai和aj之间的信息素浓度加权结果,计算公式参见公式(16):式中λ是DCOP中的约束个数,cos tij(Vk,i,Vk,j)表示ai为蚂蚁k取值为Vk,i,aj为蚂蚁k取值为Vk,j时的代价值,cos t(Vk,*)表示蚂蚁k的总代价,Δk为信息素浓度增量;
式中min cost为第二代子代染色体中的最小代价,cos tk表示第k条染色体的代价,cos tk′表示第k′条染色体的代价, 为所有第二代子代染色体代价之和的平均值;
信息素浓度减少时的更新方法参见公式(17):
τij(di,dj)=(1‑ρ)τij(di,dj)+ρτ0 (17)式中τij(di,dj)表示ai为蚂蚁k取值为di,aj为蚂蚁k取值为dj时路径上的信息素浓度,j∈Hi,τ0表示初始信息素浓度,τ0=3,0<ρ<1为蒸发率,信息素浓度范围为[τmin,τmax]。