clear all
clc
x=zeros(1,10);
[x1,x2,f] = PSO_im(@imF,60,2,2,0.8,800,5,0.0000001,10,0.6,0.0000000000000000001,0);
%得到出计算结果
disp('*************************************************');
disp('目标函数取最小值时的自变量:');
x1
x2
disp('目标函数的最小值为:')
f
disp('**************************************************');
function y=imF(x)y=(cos(x(1)^2-x(2)^2)-3)/((2+ (x(1)^2+x(2)^2))^2)+0.8;
end
function [x,y,Result]=PSO_immu(func,N,c1,c2,w,MaxDT,D,eps,DS,replaceP,minD,Psum)
format long;
%%%%%%给定初始化条件%%%%%%%%%%%%%%%%%%%%%%%%%%%
c1=1.2;             %学习因子1
c2=1.2;             %学习因子2
w=0.8;            %惯性权重
MaxDT=800;        %最大迭代次数
D=2;              %搜索空间维数(未知数个数)
N=60;            %初始化群体个体数目
eps=10^(-10);     %设置精度(在已知最小值时候用)
DS=8;             %每隔DS次循环就检查最优个体是否变优
replaceP=0.5;     %粒子的概率大于replaceP将被免疫替换
minD=1e-10;       %粒子间的最小距离
Psum=0;           %个体最佳的和
range=100;
count = 0;
%%%%%%初始化种群的个体%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:Nfor j=1:Dx(i,j)=-range+2*range*rand;  %随机初始化位置v(i,j)=randn;  %随机初始化速度end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%先计算各个粒子的适应度,并初始化Pi和Pg%%%%%%%%%%%%%%%%%%%
for i=1:N    p(i)=feval(func,x(i,:));y(i,:)=x(i,:);
end
pg=x(1,:);             %Pg为全局最优
for i=2:Nif feval(func,x(i,:))<feval(func,pg)    pg=x(i,:);end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%主循环,按照公式依次迭代,直到满足精度要求%%%%%%%
for t=1:MaxDTfor i=1:Nv(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));x(i,:)=x(i,:)+v(i,:);if feval(func,x(i,:))<p(i) p(i)=feval(func,x(i,:)); y(i,:)=x(i,:);endif p(i)<feval(func,pg)  pg=y(i,:);subplot(1,2,1);            bar(pg,0.25); axis([0 3 -40 40 ]) ;title (['Iteration  ', num2str(t)]); pause (0.1);subplot(1,2,2); plot(pg(1,1),pg(1,2),'rs','MarkerFaceColor','r', 'MarkerSize',8)hold on;plot(x(:,1),x(:,2),'k.');set(gca,'Color','g')hold off;grid on;axis([-100 100 -100 100 ]) ;title(['Global Min =  ',num2str(p(i))]);xlabel(['Min_x= ',num2str(pg(1,1)),'  Min_y= ',num2str(pg(1,2))]);endendPbest(t)=feval(func,pg) ;
%     if Foxhole(pg,D)<eps                %如果结果满足精度要求则跳出循环
%         break;
%     end
%%%%%开始进行免疫%%%%%%%%%%%%%%%%%if t>DSif mod(t,DS)==0 && (Pbest(t-DS+1)-Pbest(t))<1e-020    %如果连续DS代数,群体中的最优没有明显变优,则进行免疫.%在函数测试的过程中发现,经过一定代数的更新,个体最优不完全相等,但变化非常非常小,for i=1:N                            %先计算出个体最优的和Psum=Psum+p(i);endfor i=1:N                            %免疫程序              for j=1:N                        %计算每个个体与个体i的距离distance(j)=abs(p(j)-p(i));endnum=0;   for j=1:N                        %计算与第i个个体距离小于minD的个数if distance(j)<minDnum=num+1;endendPF(i)=p(N-i+1)/Psum;             %计算适应度概率PD(i)=num/N;                     %计算个体浓度a=rand;                          %随机生成计算替换概率的因子PR(i)=a*PF(i)+(1-a)*PD(i);       %计算替换概率endfor i=1:Nif PR(i)>replacePx(i,:)=-range+2*range*rand(1,D);count=count+1;endendendend
end%%%%%%%最后给出计算结果%%%%%%%%%%%%%%%%%%%%
x=pg(1,1);
y=pg(1,2);
Result=feval(func,pg);
%%%%%%%%%%算法结束%%%%%%%%%%%%%%%%%%
function probabolity(N,i)
PF=p(N-i)/Psum;%适应度概率
disp(PF);
for jj=1:Ndistance(jj)=abs(P(jj)-P(i));
end
num=0;
for ii=1:Nif distance(ii)<minDnum=num+1;end
end
PD=num/N;            %个体浓度
PR=a*PF+(1-a)*PD;     %替换概率

