《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 101|回复: 3
收起左侧

[提问] 粒子群算法求教!

[复制链接]
发表于 2018-10-6 18:58:13 | 显示全部楼层 |阅读模式
MATLAB智能算法30个案例分析(第二版)134页,求出最优个体适应度值为1.0053,对应粒子的位置是(0.0015,-0.0008),(0.0015,-0.0008)如何用MATLAB求得?如下是主程序
%% 清空环境
clc
clear

%% 参数初始化
%粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;

maxgen=300;   % 进化次数  
sizepop=20;   %种群规模

Vmax=0.5;
Vmin=-0.5;
popmax=2;
popmin=-2;

%% 产生初始粒子和速度
for i=1:sizepop
    %随机产生一个种群
    pop(i,:)=2*rands(1,2);    %初始种群
    V(i,:)=0.5*rands(1,2);  %初始化速度
    %计算适应度
    fitness(i)=fun(pop(i,:));   %染色体的适应度
end

%% 个体极值和群体极值
[bestfitness bestindex]=max(fitness);
zbest=pop(bestindex,:);   %全局最佳
gbest=pop;    %个体最佳
fitnessgbest=fitness;   %个体最佳适应度值
fitnesszbest=bestfitness;   %全局最佳适应度值

%% 迭代寻优
for i=1:maxgen
   
    for j=1:sizepop
        
        %速度更新
        V(j,:) = V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));
        V(j,find(V(j,:)>Vmax))=Vmax;
        V(j,find(V(j,:)<Vmin))=Vmin;
        
        %种群更新
        pop(j,:)=pop(j,:)+V(j,:);
        pop(j,find(pop(j,:)>popmax))=popmax;
        pop(j,find(pop(j,:)<popmin))=popmin;
        
        %适应度值
        fitness(j)=fun(pop(j,:));
   
    end
   
    for j=1:sizepop
        
        %个体最优更新
        if fitness(j) > fitnessgbest(j)
            gbest(j,:) = pop(j,:);
            fitnessgbest(j) = fitness(j);
        end
        
        %群体最优更新
        if fitness(j) > fitnesszbest
            zbest = pop(j,:);
            fitnesszbest = fitness(j);
        end
    end
    yy(i)=fitnesszbest;   
        
end
%% 结果分析
plot(yy)
title('最优个体适应度','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);
发表于 2018-10-7 20:43:46 | 显示全部楼层
每次的结果都可能不一样,总体结果应该差别不大。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-8 08:02:37 | 显示全部楼层
安东尼先生 发表于 2018-10-7 20:43
每次的结果都可能不一样,总体结果应该差别不大。

你好,首先谢谢您耐心的回答。我知道每次求解的结果稍微有差异。
我想请教的问题是:(0.0015,-0.0008)是怎么求出的?主程序的哪一段代码是求(0.0015,-0.0008)的?O(∩_∩)O谢谢
回复 支持 反对

使用道具 举报

发表于 2018-10-8 08:32:56 | 显示全部楼层
hengxiaoyang 发表于 2018-10-8 08:02
你好,首先谢谢您耐心的回答。我知道每次求解的结果稍微有差异。
我想请教的问题是:(0.0015,-0.0008 ...

最佳适应度对应的,即zbest
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 陕ICP备08102094号 

GMT+8, 2018-10-18 13:10 , Processed in 0.081318 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表