改进粒子群算法求解电力系统经济调度问题(Matlab实现)

简介: 改进粒子群算法求解电力系统经济调度问题(Matlab实现)

1 相关知识点

                                 


这里总结一位博主的目录:梳理如下:


粒子群算法(带约束处理)——Python&Matlab实现


智能优化算法——粒子群算法(Matlab实现)


灰狼算法和粒子群算法比较(附完整Matlab代码)——可应用于电气期刊论文


粒子群算法求解电力系统环境经济调度+微电网调度(风、光、电动车、柴油机、主网)(Python代码实现)


改进的多目标差分进化算法在电力系统环境经济调度中的应用(Python代码实现)【电气期刊论文复现】


风电随机性动态经济调度模型(Python&Matlab代码)


多目标灰太狼算法求解环境经济调度问题(IEEE30)(Matlab实现)


多元宇宙算法求解电力系统多目标优化问题(Matlab实现)【电气期刊论文复现】


求解热电联产经济调度问题的改进遗传与粒子群算法


改进粒子群算法的配电网故障定位(Python&Matlab代码实现)


2 部分代码

知识点讲解完毕,下面就是Matlab代码:

clc;
clear;
close all;
%% 经济调度问题
extmodel=CreateModel();
CostFunction=@(x) MyCostExt(x,extmodel); % 成本函数(目标函数)
nVar=extmodel.nPlant;             % 发电机台数(决策变量的个数)
VarSize=[1 nVar];   % 决策变量矩阵的大小
VarMin=0;         % 变量下限
VarMax=1;         % 变量上限
%% 粒子群算法相关参数
MaxIt=100;      % 最大迭代次数
nPop=10;        % 总群数量
% w=1;            % 惯性权重
% wdamp=0.99;     % 惯性重量阻尼比
% c1=2;           % 个体学习系数
% c2=2;           % 种群学习系数
%% 约束系数
phi1=2.05;
phi2=2.05;
phi=phi1+phi2;
chi=2/(phi-2+sqrt(phi^2-4*phi));
w=chi;          % 惯性权重
wdamp=1;        % 惯性重量阻尼比
c1=chi*phi1;    % 个体学习系数
c2=chi*phi2;    % 种群学习系数
%% 飞行速度限制
VelMax=0.1*(VarMax-VarMin);
VelMin=-VelMax;
%% 初始化
empty_particle.Position=[];
empty_particle.Cost=[];
empty_particle.Out=[];
empty_particle.Velocity=[];
empty_particle.Best.Position=[];
empty_particle.Best.Cost=[];
empty_particle.Best.Out=[];
particle=repmat(empty_particle,nPop,1);
BestSol.Cost=inf;
for i=1:nPop
    %=====初始化粒子群位置===============
    particle(i).Position=unifrnd(VarMin,VarMax,VarSize);
    %=====初始化速度======
    particle(i).Velocity=zeros(VarSize);
    %=====目标函数计算===========
    [particle(i).Cost, particle(i).Out]=CostFunction(particle(i).Position);
    %====更新粒子个体最优=====
    particle(i).Best.Position=particle(i).Position;
    particle(i).Best.Cost=particle(i).Cost;
    particle(i).Best.Out=particle(i).Out;
    %====更新粒子群全局最优========
    if particle(i).Best.Cost<BestSol.Cost
        BestSol=particle(i).Best;
    end
end
BestCost=zeros(MaxIt,1);
%% PSO 主循环
for it=1:MaxIt
    for i=1:nPop
        %============更新速度(跟着公式写就可以啦)===============
        particle(i).Velocity = w*particle(i).Velocity ...
            +c1*rand(VarSize).*(particle(i).Best.Position-particle(i).Position) ...
            +c2*rand(VarSize).*(BestSol.Position-particle(i).Position);
        %============适用速度限制============
        particle(i).Velocity = max(particle(i).Velocity,VelMin);
        particle(i).Velocity = min(particle(i).Velocity,VelMax);
        %============更新位置================
        particle(i).Position = particle(i).Position + particle(i).Velocity;
        IsOutside=(particle(i).Position<VarMin | particle(i).Position>VarMax);
        particle(i).Velocity(IsOutside)=-particle(i).Velocity(IsOutside);
        %============适用位置限制============
        particle(i).Position = max(particle(i).Position,VarMin);
        particle(i).Position = min(particle(i).Position,VarMax);
        %============计算目标函数===========
        [particle(i).Cost, particle(i).Out] = CostFunction(particle(i).Position);
        %==========更新个体最优==========
        if particle(i).Cost<particle(i).Best.Cost
            particle(i).Best.Position=particle(i).Position;
            particle(i).Best.Cost=particle(i).Cost;
            particle(i).Best.Out=particle(i).Out;
            %=======更新全局最优============
            if particle(i).Best.Cost<BestSol.Cost
                BestSol=particle(i).Best;
            end
        end
    end
    BestCost(it)=BestSol.Cost;
    disp(['迭代次数' num2str(it) ': 最优解为 = ' num2str(BestCost(it))]);
    w=w*wdamp;
end
%% 结果
figure;
plot(BestCost,'LineWidth',2);
xlabel('迭代次数');
ylabel('最优解')


