欢迎来到第一文库网! | 帮助中心 第一文库网-每个人都是第一
第一文库网
全部分类
  • 研究报告>
  • 学术论文>
  • 全科教育>
  • 应用文档>
  • 行业资料>
  • 企业管理>
  • 技术资料>
  • 生活休闲>
  • ImageVerifierCode 换一换
    首页 第一文库网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    智能系统 实验核心代码汇总 电子 第2--10章.docx

    • 资源ID:801292       资源大小:166.75KB        全文页数:25页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    扫码关注公众号登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    智能系统 实验核心代码汇总 电子 第2--10章.docx

    第2章实验代码1、主程序numpynpmatp1ot1ib.pyp1otpitrun():1、输入节点个数N2、node_factory(N):生成N个节点的列表3、c1assify(nodes,f1ag,k=10):进行k轮簇分类,f1ag已标记的节点不再成为簇头,返回所有簇的列表4、show_p1t(C1aSSes):迭代每次聚类结果,显示连线图:return:N=IOO#N=int(input(”请输入节点个数:“)机获取初始节点列表,选择标志列表nodes/f1agnode_factory(N)书对节点列表进行簇分类,k为迭代轮数iter_c1assesc1assify(nodes,f1ag,k=10)c1assesiter_c1asses:#显示分类结果show_p1t(c1asses)2、判断距离函数#判断距离函数dist(V_A,v_B):V1IVM判断两个节点之间的一维距离:paramv_A:A二维向量:paramv_B:B二维向量:return:-维距离V1IVVBnp.sqrt(np.power(vA0-v_B0),2)np.power(vA1-v_B1)2)3、生成随机节点集node_factory(N):生成N个节点的集合:paramN:节点的数目:paramnodes:节点的集合:Paramse1ected-f1ag:标志:是否被选择为簇首-初始化为0:return:节点集合nodes=x,y"x,y.+标志fa1gnodesse1ected_f1agirange(OzN):# 在1*1矩阵生成x,y坐标nodenp.random.random(),np.random.random()# Print("生成的节点为:node)nodes.append(node)# 对应的选择标志初始化为0se1ected_f1ag.append(0)# Print("生成:",Ien(nodes),"个节点”)# print("初始化标志列表为",se1ected_f1ag)nodeszSeIeCted_f1ag4、根据1EACH算法选择簇头节点se1_heads(r,nodes,f1ags):# 1IfV1根据阈值选取簇头节点:paramr:轮数:paramnodes:节点歹U表:paramf1ags:选择标志:paramP:比例因子:return:簇头歹IJ表heads,簇成员歹IJ表membersf1HV1# 阈值函数Tn使用IeaCh计算P0.05*(100/Ien(nodes)TnP/(1-P*(r(1/P)# Print(“阈值为:",Tn)# 簇头列表heads# 簇成员列表members# 本轮簇头数n_head=0# 对每个节点生成对应的随机数randsnp.random.random()_range(1en(nodes)# Print("随机数为:rands)# 遍历随机数列表,选取簇头irange(1en(nodes):#若此节点未被选择为簇头f1agsi0:#随机数低于阈值一选为簇头randsi<:Tn:f1agsi=1heads.append(nodesi)n_head+=1#print(nodesi,"被选为第",n_headz"个簇头")#随机数高于阈值e1se:members.append(nodesi)#若此节点已经被选择过members.append(nodesi)Print(“簇头为:“,Ien(heads)z“个“)Print("簇成员为:Ien(members)z"个")heads,members5、节点分簇算法.'c1assify(nodes,f1ag,k1):# 1IfVV进行簇分类:paramnodes:节点歹J表:paramf1ag:节点标记:paramk:轮数:return:簇分类结果列表c1asses类1.,类2.类1.簇头.簇成员# 1I1f1# k轮的集合iter_c1asses# 迭代r轮forrrange(k):# 获取簇头列表,簇成员列表heads,membersse1_heads(rnodes,f1ag)# 建立簇类的列表c1asses()_range(1en(heads)# 将簇头作为头节点添加到聚类列表中irange(1en(heads):# print(zi+1,"个簇头为",headsi)c1asses(i.append(headsi)# Print("簇头集合:c1asses)# 簇分类:遍历节点nodenrange(1en(members):#选取距离最小的节点dist_min1irange(1en(heads):dist_headsdist(membersnzheadsi)#找到距离最小的簇头对应的heads下标idist_heads<dist_min:dist_mindist_headshead_c1ai#添加到距离最小的簇头对应的聚类列表中c1asseshead_c1a.append(membersn)#将簇头作为头节点添加到聚类列表中iter_c1asses.append(c1asses)#O个簇头的情况dist_min1:Print(”本轮没有簇头!”)iter_c1asses6、绘制分类图show_p1t(c1asses):V1Itf1显示分类图:paramc1asses:类1.,类2.>簇头,成员,成员.:return:V1ItVVfigpit.figure()ax1pit.gca()# 设置标题ax1.set_tit1e(,WSN1')# 设置X轴标签pit.x1abe1(,X,)# 设置Y轴标签p1t.y1abe1(,Y,)icon,o,z,*'z,.,x,z,+,r,s,co1or,r,b,z,g,z,c,'y,z'm'#对每个簇分类列表进行showirange(1en(c1asses):centorc1assesi0pointc1asses(i):ax1.p1ot(centor0,point0,centor1,point1,co1ori6,marker=iconi5,a1pha-0.4)#显示所画的图pit.show()第3章实验核心代码用遗传算法求解函数的最大值:y=10*sin(5x)+7*cos(4x)步骤如下:1 .初始化种群,我们采用十位二进制进行编码代表X的值,产生n个个体,代码如下:importrandomdefgeneEncoding(pop_size,ChromJength):pop=foriinrange(pop_size):temp=forjinrange(chrom_1ength):temp.append(random.randint(0,1)pop.apend(temp)returnpop1:2 .对染色体解码,也就是二进制转化为十进制,并计算适应度,在这个问题中也就是函数值的大小,代码如下:importmathdefdecodechrom(pop,ChromJength):temp=foriinrange(1en(pop):t=0forjinrange(chromjength):t+=popij*(math.pow(2J)temp.append(t)returntempdefca1objVa1ue(pop,chrom_1ength,max_va1ue):tempi=obj_va1ue=tempi=decodechrom(pop,chrom_1ength)foriinrange(1en(temp1):x=tempii*max_va1ue/(math.pow(2,chrom_1ength)-1)obj_va1ue.append(10*math.sin(5*x)+7*math.cos(4*x)returnobj_va1ue3 .对于值为负数的个体进行淘汰,代码如下:defca1fitVa1ue(obj_va1ue):fit_va1ue=c_min=0foriinrange(1en(obj_va1ue):if(obj_va1uei+c_min>0):temp=c_min+obj_va1ueie1se:temp=0.0fit_va1ue.append(temp)returnfit_va1ue4 .找出当前种群的最优解,也就是最大值,保存在IiSt中,代码如下:defbest(pop,fit_va1ue):px=1en(pop)best_individua1=best_fit=fit_va1ue0foriinrange(1,px):if(fit_va1uei>best_fit):best_fit=fit_va1ue1ibest_individua1=popireturnIbestJndividua1,best_fit5 .计算每个个体被选中的概率,这里就是用个体的函数朱除以总群全体值得到,然后利用轮盘法进行选择,代码如下:importrandomdefsum(fit_va1ue):tota1=0foriinrange(1en(fit_va1ue):tota1+=fit_va1ueireturntota1defcumsum(fit_va1ue):foriinrange(1en(fit_va1ue)-2,-1,-1):t=0j=whi1e(j<=i):t+=fit_va1ue|jj÷=1fit_va1uei=tfit_va1ue1en(fit_va1ue)-1=1defse1ection(pop,fit_va1ue):newfit_va1ue=tota1_fit=sum(fit_va1ue)foriinrange(1en(fit_va1ue):newfit_va1ue.append(fit_va1uei/tota1_fit)cumsum(newfit_va1ue)ms=pop_1en=1en(po)foriinrange(pop_1en):ms.append(random.random()ms.sort()fitin=0newin=Onewpop=pop#转轮盘选择法whi1enewin<pop_1en:if(msnewin<newfit_va1uefitin):newpopnewin=popfitinnewin=newin+1e1se:fitin=fitin+1pop=newpop6 .进行交叉和变异操作,代码如下:importrandomdefcrossover(pop,pc):

    注意事项

    本文(智能系统 实验核心代码汇总 电子 第2--10章.docx)为本站会员(lao****ou)主动上传,第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第一文库网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 001doc.com网站版权所有   

    经营许可证编号:宁ICP备2022001085号

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



    收起
    展开