% % Based on the paper:
% % Mojtaba Ghasemi, Ebrahim Akbari, Mohammad Zand, Morteza Hadipour,
% % Sahand Ghavidel, and Li Li. "An Efficient Modified HPSO-TVAC-Based
% % Dynamic Economic Dispatch of Generating Units." Electric Power
% % Components and Systems 47, no. 19-20 (2019): 1826-1840.
clear
tic
clc
disp('MNHPSO-JTVAC');
CostFunction=@(x) ObjFun(x);
nVar=30; % Number of decision variables
VarMin=-100; % Minimum value of decision variables
VarMax=-VarMin; % Maximum value of decision variables
nPop=100; % Number of algorithm population
npop_0=nPop;
npop_f=20;
ci=0.5;
cf=0.0;
dx=VarMax-VarMin;
vmax(1:nVar)=0.5*dx;
MaxNFE=100e3; % Maximum Number of Function Evaluations
MaxIt=MaxNFE/npop_f;
velocity=zeros(nPop,nVar);
position=velocity;
cost=zeros(1,nVar);
gbestcost=inf;
pbest=position;
pbestcost=cost;
gcost=nan(1,MaxIt);
NFES=zeros(1,MaxIt);
NFE=0;
it=0;
while NFE<=MaxNFE
it=it+1;
if NFE==0
for i=1:nPop
velocity(i,1:nVar)=vmax;
position(i,:)=VarMin+rand(1,nVar).*(VarMax-VarMin);
cost(i)=CostFunction(position(i,:));
NFE=NFE+1;
pbest(i,:)=position(i,:);
pbestcost(i)=cost(i);
if pbestcost(i)<gbestcost
gbest=pbest(i,:);
gbestcost=pbestcost(i);
end
end
gcost(1)=gbestcost;
else
c_it=((cf-ci)*(NFE/MaxNFE))+ci;
% % Population Reduction Policy
nPop=npop_0-(npop_0-npop_f)*(NFE/MaxNFE);
nPop=round(nPop);
nPop=max(nPop,npop_f);
nPop=min(npop_0,nPop);
for i=1:nPop
% % Select a random particle other than the i-th one
a0=randi(nPop-1,1);
if a0>=i
a0=a0+1;
end
w=randn;
c1_it=(abs(w))^(c_it*w);
c2_it=(abs(1-w))^(c_it*(1/(1-w)));
%%%%%%%%%%%%%
velocity(i,:)=(c1_it*(rand(1,nVar)).*((pbest(i,:))-position(i,:)))...
+(c2_it*(rand(1,nVar)).*((gbest(1,:)+pbest(a0,:))-2*position(i,:)));
for gg=1:nVar
if velocity(i,gg)==0
if rand<0.5
velocity(i,gg)=rand*vmax(1,gg);
else
velocity(i,gg)=-rand*vmax(1,gg);
end
end
velocity(i,gg)=sign(velocity(i,gg)).*min(abs(velocity(i,gg)),abs(vmax(1,gg)));
end
%%%%%%%%%%%%%%%%
velocity(i,:)=min(max(velocity(i,:),-vmax),vmax);
position(i,:)=position(i,:)+velocity(i,:);
position(i,:)=min(max(position(i,:),VarMin),VarMax);
cost(i)=CostFunction(position(i,:));
NFE=NFE+1;
if cost(i)<pbestcost(i)
pbest(i,:)=position(i,:);
pbestcost(i)=cost(i);
if pbestcost(i)<gbestcost
gbest=pbest(i,:);
gbestcost=pbestcost(i);
end
end
end
end
NFES(it)=NFE;
gcost(it)=gbestcost;
fprintf('Iteration %3.0f, NFE %6.0f, Best Cost %g\n',it,NFE,gbestcost)
end
gcost(it+1:end)=[];
NFES(it+1:end)=[];
plot(NFES,gcost,'b','linewidth',2);
BestSol.Position=gbest;
BestSol.Cost=gbestcost;
跳跃时变加速度系数的自组织分层粒子群算法附matlab代码.zip
版权申诉
44 浏览量
2022-12-28
10:36:42
上传
评论
收藏 13KB ZIP 举报
天天Matlab科研工作室
- 粉丝: 3w+
- 资源: 7259
最新资源
- 基于QT的地图可视化桌面系统后台数据库为MySQL5.7源码.zip
- 基于simulink的PLL锁相环系统仿真【包括模型,文档,参考文献,操作步骤】
- 基于EM-GMM模型的目标跟踪和异常行为检测matlab仿真【包括程序,注释,参考文献,操作步骤,说明文档】
- 2109010044_胡晨燕_选课管理数据库设计与实现.prj
- 帕鲁介绍的PPT备份没什么好下的
- demo1-202405
- 两种方式修改Intel网卡MAC地址
- 服务器搭建所需资源:static文件夹
- Vue02的源码学习资料
- Python 程序语言设计模式思路-行为型模式:访问者模式:在不改变被访问对象结构的情况下,定义对其元素的新操作
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