社会协作的多智能体进化
第2期 潘晓英等:社会协作的多智能体进化
277
m′k=(mk-)(xk-) ,k=1,…,n ,
′′′′′′
new′=(c′1,c2,…,cn)=(m1,…,mi1-1,mi2,mi2-1,…,
′′′
m′i1+1,mi1,mi2+1,…,mn) ,
1<i1<n,1<i2<n,i1<i2 ,
k=1,…,n .
(4)
ck=+c′k(xk-) ,
31312 协作算子
除竞争操作外,智能体还将与其局部环境中的智能体发生协作关系,以提高自身能量,这里采用了Leung[4]的正交交叉算子来实现.设定交叉概率为Pc,则智能体将以概率Pc+trust2degree3011与其局部环
境当中的智能体进行协作操作.
假设执行协作操作的智能体为agenta,agentb为neighbor(a)中的一员,两者间的协作操作表示为
)>energy(a),则合作成功,以a′a′=cooperate(a,b),若energy(a′替代原有的a,同时令agenta对agentb
δ;若energy(a′)<energy(a),则合作失的可信任度增加,trust2degree(a,b,t+1)=trust2degree(a,b,t)+
败,保持原有agenta不变,并降低其对agentb的可信任度,令trust2degree(a,b,t+1)=trust2degree(a,b,
)=energy(a),则保持原有的agenta以及可信任度不变.t)-γ;若energy(a′
313.3 非一致变异算子
网格上的智能体以概率Pm发生变异,.假设发生变异操作的智能体为agenta,body(a)=(a1,a2,…,an),:
当迭代次数为奇数()时,,agentg和
′′)=(g′agentg′,且有),n,(g′1,g2,…,gn),则可按式(5)产生一个新智能体
agente,body(e)1,en).
n
xk ,
ek=
,
n
ak+(gk-gk)
′
i=1n
∑(∑(
g′i-gi)>xk ,
g′k=1,2,…,n .i-gi)< ,
ak+(gk-gk)
′
′
i=1
ak+(gk-gk)
i=1
∑(
g′i-gi) ,其他,
(5)
当迭代次数为偶数或为第一次迭代时,采用类高斯的变异方式.
ak ,U(0,1)<1/n ,
ek=
ak+G(0,1/t) ,
其他,
k=1,2,…,n .(6)
然后以agente代替原有的agenta.按方向变异能够快速得到一个可能更优的解,而穿插类高斯变异方
式可以保证算法具备跳出局部最优的能力.因此,这种非一致变异算子可以在加快搜索速度的同时有效地保持整个智能体种群的多样性.31314 自学习算子
自学习算子仅对每一代中的最优个体进行操作.对于函数优化问题,将局部搜索和遗传算法相结合能够更好的求解问题.因此,对智能体进行自学习可以通过对智能体进行局部搜索来完成,这里采用一个小规模的多智能体遗传算法[6]来完成.314 社会协作的多智能体进化算法
设Latt为第t代的智能体网格,Latt+1/3和Latt+2/3是Latt和Latt+1间的中间代智能体网格,Bestt是前t代所有网格中最优的智能体,CBestt是Latt中最优的智能体;
Step1 初始化Lat0,更新Best0,并令t←0;
Step2 对Latt中的每个智能体执行竞争算子,得到Latt+1/3;