目录
程序针对微电网优化模型进行优化求解,文件夹共包含四部分内容,分别是:原始多目标粒子群、改进多目标粒子群、改进多目标粒子群(勘误)和改进多目标粒子群(多约束模板),满足各位同学对于多目标粒子群算法各类需求。
多约束多目标智能算法优化模板,具体完善内容有一下几点:
1.利用好“可行状态”标志,在目标函数子程序(fitness)中集中将爬坡约束、soc约束、联络线功率约束等做成模板形式,只要是增加/修改约束,就在这部分按照同样的格式就轻松搞定。
2.固化无需修改的子函数,由于程序涉及到多个子函数,而且采用结构变量形式,调试难度比较大,因此,对这些子程序进行完善固化,只需要了解每个模块的功能即可,无需进行修改。
%多目标粒子群优化的实现 % 最小化问题的技术 %% 初始化参数 global PV; global WT; %蓄电池最大放电功率(正表示为电负荷供电,即放电) BESSMax_dischar=30; %蓄电池最大充电功率 BESSMax_char=-30; %柴油机最大发电功率 DEMax=30; %柴油机最小发电功率 DEMin=6; %燃气轮机最大发电功率 MTMax=30; %燃气轮机最小发电功率 MTMin=3; %主网交互最大功率(正表示为电负荷供电) GridMax=30; %主网交互最小功率 GridMin=-30; %% 种群初始化 if nargin==0 %nargin是判断输入变量个数的函数 c = [0.1,0.2]; % 加速因子 iw = [0.5 0.001]; % 惯性因子 max_iter =100; % 最大迭代次数 %各设备出力约束 for n=1:144 %粒子长度为144(光伏,风电,储能,柴油,燃气轮机,主网的6*24个小时出力) if n<25 lower_bound(n)=0; upper_bound(n) =PV(n); end if n>24&&n<49 lower_bound(n)=0; upper_bound(n) =WT(n-24); end if n>48&&n<73 lower_bound(n)=BESSMax_char; upper_bound(n) =BESSMax_dischar; end if n>72&&n<97 lower_bound(n)=DEMin; upper_bound(n) =DEMax; end if n>96&&n<121 lower_bound(n)=MTMin; upper_bound(n) =MTMax; end if n>120 lower_bound(n)=GridMin; upper_bound(n) =GridMax; end end swarm_size=100; % 种群个数 rep_size=100; % 存档库大小 grid_size=7; % 每个维度的网格数 alpha=0.1; % 通货膨胀率 beta=2; % 领导人选择压力 gamma=2; % 删除选择压力 mu=0.1; % 变异速率 problem=@prob; % 创建函数句柄为problem,函数为pro,可以简单理解为调用 end %% 初始化粒子 fprintf('初始化种群中\n') w = @(it) ((max_iter - it) - (iw(1) - iw(2)))/max_iter + iw(2); %更新惯性因子--改进粒子群算法 pm = @(it) (1-(it-1)/(max_iter-1))^(1/mu); %类比遗传算法引入变异操作,更新变异速率,在particle函数的78-84行 swarm(1,swarm_size) = Particle(); %调用Particle函数,从obj中得到swarm_size for i = 1:swarm_size swarm(i)=Particle(lower_bound,upper_bound,problem);%调用Particle函数 retry = 0; while swarm(i).infeasablity > 0 && retry < 100 %循环条件为:无不可行解且次数低于100 swarm(i)=Particle(lower_bound,upper_bound,problem);%调用Particle函数 retry = retry + 1; end end