- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
差分进化算法DE和粒⼦群算法PSO
1.差分进化算法(DE)
DE与GA的主要区别在变异步骤。
对于每个⽬标向量Xi,G(i=1,2,……,NP),基本DE算法的变异向量如下产⽣
其中,随机选择的序号r1,r2和r3互不相同,且r1,r2和r3与⽬标向量序号i也应不同,所以须满⾜NP≥4。变异算⼦F∈[0,2]是⼀个实常数因数,
控制偏差变量的放⼤作⽤。
实现如下。由于此⽬标过于简单,即便去掉交叉步,也能得到不错的结果。
#coding:utf8
importnumpyasnp
N=20#编码长度
MAX=10.0/(2**(N))#[0,10),区间内有两个最⼤值(17)的点
NUM=500#种群数量
deff(x):#函数
return10*np.sin(5*x)+7*np.cos(4*x)
defnew(num=NUM,len=N):#随机⽣成
returnnp.random.randint(1,2**len,num)
defn2b(nums):#数字编码
return[bin(i)[2:].zfill(N)foriinnums]
defb2n(bits):#解码
return[int(i,base=2)foriinbits]
deffit(nums,s_rate=0.15,r_rate=0.05):#适应度和选择
n=len(nums)
sn=int(n*s_rate)
on=int(n*r_rate)
np.random.shuffle(nums)
outs=nums[:on]
res=[f(i*MAX)foriinnums]#适应度选择和随机选择,可能有重复
temp=np.argsort(res)
others=[nums[i]foriintemp[-sn:]]
outs=np.concatenate((outs,others))
returnouts,nums[temp[-1]]*MAX,res[temp[-1]]
defrepo(fits,mode=DE):#扩增,此处5倍;增加了进化算法
n=len(fits)
pt=np.random.randint(0,n,4*n)
pt=np.reshape(pt,(2*n,2))
bits=n2b(fits)
new_bits=bits
foriinpt:
b1,b2=exchange([bits[j]forjini])
new_bits.append(b1)
new_bits.append(b2)
ifmode==DE:
returndmut(new_bits)
returnmut(new_bits)
defexchange(bits,change_rate=0.4,mode=cross):#交换,提供了随机交换和节点互换
n=int(change_rate*N)
ifmode==rand:
rn=range(N)
new_bits=[list(i)foriinbits]
foriinrn[:n]:
new_bits[0][i]=bits[1][i]
new_bits[1][i]=bits[0][i]
new_bits=[.join(i)foriinnew_bits]
else:
n=int(change_rate*N)
new_bits=[list(i)foriinbits]
new_bits[0][:n]=bits[1][:n]
new_bits[1][:n]=bits[0][:n]
new_bits=[.join(i)foriinnew_bits]
returnnew_bits
defmut(bits,mut_rate=0.03
您可能关注的文档
最近下载
- 罗宾斯组织行为学第18版英文教学课件robbinsjudge_ob18_inppt_18.pptx
- 2024年6月英语四级真题(全3套).pdf
- 罗宾斯组织行为学第18版英文教学课件robbinsjudge_ob18_inppt_17.pptx
- 罗宾斯组织行为学第18版英文教学课件robbinsjudge_ob18_inppt_16.pptx
- 罗宾斯组织行为学第18版英文教学课件robbinsjudge_ob18_inppt_15.pptx
- 医院诊所药品医疗器械的效期管理制度.doc
- 工业机器人应用基础 课件 模块四 工业机器人的典型应用实训.pptx
- 罗宾斯组织行为学第18版英文教学课件robbinsjudge_ob18_inppt_14.pptx
- 小学六年级数学百分数知识点总结.docx VIP
- 罗宾斯组织行为学第18版英文教学课件robbinsjudge_ob18_inppt_13.pptx
文档评论(0)