• 大小:
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-24
  • 语言: Matlab
  • 标签: matlab  

资源简介

带有约束条件的粒子群算法代码pso.m

资源截图

代码片段和文件信息

% 改进的快速粒子群优化算法 (APSO)
function apso

clear all;
Lb=[0.9 0.9 0 0.75 0 0]; %下边界
Ub=[1 1 1 1 12 2500]; %上边界
% 默认参数
para=[25 250 0.95]; %[粒子数,迭代次数,gama参数]

% APSO 优化求解函数
[gbestfmin]=pso_mincon(@cost@constraintLbUbpara);

% 输出结果
Bestsolution=gbest % 全局最优个体
fmin

%% 目标函数
function f=cost(x)
%s=[0;0;0;0;0;0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0];%内燃机工作状态
%a=[1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1];%制冷剂工作12小时
%c=[0.524;0.524;0.524;0.524;0.524;0.524;0.524;0.524;0.875;0.875;0.875;1.217;1.217;1.217;1.217;1.217;0.875;0.875;0.875;1.217;1.217;1.217;0.875;0.875];%电价
f=x(1)*0.059*700+x(2)*0.039*4000*5+x(3)*0.0013*13800+x(4)*0.013*1200+x(5)*1000*0.43+x(6)*0.5;
% 非线性约束
function [ggeq]=constraint(x)
% 不等式限制条件
%Pd=xlsread(‘春夏负荷.xlsx‘‘sheet1‘‘C1:C24‘);
%Qh=xlsread(‘春夏负荷.xlsx‘‘sheet1‘‘B1:B24‘);
%Cload=xlsread(‘春夏负荷.xlsx‘‘sheet1‘‘A1:A24‘);
% 如果没有等式约束,则置geq=[];
Pd=9.95;
Qh=17.06;
Cload=1.8;
%Pd=xlsread(‘春夏负荷.xlsx‘‘sheet1‘‘C1:C24‘);
%Qh=xlsread(‘春夏负荷.xlsx‘‘sheet1‘‘B1:B24‘);
%Cload=xlsread(‘春夏负荷.xlsx‘‘sheet1‘‘A1:A24‘);
% 如果没有等式约束,则置geq=[];
g(1)=x(5)+x(1)*0.7+x(2)*4-Pd*1.0001-3.94*x(3);
g(2)=Pd*0.9999-(x(5)+x(1)*0.7+x(2)*4-3.94*x(3));
g(3)=x(1)+x(2)*4+0.8*x(6)/120-x(4)-Qh*1.0001;
g(4)=0.9999*Qh-(x(1)+x(2)*4+0.8*x(6)/120-x(4));
g(5)=1.2*x(4)+13.8*x(3)-Cload*1.0001;
g(6)=Cload*0.9999-(1.2*x(4)+13.8*x(3));
%if x(1)<0.5 x(1)=0;elsex(1)=1;end
geq=[];


%%  APSO Solver
function [gbestfbest]=pso_mincon(fhandlefnonlinLbUbpara)
if nargin<=6
    para=[25 250 0.95];
end
n=para(1);% 粒子种群大小
time=para(2); %时间步长,迭代次数
gamma=para(3); %gama参数
 scale=abs(Ub-Lb); %取值区间
% 验证约束条件是否合乎条件
if abs(length(Lb)-length(Ub))>0
    disp(‘Constraints must have equal size‘);
    return
end

  alpha=0.2; % alpha=[01]粒子随机衰减因子
  beta=0.5;  % 收敛速度(0->1)=(slow->fast);

% 初始化粒子群
best=init_pso(nLbUb);

评论

共有 条评论