function [G_best1,G_best2,D]=PSO(Pso_no,Max_iteration,lb,ub,I,image_c)
L_a=max(max(image_c));
L_b=min(min(image_c));
V_max=4;
Leader_score1=-inf; %change this to -inf for maximization problems
Leader_score2=-inf;
%统计图像整体灰度平均值u,背景灰度平均值u11,背景概率w11
[ua11,w11,pp1,nd1,u1]=Otsu_q(I);
%统计图像整体灰度平均值u,背景灰度平均值u11,背景概率w11
[ua22,w22,pp2,nd2,u2]=Otsu_q(image_c);
%%%%粒子群位置及速度的初始化
Positions1=intialize_position_rand(Pso_no,ub,lb);%粒子位置初始化
Positions2=intialize_position_rand(Pso_no,L_a,L_b);%粒子位置初始化
V_pso2=intialize_position_rand(Pso_no,2-V_max,V_max-2);%粒子位置初始化
V_pso1=intialize_position_rand(Pso_no,-V_max,V_max);%粒子位置初始化
D=[];t=0;
P_best1=zeros(1,Pso_no);
P_best2=zeros(1,Pso_no);
d111=zeros(1,Pso_no);
d222=zeros(1,Pso_no);
while t<Max_iteration
for i=1:Pso_no
%粒子位置重置
if Positions1(i)>ub %粒子位置超出上界设置为255
Positions1(i)=255;
end
if Positions1(i)<lb %粒子位置超出下界设置为0
Positions1(i)=0;
end
% Return back the search agents that go beyond the boundaries of the search space
if Positions2(i)>ub %粒子位置超出上界设置为255
Positions2(i)=255;
end
if Positions2(i)<lb %粒子位置超出下界设置为0
Positions2(i)=0;
end
%粒子速度重置
if V_pso1(i)>V_max %粒子速度超出上界设置为V_max
V_pso1(i)=V_max;
end
if V_pso1(i)<-V_max %粒子速度超出下界设置为-V_max
V_pso1(i)=-V_max;
end
if V_pso2(i)>V_max-2 %粒子速度超出上界设置为V_max-2
V_pso2(i)=V_max-2;
end
if V_pso2(i)<2-V_max %粒子速度超出下界设置为2-V_max
V_pso2(i)=2-V_max;
end
end
%由最大类间方差公式计算每个位置(灰度值)的类间方差
[Max_jubu1,d1,d11]=Otsu_h(ua11,w11,Positions1,pp1,nd1,u1);%P_best1是得带过程中每个粒子的最优位置
[Max_jubu2,d2,d22]=Otsu_h(ua22,w22,Positions2,pp2,nd2,u2);%d22是类间方差组
%全体最优位置
if d1>Leader_score1
Leader_score1=d1;
G_best1=Max_jubu1;%G_best1是迭代中全局最优位置
end
if d2>Leader_score2
Leader_score2=d2;
G_best2=Max_jubu2;%G_best2是迭代中全局最优位置
end
%P_best1是得带过程中每个粒子的最优位置
for i=1:Pso_no
if d11(i)>d111(i)
d111(i)=d11(i);
P_best1(i) =Positions1(i);
end
if d22(i)>d222(i)
d222(i)=d22(i);
P_best2(i) =Positions2(i);
end
end
%给各个系数赋值
w=0.5;
r1=rand; r2=rand;
c1=2; c2=2;
for i=1:Pso_no
V_pso1(i)=w*V_pso1(i)+c1*r1*(P_best1(i)-Positions1(i))+c2*r2*(G_best1-Positions1(i));%改变粒子的速度
V_pso2(i)=w*V_pso2(i)+c1*r1*(P_best2(i)-Positions2(i))+c2*r2*(G_best2-Positions2(i));
Positions1(i)=Positions1(i)+V_pso1(i);%改变粒子的位置
Positions2(i)=Positions2(i)+V_pso2(i);
end
Positions1=double(int32(Positions1));
Positions2=double(int32(Positions2));
D=[D,G_best1];
t=t+1;
end
end
Matlab领域
- 粉丝: 3w+
- 资源: 3764
最新资源
- 基于SAR-ADC与OTA运放的PLL锁相环与Bandgap基准电源视频教学进阶,SAR-ADC 运放OTA PLL锁相环基础,pll进阶 bandgap基准电源 LDO 视频教学 ,SAR-ADC
- "两种方法求解MTPA数值解析详解" 或者 "探讨MTPA数值求解的两种策略",MTPA数值求解两种方法 ,MTPA数值求解; 两种方法; 优化算法; 迭代法; 解析法; 计算方法; 精确度比较 ,M
- 医药洁净室空调箱多模式控制程序详解:西门子PLC与昆仑通泰触摸屏联合应用,停止模式、生产模式、值班模式、消毒循环与排风模式控制逻辑解析,医药洁净室空调箱各种模式实现程序介绍 西门子1500 PLC+昆
- 《Abaqus模拟结构调谐质量阻尼器与惯容器制作教程:飞轮转动惯量与丝杠螺距详解》,abaqus生成结构调谐质量阻尼器和惯容器,模拟丝杠螺距,飞轮转动惯量,惯容系数 视频讲解 ,核心关键词:Abaq
- 电-气-热综合能源系统耦合优化调度模型:基于MATLAB YALMIP与CPLEX、Gurobi求解器的细致文档参考,MATLAB代码:电-气-热综合能源系统耦合优化调度 关键词:综合能源系统 优化
- 基于Ansoft Maxwell的电磁场有限元仿真:无线电能传输与电机建模研究,ansoft ansys Maxwell 有限元仿真 电磁场模型 主要为无线电能传输WPT 磁耦合谐振 多相多绕组变压
- 30KW储能双向逆变PCSPS设计方案资料:含双向DCDC与三电平逆变技术、仿真源码、原理图及控制器源码,30KW储能PCS逆变器双向变流器设计方案资料,双向DCDC和三电平逆变PCS 1.此系列为
- MATLAB驱动的ASR防滑转模型:PID与对照控制算法对比,冰雪路面条件下滑移率与车速轮速对照图展示,MATLAB驱动防滑转模型ASR模型 ASR模型驱动防滑转模型 ?牵引力控制系统模型 选择PID
- MATLAB七自由度分布式驱动电动汽车模型的动态仿真与模糊控制策略探究,MATLAB分布式驱动电动汽车模型 MATLAB七自由度整车模型 分布式驱动电动车整车模型 四轮驱动电动车整车模型 轮毂电机电动
- EPS电动助力转向系统:基于MATLAB/Simulink模型搭建与单模型仿真分析,EPS汽车电动助力转向模型 MATLAB电动助力转向模型 Simulink电动助力转向模型 总体模型搭建包括:EPS
- 高频方波电压注入法用于零低速IPMSM无感控制算法仿真研究:转子位置精确估计与动态性能优化,高频方波电压注入零低速IPMSM无感控制算法仿真,在估计的d轴注入高频方波电压来估计转子位置,具有较高的稳态
- Labview Nivision视觉程序:LV2014版源程序,仿视觉助手功能强大,大部分功能可用,Labview Nivision视觉程序,labview源程序,大部分功能可以用,仿视觉助手的 版
- 基于双闭环SVPWM羊角波调制的二极管钳位型NPC控制系统:理论推导与实践应用,高质量电能输出,功率稳定且波形清晰 ,双闭环SVPWM(羊角波)调制的二极管钳位型NPC控制系统,手写理论推导 DC:8
- RSLogix系列软件授权授权详解与版本更新通知:涵盖RSLogix 5000 Studio编程VMware环境支持及固件版本信息,AB罗克韦尔 RSLogix5000 V10-20.5 Studio
- MATLAB滑动窗口函数:高效生成机器学习样本数据,适用于数据分帧与一维原始数据处理,MATLAB加窗滑动窗口程序,MATLAB数据处理,可以直接对一维原始数据生成样本 找了好久的滑动窗口的程序都
- 移相全桥ZVS零电压开通技术:实现滞后桥臂辅助电流源网络,开关频率达20kHz,功率输出500W,输入与输出电压分别为350V与50V ,移相全桥ZVS零电压开通 增加了辅助电流源网络实现滞后桥臂ZV
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