clc;
clear;
close all;
%% 经济调度问题
extmodel=CreateModel();
CostFunction=@(x) MyCostExt(x,extmodel); % 成本函数(目标函数)
nVar=extmodel.nPlant;             % 发电机台数(决策变量的个数)
VarSize=[1 nVar];   % 决策变量矩阵的大小
VarMin=0;         % 变量下限
VarMax=1;         % 变量上限
%% 粒子群算法相关参数
MaxIt=100;      % 最大迭代次数
nPop=10;        % 总群数量
% w=1;            % 惯性权重
% wdamp=0.99;     % 惯性重量阻尼比
% c1=2;           % 个体学习系数
% c2=2;           % 种群学习系数
%% 约束系数
phi1=2.05;
phi2=2.05;
phi=phi1+phi2;
chi=2/(phi-2+sqrt(phi^2-4*phi));
w=chi;          % 惯性权重
wdamp=1;        % 惯性重量阻尼比
c1=chi*phi1;    % 个体学习系数
c2=chi*phi2;    % 种群学习系数
%% 飞行速度限制
VelMax=0.1*(VarMax-VarMin);
VelMin=-VelMax;
%% 初始化
empty_particle.Position=[];
empty_particle.Cost=[];
empty_particle.Out=[];
empty_particle.Velocity=[];
empty_particle.Best.Position=[];
empty_particle.Best.Cost=[];
empty_particle.Best.Out=[];
particle=repmat(empty_particle,nPop,1);
BestSol.Cost=inf;
for i=1:nPop
    %=====初始化粒子群位置===============
    particle(i).Position=unifrnd(VarMin,VarMax,VarSize);
    %=====初始化速度======
    particle(i).Velocity=zeros(VarSize);
    %=====目标函数计算===========
    [particle(i).Cost, particle(i).Out]=CostFunction(particle(i).Position);
    %====更新粒子个体最优=====
    particle(i).Best.Position=particle(i).Position;
    particle(i).Best.Cost=particle(i).Cost;
    particle(i).Best.Out=particle(i).Out;
    %====更新粒子群全局最优========
    if particle(i).Best.Cost<BestSol.Cost
        BestSol=particle(i).Best;
    end
end
BestCost=zeros(MaxIt,1);
%% PSO 主循环
for it=1:MaxIt
    for i=1:nPop
        %============更新速度(跟着公式写就可以啦)===============
        particle(i).Velocity = w*particle(i).Velocity ...
            +c1*rand(VarSize).*(particle(i).Best.Position-particle(i).Position) ...
            +c2*rand(VarSize).*(BestSol.Position-particle(i).Position);
        %============适用速度限制============
        particle(i).Velocity = max(particle(i).Velocity,VelMin);
        particle(i).Velocity = min(particle(i).Velocity,VelMax);
        %============更新位置================
        particle(i).Position = particle(i).Position + particle(i).Velocity;
        IsOutside=(particle(i).Position<VarMin | particle(i).Position>VarMax);
        particle(i).Velocity(IsOutside)=-particle(i).Velocity(IsOutside);
        %============适用位置限制============
        particle(i).Position = max(particle(i).Position,VarMin);
        particle(i).Position = min(particle(i).Position,VarMax);
        %============计算目标函数===========
        [particle(i).Cost, particle(i).Out] = CostFunction(particle(i).Position);
        %==========更新个体最优==========
        if particle(i).Cost<particle(i).Best.Cost
            particle(i).Best.Position=particle(i).Position;
            particle(i).Best.Cost=particle(i).Cost;
            particle(i).Best.Out=particle(i).Out;
            %=======更新全局最优============
            if particle(i).Best.Cost<BestSol.Cost
                BestSol=particle(i).Best;
            end
        end
    end
    BestCost(it)=BestSol.Cost;
    disp(['迭代次数' num2str(it) ': 最优解为 = ' num2str(BestCost(it))]);
    w=w*wdamp;
end
%% 结果
figure;
plot(BestCost,'LineWidth',2);
xlabel('迭代次数');
ylabel('最优解');

完整代码:评论区回复关键字

3 结果及可视化


相关文章
|
10天前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
10天前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
97 14
|
10天前
|
机器学习/深度学习 运维 算法
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
|
10天前
|
算法 数据可视化 异构计算
【车辆路径问题VRPTW】基于北极海鹦优化(APO)算法求解带时间窗的车辆路径问题VRPTW研究(Matlab代码实现)
【车辆路径问题VRPTW】基于北极海鹦优化(APO)算法求解带时间窗的车辆路径问题VRPTW研究(Matlab代码实现)
|
10天前
|
机器学习/深度学习 运维 算法
【复现】基于改进秃鹰算法的微电网群经济优化调度研究(Matlab代码实现)
【复现】基于改进秃鹰算法的微电网群经济优化调度研究(Matlab代码实现)
|
11天前
|
算法 计算机视觉
【MPDR & SMI】失配广义夹角随输入信噪比变化趋势、输出信干噪比随输入信噪比变化趋势研究(Matlab代码实现)
【MPDR & SMI】失配广义夹角随输入信噪比变化趋势、输出信干噪比随输入信噪比变化趋势研究(Matlab代码实现)
|
11天前
|
编解码 人工智能 算法
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)
|
11天前
|
机器学习/深度学习 编解码 并行计算
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
|
11天前
|
机器学习/深度学习 传感器 边缘计算
【故障诊断】基于时滞反馈随机共振的增强型旋转电机故障诊断(Matlab代码实现)
【故障诊断】基于时滞反馈随机共振的增强型旋转电机故障诊断(Matlab代码实现)
|
11天前
|
传感器 机器学习/深度学习 算法
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)

热门文章

最新文章