楼主: xiaotanyi
2486 1

[程序分享] 高价悬赏:请高手用遗传算法求解下面这个方程...急求代码···重谢·· [推广有奖]

  • 0关注
  • 0粉丝

高中生

80%

还不是VIP/贵宾

-

威望
0
论坛币
31 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
340 点
帖子
19
精华
0
在线时间
43 小时
注册时间
2008-6-24
最后登录
2014-5-5

楼主
xiaotanyi 发表于 2009-10-14 16:10:42 |AI写论文
40论坛币
各位高手这就是我需要求解的方程.rar (58.95 KB) 本附件包括:
  • 各位高手这就是我需要求解的方程.docx
高价悬赏:请高手用遗传算法求解下面这个方程...急求代码···重谢··
以下是对这个方程的遗传算法编写,错误太多···请大侠们帮忙修改啊··急啊··
       data  cvartotal;
                  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 then  flag(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

关键词:高价悬赏 遗传算法 weights Weight weigh 方程 高手 算法 高价 谢··

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 21:15