| 所在主题: | |
| 文件名: 各位高手这就是我需要求解的方程.rar | |
| 资料下载链接地址: https://bbs.pinggu.org/a-429206.html | |
本附件包括:
|
|
| 附件大小: | |
|
高价悬赏:请高手用遗传算法求解下面这个方程...急求代码···重谢··
以下是对这个方程的遗传算法编写,错误太多···请大侠们帮忙修改挨·急挨· datacvartotal; set data1; /*data1包括yield,b,scale,pc,pm,stopnum的数据集;*/ m=dim(yield,1); n=dim(yield,2); /*1、产生随机种群规模;*/ do i=1 to n+1 ARRAY weights(i,scale)=RANNOR(seed); ARRAY weight(i,scale)=RANNOR(seed); end; cvar1=50; a=1; /*2、随机产生的权重比例归一化 ; */ sum=SUM(weights); do j=1to scale do i=1to n weights(i,j)=weights(i,j)/sum(1,j); end end /* 3、计算适应度函数 ;*/ do j=1 to scale do k=1 to m do i=1 to n mid(1,i)=weights(i,j); end mid1=-(mid*yield); flag(1,k)=mid1(1,k)-weights(n+1,j); if flag(1,k)<0 thenflag(1,k)=0; end end mid2=sum(flag); oldcvar(1,j)=weights(1+n,j)+mid2/(m*(1-b)); end /*4、循环开始*/ do while(a<stopnum); /*5、选择算法:最优精英策略*/ maxV=oldcvar(,><); column=oldcvar(,>:<); maxV1=oldcvar(,<>); column1=oldcvar(,<:>); if(maxV>=cvar) do i=1 to n+1 weights(i:column1)=weight(i:1); // 如果本次迭代中得到的最优个体比历史最优个体更优, 把当前最优个体取代历史最优个体, 否则用历史最优个体取代本次迭代中的最差的个体。 end end cvar=maxV; do i=1 to n+1 weight(i,1)=weights(i,column); end do i=1 to n+1 var=weights(n+1,i); end 6、交叉 ;而 其中为 一个随机数。 a=RANNOR(seed); exchange1=abs(RANNOR(1,2)*scale); exchange2=abs(RANNOR(1,2)*(n+1)); if(r<pc)weights(exchange2(1,1),exchange1(1,1))=weights(exchange2(1,1),exchange1(1,1))*a+(1-a)*weights(exchange2(1,2),exchange1(1,2)); weights(exchange2(1,2),exchange1(1,2))=weights(exchange2(1,1),exchange1(1,1))*(1-a)+a*weights(exchange2(1,2),exchange1(1,2)); end 7、突变: .当前最优个体的微变异算子。采用选取当前种群中的“最优个体”和“次优个体”都进行微变异操作,即对个体中只选取一位基因进行上述变异操作,然后直接成为下一代个体; r1=RANNOR(1,scale); do i=1 to scale if(r1(1,i)<pm) pmRow=abs(RANNOR(seed)*(n+1)); weights(pmRow,i)=weights(pmRow,><))+r1(1,i)*weights(pmRow,<>); end end sum=sum(weights); do j=1to scale do i=1 to n weights(i,j)=weights(i,j)/sum(1,j); end end do j=1 to scale do k=1 to m do i=1 to n mid(1,i)=weights(i,j); end mid1=-(mid*yield); flag(1,k)=mid1(1,k)-weights(n+1,j); if(flag(1,k)<0) flag(1,k)=0; end end mid2=sum(flag); oldcvar(1,j)=weights(1+n,j)+mid2(1,m)/(m*(1-b)); end a=a+1; end; run; 请教大虾帮忙修改挨··谢谢挨·遗传算法求最优化···· 本文来自: 人大经济论坛 详细出处参考:http://www.pinggu.org/bbs/viewthread.php?tid=613709&page=1&from^^uid=623403 |
|
熟悉论坛请点击新手指南
|
|
| 下载说明 | |
|
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。 2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。 3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。 (如有侵权,欢迎举报) |
|
京ICP备16021002号-2 京B2-20170662号
京公网安备 11010802022788号
论坛法律顾问:王进律师
知识产权保护声明
免责及隐私声明