基于模拟退火和粒子群算法结合的MATLAB相关推荐

  1. 【优化选址】基于模拟退火结合粒子群算法求解分布式电源定容选址问题matlab源码

    1 算法介绍 1.1 模拟退火算法 1.2 粒子群算法 粒子群算法同遗传算法相似,也是根据生物界中的种群行为而发明的一种算法.也是解决优化问题常用的一种算法.其原理简单,实现起来也不复杂,并且经过自己 ...

  2. 基于多目标粒子群算法在分布式电源选址和定容中的应用matlab程序

    基于多目标粒子群算法在分布式电源选址和定容中的应用matlab程序 摘 要: 为更好地解决分布式电源选址定容问题,提出一种改进的多目标粒子群算法.考虑投资成本.网损以及电压稳定性三因素建立了一个三目标 ...

  3. 4.基于多目标粒子群算法冷热电联供综合能源系统运行优化

    4.基于多目标粒子群算法冷热电联供综合能源系统运行优化<文章复现> 相关资源代码:基于多目标粒子群算法冷热电联供综合能源系统运行优化 基于多目标算法的冷热电联供型综合能源系统运行优化 考虑 ...

  4. 基于改进二进制粒子群算法的配电网重构(matlab实现)

    目录 一.引言 1.问题背景 2.二进制粒子群算法 2.1简介 2.2 S i g m o i d Sigmoid Sigmoid函数 2.3二进制粒子群算法 2.4算法的改进 二.配电网重构模型 1 ...

  5. 基于多目标粒子群算法的冷热电联供型综合能源系统运行优化。 包括燃气轮机,燃气锅炉,电制冷机等设备。

    基于多目标粒子群算法的冷热电联供型综合能源系统运行优化. 包括燃气轮机,燃气锅炉,电制冷机等设备. _:5660667510835416宇哥代码铺

  6. 基于多目标算法的冷热电联供型综合能源系统运行优化 粒子群算法 平台:MATLAB

    基于多目标算法的冷热电联供型综合能源系统运行优化 粒子群算法 平台:MATLAB ID:8722678838679712路过蜻蜓

  7. 基于遗传算法和粒子群算法的PID悬架控制、LQR悬架控制和滑模悬架控制

    目录 1.基于遗传算法和粒子群算法的的PID悬架控制 1.1 两种悬架系统 1.1.1 将路面激励整合到悬架系统 1.1.2 不将路面激励整合到悬架系统 1.1.3 总结 1.2 PID经典控制理论 ...

  8. MATLAB代码:基于多目标粒子群算法冷热电联供综合能源系统运行优化

    MATLAB代码:基于多目标粒子群算法冷热电联供综合能源系统运行优化 关键词:综合能源 冷热电三联供 粒子群算法 多目标优化 参考文档:<基于多目标算法的冷热电联供型综合能源系统运行优化> ...

  9. 【微电网优化】基于量子行为粒子群算法机组燃烧控制系统建模含Matlab源码

    1 简介 能源问题与环境问题随着现代社会的快速发展已成为中国乃至全世界关注的焦点.就我国现状来说,由于独特的能源架构和社会形态,直接决定了我国的电力工业在当今乃至未来相当长的一段时期内将以燃煤火电机组 ...

最新文章

  1. RabbitMQ之消息确认机制(事务+Confirm)
  2. ansible1.7.2源码安装教程
  3. 深入理解java枚举_深入学习java枚举的应用
  4. Springmvc的handler method参数绑定常用的注解
  5. boost::coroutine2模块实现斐波那契数列的测试程序
  6. spring学习(34):构造函数依赖注入
  7. 生成器案例,#采集日志
  8. 千亿智慧照明市场背后,BLEMESH免开发方案成主流
  9. 4号线地铁站点列表_【暖房】6号线酒店式白领公寓;房山地铁站品牌公寓;4号线分散式公寓;朝阳门附近整租房源...
  10. C++中的struct与class继承方式
  11. mesh和wifi中继的区别_mesh和无线中继的区别
  12. 智慧城管拓展业务系统建设方案
  13. 前端开发工程师就业时应该选择大公司还是小公司?这是我听过最靠谱的答案!
  14. 第12篇:给任意java程序挂Socks5代理方法
  15. android恢复出厂设置
  16. 利用云服务器发布项目
  17. android 蓝牙打印机(ESC/POS 热敏打印机),打印菜单小票和图片,对蓝牙配对和连接打印功能进行了封装,让你超快实现蓝牙打印功能
  18. execve系统调用_execve系统调用分析
  19. 1循环结构程序设计-第5关:C循环-寻找完数
  20. 海南大学考研人,你真的马上就要上岸了

热门文章

  1. 【ansys workbench】14.对称问题:水杯
  2. HyperLandmark-开源人脸106点关键点检测SDK,北京智云视图科技
  3. DRM 为流媒体“收银”
  4. 如何理解count=count++,count的值不变
  5. count(列名)与count(*)、count(1)的区别
  6. Python Djang 搭建自动词性标注网站(基于Keras框架和维基百科中文预训练词向量Word2vec模型,分别实现由GRU、LSTM、RNN神经网络组成的词性标注模型)
  7. vue vue-router ElementUI导航栏重复点菜单报错问题
  8. Java 树结构 TreeNode 表格 工具类
  9. 计算机开机慢怎么办,我的电脑开机很慢,一直优化也没多大改变,该怎么办?...
  10. 模糊人像照如何变得更清晰