⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spso11.m

📁 无线传感器网络数学优化模型程序
💻 M
字号:
global dimension % --global 用来定义一个全局变量
global popsize
dimension=30;% --维数,,参数赋值
popsize=100; % ---粒子个数 
run_times=30;
max_length=1500;%---最大迭代次数
sample_point=50; %--样本点

w=1.0; %参数赋值 --定义为惯性权重
c1=2.0; % --加速常速
c2=2.0;
vmax=500; %--最大速度
xmin=-500; %—-搜索空间限制
xmax=500;

current_position=zeros(dimension,popsize);  %数组预定义,相当于初始设置,定义了30*100的零矩阵
current_v=zeros(dimension,popsize);
pbest=zeros(dimension,popsize);%——个体最优
gbest=zeros(dimension,1);  %——全局最优
gbest_fitness=zeros(1,popsize);  %——全局最优适应值
current_fitness=zeros(1,popsize); %——当前适应值
gbest1=zeros(dimension,popsize);
gfitness_sampoint=zeros(run_times,fix(max_length/sample_point));    %fix表示取整
total_best=zeros(1,run_times);
gfitness_ave=zeros(1,fix(max_length/sample_point));


for i=1:run_times  %主程序,运行次数为run_times 
    i
    current_position=(xmax-xmin)*rand(dimension,popsize)+xmin; %微粒参数的初始化
    current_v=vmax*rand(dimension,popsize);
    pbest=current_position;
    pbest_fitness=F25_FITNESS(current_position);  %函数适应值计算
    gbest_fitness=min(pbest_fitness);
    locate=minfitness_locate(pbest_fitness,gbest_fitness);  %群体最优适应值定位
    gbest=pbest(:,locate);
    gbest1=repmat(gbest,1,popsize);
    w=0.9;
    for j=1:max_length  %搜索最优值过程,循环代数为max_length
        w=0.9-(j-1)*0.5/(max_length-1);
        current_v=w*current_v+c1*rand(dimension,popsize).*(pbest-current_position)+c2*rand(dimension,popsize).*(gbest1-current_position);   
        current_v=modify1_v(current_v,vmax); %修改速度参数
        current_position=current_v+current_position;
        current_position=modify_position(current_position,xmax,xmin);   %修改位置参数
        current_fitness=F25_FITNESS(current_position);  %计算个体当前适应值
        [pbest_fitness,pbest]=modify_fitness(pbest_fitness,current_fitness,pbest,current_position);  %修改个体历史最优值和最优位置
        gbest_fitness=min(pbest_fitness);  %修改群体最优值
        
        locate=minfitness_locate(pbest_fitness,gbest_fitness);  %群体最优适应值定位
        gbest=pbest(:,locate); %修改群体最优位置
        gbest1=repmat(gbest,1,popsize);
        if mod(j,sample_point)==0  %进化过程最优值统计
            a=j/sample_point;
            gfitness_sampoint(i,a)=gbest_fitness;
        end
    end
    total_best(1,i)=gbest_fitness;  %最优值统计
    gbest_fitness
end
best_fitness=min(total_best); %最优值计算
worst_fitness=max(total_best); %最次值计算
mean_fitness=mean(total_best); %均值计算
std_fitness=std(total_best);  %方差计算
gfitness_ave=sum(gfitness_sampoint)/run_times; %样本点均值计算

format long e
mean_fitness %输出所需值
std_fitness
best_fitness  
worst_fitness
gfitness_ave
total_best

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -