资源简介
本代码基于matlab开发,是完全自主研发的粒子群算法来求解约束多目标优化万能code,希望对学习的同学有帮助
代码片段和文件信息
function PSOfirst()
%% 清空环境
clear;
clc;
%% 参数设置
w=0.9;%权值 将影响PSO 的全局与局部搜优能力, 值较大,全局搜优能力强,局部搜优能力弱;反之,则局部搜优能力增强,而全局搜优能力减弱。
c1=0.1;%加速度,影响收敛速度
c2=0.1;
dim=6;%6维,表示企业数量
swarmsize=100;%粒子群规模,表示有100个解的空间
maxiter=200;%最大循环次数,影响时间
minfit=0.001;%最小适应值
vmax=0.01;
vmin=-0.01;
ub=[0.20.20.20.20.20.2];%解向量的最大限制
lb=[0.010.010.010.010.010.01];%解向量的最小限制
%% 种群初始化
range=ones(swarmsize1)*(ub-lb);
swarm=rand(swarmsizedim).*range+ones(swarmsize1)*lb;%粒子群位置矩阵
Y1=[33.08;
21.85;
6.19;
11.77;
9.96;
17.15;];
Y=Y1./100;%将百分数化为小数
[ymyn]=size(Y);
for i=1:swarmsize %% YX的约束
s=swarm(i:);
ss=s‘;
while sum(Y.*ss)<0.1*sum(Y)
ss=rand(dim1).*((ub-lb)‘)+ones(dim1).*((lb)‘);
end
swarm(i:)=ss‘;
end
vstep=rand(swarmsizedim)*(vmax-vmin)+vmin;%粒子群速度矩阵
fswarm=zeros(swarmsize1);%预设空矩阵,存放适应值
for i=1:swarmsize
X=swarm(i:);
[SUMGG]=jn(X);
fswarm(i:)=SUMG;
%fswarm(i:)=feval(jnswarm(i:));%以粒子群位置的第i行为输入,求函数值,对应输出给适应值
end
%% 个体极值和群体极值
[bestfbestindex]=min(fswarm);%求得适应值中的最小适应值,和,其所在的序列
gbest=swarm;%暂时的个体最优解为自己
fgbest=fswarm;%暂时的个体最优适应值
zbest=swarm(bestindex:);%所在序列的对应的解矩阵序列,全局最佳解
fzbest=bestf;%全局最优适应值
%% 迭代寻优
iter=0;
yfitness=zeros(1maxiter);%1行100列矩阵,存放100个最优值的空间矩阵
x1=zeros(1maxiter);%存放x的空间
x2=zeros(1maxiter);
x3=zeros(1maxiter);
x4=zeros(1maxiter);
x5=zeros(1maxiter);
x6=zeros(1maxiter);
while((iterminfit))
for j=1:swarmsize
% 速度更新
vstep(j:)=w*vstep(j:)+c1*rand*(gbest(j:)-swarm(j:))+c2*rand*(zbest-swarm(j:));
if vstep(j:)>vmax
vstep(j:)=vmax;%速度限制
end
if vstep(j:) vstep(j:)=vmin;
end
% 位置更新
swarm(j:)=swarm(j:)+vstep(j:);
for k=1:dim
if swarm(jk)>ub(k)
swarm(jk)=ub(k);%位置限制
end
if swarm(jk)
swarm(jk)=lb(k);
end
end
% 适应值
X=swarm(j:);
[SUMGG]=jn(X);
fswarm(j:)=SUMG;
% 可在此处增加约束条件,若满足约束条件,则进行适应值计算
%
% 个体最优更新
if fswarm(j) gbest(j:)=swarm(j:);%个体最优解更新
fgbest(j)=fswarm(j);%个体最优值更新
end
% 群体最优更新
if fswarm(j) zbest=swarm(j:);%群体最优解更新
fzbest=fswarm(j);%群体最优值更新
end
end
iter=iter+1;
yfitness(1iter)=fzbest;
x1(1iter)=zbest(1);%将全局最优解的第1个元素,依次存储,共有MAXITER个
x2(1iter)=zbest(2);
x3(1iter)=zbest(3);
x4(1iter)=zbest(4);
x5(1iter)=zbest(5);
x6(1iter)=zbest(6);
end
fzbest
zbest
X=zbest;
[SUMGG]=jn(X);
GGbest=G;GGbest
%% 画图
figure(1)
plot(yfitness‘linewidth‘2)
title(‘最优基尼系数优化曲线‘‘fontsize‘14);
xlabel(‘迭代次数‘‘fontsize‘14);
ylabel(‘基尼系数‘‘fontsize‘14);
figure(2)
plot(x1‘b‘)
hold on
pl
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5099 2013-06-23 17:02 PSO_byself.m
目录 0 2018-12-02 20:26 __MACOSX\
文件 212 2013-06-23 17:02 __MACOSX\._PSO_byself.m
相关资源
- 多目标粒子群算法优化
- PSO粒子群算法实现
- 粒子群算法优化BP神经网络权值的程序
- 用粒子群算法优化支持向量机的matl
- 多目标优化粒子群算法MATLAB
- 粒子群算法详解+matlab代码说明
- 基于粒子群算法的图像聚类算法
- 基本粒子群算法MATLAB源代码
- 基于PSO算法的PID控制器设计与实现论
- PSO粒子群算法万能matlab代码注释详细
- 粒子群算法优化问题matlab程序
- MATLAB粒子群算法仿真
- 局部粒子群算法
- PSO优化BP神经网络模型.zip
- 粒子群算法权重改变
- 粒子群算法解决企业生产调度问题m
- 多目标粒子群算法源代码
- 配电网故障定位基于改进粒子群算法
- 三维粒子群算法的matlab实现 源代码带
- 基于粒子群算法的PID控制器优化设计
- 多目标粒子群算法matlab
- 运用粒子群算法解决车间调度问题m
- 基于粒子群算法的无功优化MATLAB源代
- PSO(粒子群算法)MATlab程序
- 基于遗传算法和粒子群算法的认知无
- 自适应粒子群算法
- 粒子群算法优化RBF神经网络
- 经济调度粒子群算法matlab源程序
- 多目标粒子群算法matlab源程序
- 粒子群算法求解函数极值 matlab
评论
共有 条评论