算法代码片段(二)
来源:互联网 发布:matlab非线性最优化 编辑:程序博客网 时间:2024/06/05 13:22
%%基本蝙蝠算法
function[best,fmin,N_iter]=bat(para)if nargin<1 para=[10 0.25 0.5];endn=para(1); %种群数量,一般选取[10,25]A=para(2); %音量,一般为常数或者递减r=para(3); %脉冲率,一般为常数或者递减%确定频率变化范围Qmin=0;Qmax=2;%算法迭代参数设置tol=0.00001; %算法结束误差N_iter=0; %算法运行总次数d=3; %解的维度%数组初始化Q=zeros(n,1); %频率值v=zeros(n,d); %速度值%初始化种群for i=1:n Sol(i,:)=randint(1,d); Fitness(i)=Fun(Sol(i,:));end%找到当前最优解[fmin,I]=min(Fitness);best=Sol(I,:);%迭代过程while(fmin>tol) for i=1:n Q(i)=Qmin+(Qmin-Qmax)*rand; v(i,:)=v(i,:)+(Sol(i,:)-best)*Q(i); S(i,:)=Sol(i,:)+v(i,:); if rand>r S(i,:)=best+0.01*randint(1,d); end %新的适应度值 Fnew=Fun(S(i,:)); if(Fnew<=Fitness(i))&&(rand<A) Sol(i,:)=S(i,:); Fitness(i)=Fnew; end %更新当前最优解 if Fnew<=fmin best=S(i,:); fmin=Fnew; end end N_iter=N_iter+n;end%结果显示disp(['迭代次数:',num2str(N_iter)]);disp(['最优解:',num2str(best),'最小值:',num2str(fmin)]);%%计算目标函数值function z=Fun(u)z=(1-u(1))^2+100*(u(2)-u(1)^2)^2+(1-u(3))^2;
0 0
- 算法代码片段(二)
- 算法代码片段(一)
- JS常用代码片段截取(二)
- Android有用代码片段(二)
- Android有用代码片段(二)
- Android有用代码片段(二)
- Android有用代码片段(二)
- Android有用代码片段(二)
- Android有用代码片段(二)
- Android有用代码片段(二)
- (转)Android有用代码片段(二)
- Android有用代码片段(二)
- Android有用代码片段(二)
- Android有用代码片段(二)
- android实用代码片段(二)
- Android开发实用代码片段(二)
- ObjectARX代码片段二
- 代码片段(二)
- webstorm 连接mysql
- SpriteKit中类似Cocos2D的CCActionSpawn并发方法GroupAction
- MD5校验碰撞的概率是多少?
- CQOI2016 K远点对 计算几何
- 关于Extjs的提交问题 success : function(form, action)
- 算法代码片段(二)
- Qt中数值和字符串之间的转换
- Linux驱动虚拟地址和物理地址的映射
- 查看一些权限问题oracle(自己备忘)
- Android开发-API指南-<activity-alias>
- Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器
- 百度推送更换版本后出错
- 懒加载Viewpager
- AYITACM2016省赛第一周(搜索) F - 哈密顿绕行世界问题