您现在的位置:首页 >> 智能优化 >> 内容

基于人工鱼群优化的电网规划算法matlab仿真

时间:2023/1/26 23:16:42 点击:

  核心提示:A_299,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y56Yl55v

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览


3.算法概述

        人工鱼群算法(Artificial Fish Swarm Algorithm,简称AFSA)是受鱼群行为的启发,由国内李晓磊博士于2002年提出的一种基于动物行为的群体智能优化算法,是行为主义人工智能的一个典型应用,这种算法源于鱼群的觅食行为。

       在一片水域中,鱼往往能自行或尾随其它鱼,找到营养物质多的地方,因而鱼生存数目最多的地方一般就是本水域中营养物质最多的地方。人工鱼群算法根据这一特点,通过构造人工鱼来模仿鱼群的觅食、聚群、追尾及随机行为,从而实现寻优。

4.部分源码

..........................................................................

tic,

yjzl=yjzl;

dxzl=dxzl;

Pi=Pi;

[N,row]=size(Pi);  %N为节点数

fish=40;    %控制参数:人工鱼的条数

visual=7;   %控制参数:视野

delta=0.35;  %控制参数:拥挤度

step=5;     %控制参数:人工鱼移动的步长

maxcalculation=100;    %收敛条件:最大迭代次数

objectvalue=zeros(1,fish);  %食物浓度矩阵(1×fish)

[NN,row]=size(dxzl);   %NN为待选线路的维数

status=rand(fish,NN);  %人工鱼位置状态矩阵status

for i=1:fish

    for j=1:NN

        if status(i,j)<=0.5

            status(i,j)=0;

        else

            status(i,j)=1;

        end

    end

end

minvalue=inf;

for fishnumber=1:fish

    x=status(fishnumber,:);

    [B1,B,BL,NEW,NL,L,nbl]=builtnet(x,dxzl,yjzl);

    [tong]=liantong(N,L,BL);

    if tong>1

        objectvalue(fishnumber)=inf;

    else

       [operate,overflowvalue]=dcflow(N,L,BL,Pi,nbl);

       construction=0;

       for i=1:NEW

           construction=construction+25*B1(i,6);    %计算建设费用每公里线路建设费用取25万元

       end

       objectvalue(fishnumber)=construction+operate+overflowvalue;

    end

   if objectvalue(fishnumber)<minvalue

      minvalue=objectvalue(fishnumber);     %minvalue记录最小的目标函数值

      minfish=status(fishnumber,:);         %minfish记录最小目标函数值所对应的人工鱼的位置

   end

end

%进行行为策略

............................................................................

             [status,objectvalue]=prey(status,fishnumber,objectvalue,visual,fish,NN,N,delta,step,dxzl,yjzl,Pi);

        end

    end

end

for fishnumber=1:fish

    if objectvalue(fishnumber)<minvalue

      minvalue=objectvalue(fishnumber);  

      minfish=status(fishnumber,:); 

    end

end

min2(calculation)=minvalue;

disp(calculation);

disp(minvalue);

%if minvalue<=5900

%    break    

%end

calculation=calculation+1;

end

toc

plot(min2,'-*');

A_299

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168