📄 pso_main.m
字号:
%标准粒群优化算法程序
%求解函数最小值
clc;
clear all;
global Fun_Select; %目标函数选择
global D; %搜索空间维数(未知数个数)
global popsize; %种群规模
global gen; %迭代次数
global w; %惯性权重
global c1; %学习因子(个体最优导向系数)
global c2; %学习因子(全局最优导向系数)
global x_min; %x的下限
global x_max; %x的上限
global max_velocity; %最大速度
global best_fitness; %全局最优解的适应值
global best_in_history; %历史全局最优解的适应值
global pop; %种群
global gbest; %全局最优解
global exetime; %当前迭代次数
Initial_Param; %参数初始化
for exetime=1:gen
pop=Fun_ComputeFitness(pop,Fun_Select,D,popsize); %计算适应值
PSO; %用PSO算法更新粒子位置
Outputdata; %实时输出结果
pause(0.001); %程序暂停0.001秒
end
disp('******************************************************************************************************')
switch Fun_Select
case 1
disp('函数F1(Spherical函数)的全局最优位置为:');
Gbest=gbest
disp('最后得到函数F1(Spherical函数)最优解的适应值为:');
Fitness_Gbest=best_fitness
%disp('函数F1(Spherical函数) 的历史最优解的适应值为:');
%Fitness_Gbest_In_History=best_in_history
case 2
disp('函数F2(Rosenbrock函数)的全局最优解为:');
Gbest=gbest
disp('最后得到函数F2(Rosenbrock函数)最优解的适应值为:');
Fitness_Gbest=best_fitness
%disp('函数F2(Rosenbrock函数)的历史最优解的适应值为:');
%Fitness_Gbest_In_History=best_in_history
case 3
disp('函数F3(Shaffers f6函数)的全局最优解为:');
Gbest=gbest
disp('最后得到函数F3(Shaffers f6函数)最优解的适应值为:');
Fitness_Gbest=best_fitness
%disp('函数F3(Shaffers f6函数)的历史最优解的适应值为:');
%Fitness_Gbest_In_History=best_in_history
case 4
disp('函数F4(Rastrigrin函数)的全局最优解为:');
Gbest=gbest
disp('最后得到函数F4(Rastrigrin函数)最优解的适应值为:');
Fitness_Gbest=best_fitness
%disp('函数F4(Rastrigrin函数)的历史最优解的适应值为:');
%Fitness_Gbest_In_History=best_in_history
case 5
disp('函数F5(Griewank函数)的全局最优解为:');
Gbest=gbest
disp('最后得到函数F5(Griewank函数)最优解的适应值为:');
Fitness_Gbest=best_fitness
%disp('函数F5(Griewank函数)的历史最优解的适应值为:');
%Fitness_Gbest_In_History=best_in_history
case 6
disp('函数F6(Ackley函数)的全局最优解为:');
Gbest=gbest
disp('最后得到函数F6(Ackley函数)最优解的适应值为:');
Fitness_Gbest=best_fitness
%disp('函数F6(Ackley函数)的历史最优解的适应值为:');
%Fitness_Gbest_In_History=best_in_history
case 7
disp('函数F7(Axis Parallel hyper-ellipsoid函数)的全局最优解为:');
Gbest=gbest
disp('最后得到函数F7(Axis Parallel hyper-ellipsoid函数)最优解的适应值为:');
Fitness_Gbest=best_fitness
%disp('函数F7(Axis Parallel hyper-ellipsoid函数)的历史最优解的适应值为:');
%Fitness_Gbest_In_History=best_in_history
case 8
disp('函数F8(Schwefel函数)的全局最优解为:');
Gbest=gbest
disp('最后得到函数F8(Schwefel函数)最优解的适应值为:');
Fitness_Gbest=best_fitness
%disp('函数F8(Schwefel函数)的历史最优解的适应值为:');
%Fitness_Gbest_In_History=best_in_history
otherwise
disp('函数F8(Schwefel函数)的全局最优解为:');
Gbest=gbest
disp('最后得到函数F8(Schwefel函数)最优解的适应值为:');
Fitness_Gbest=best_fitness
%disp('函数F8(Schwefel函数)的历史最优解的适应值为:');
%Fitness_Gbest_In_History=best_in_history
end
disp('******************************************************************************************************')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -