PSO算法

clc;
clear ;
close ;
%% Problem Definition CostFunction = @(x) sphere(x); % Cost Function nVar = 5; % Dimension of Decision Variables VarSize = [1,nVar]; % Matrix Size of Decision Variables VarMin = -10; % Lower Bound of Decision Variables
VarMax = 10; % Upper Bound of Decision Variables %% Parameters of PSO MaxIt = 1000; % Maximum Number of Iterations nPop = 50; % Population Size w = 1; % Inertia Coefficient
wdamp = 0.81; % Damping Ratio of Inertia Coefficient
c1 = 2; % Personal Acceleration Coefficient
c2 = 2; % Social Acceleration Coefficient %% Initialization % The Patticle Template
empty_partical.Position = [];
empty_partical.Velocity = [];
empty_partical.Cost = [];
empty_partical.Best.Position = [];
empty_partical.Best.Cost = []; % Create Population Array
particle = repmat(empty_partical,nPop,1); % Initialize Global Best
GlobalBest.Cost = inf; % Iniitialize Population Members
for i=1:nPop % Generate Random Solution
particle(i).Position = unifrnd(VarMin,VarMax,VarSize); % Initialize Velocity
particle(i).Velocity = zeros(VarSize); % Evaluation
particle(i).Cost = CostFunction(particle(i).Position); % Update the Personal Best
particle(i).Best.Position = particle(i).Position;
particle(i).Best.Cost = particle(i).Cost; % Update Global Best
if particle(i).Best.Cost < GlobalBest.Cost
GlobalBest = particle(i).Best;
end end % Array to Hold Best Cost Value
BestCosts = zeros(MaxIt,1); %% Main Loop of PSO for it=1:MaxIt for i=1:nPop % Update Velocity
particle(i).Velocity = w*particle(i).Velocity ...
+ c1*rand(VarSize).*(particle(i).Best.Position - particle(i).Position)...
+ c2*rand(VarSize).*(GlobalBest.Position - particle(i).Position);
% Update Position
particle(i).Position = particle(i).Position + particle(i).Velocity; % Evaluation
particle(i).Cost = CostFunction( particle(i).Position); % Update Personal Best
if particle(i).Cost < particle(i).Best.Cost particle(i).Best.Position = particle(i).Position;
particle(i).Best.Cost = particle(i).Cost; % Update Global Best
if particle(i).Best.Cost < GlobalBest.Cost
GlobalBest = particle(i).Best;
end end end % Store the Best Cost Value
BestCosts(it) = GlobalBest.Cost; % Display Iteration Information
disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCosts(it))]); % Damping Inertia Coefficient
w = w * wdamp; end %% Results figure;
plot(BestCosts,'LineWidth',2);
semilogy(BestCosts,'LineWidth',2);
xlabel('Iterations');
ylabel('Best Cost');
grid on;

测试函数

function z = sphere(x)
%% 目标函数
z = sum(x.^2);
end

最新文章

  1. 4. K线基础知识
  2. Permutations II 再分析
  3. MySQL Proxy
  4. Raspberry Pi 学习笔记之一
  5. 如何将ADT项目导入Android studio及常見問題
  6. 把Java程序打包成jar文件包并执行
  7. 【LeetCode OJ】Pascal&#39;s Triangle
  8. 【UVA11019】Matrix Matcher
  9. [问题解决] initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock
  10. nodejs中EventEmitter
  11. List实现
  12. wGenerator代码生成工具
  13. [PKUSC2018]星际穿越(倍增)
  14. Oracle客户端连接数据库配置
  15. 小tips:JS严格模式(use strict)下不能使用arguments.callee的替代方案
  16. &lt;自动化测试方案_3&gt;第三章、怎么样实现自动化测试?(How)
  17. python 约束与异常处理
  18. golang 使用os/exec配合context实现的超时机制
  19. Python学习之路基础篇--02Python基础+小作业
  20. 支持向量机通俗导论(理解SVM的三层境界)(ZT)

热门文章

  1. [atARC123F]Insert Addition
  2. 2020第十三届全国大学生信息安全竞赛创新实践能力赛rceme writerup
  3. 基于IDEA Plugin插件开发,撸一个DDD脚手架
  4. git不显示提交代码
  5. 洛谷 P7116 - [NOIP2020] 微信步数(拉格朗日插值)
  6. [Linux]非root的R环境被conda破坏后如何恢复?
  7. 【Python小试】判断一条序列GC含量高低
  8. Linux—软件包管理器yum安装详解
  9. Excel-姓名列中同一个人汇总金额列,得出总金额
  10. 41-Climbing Stairs-leetcode