改进粒子群算法求解电力系统经济调度问题(Matlab实现)
创始人
2024-02-07 16:55:07
0

 目录

1 相关知识点

2 Matlab完整代码实现 

3 结果及可视化

1 相关知识点

                                  这里写图片描述

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

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

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

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

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

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

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

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

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

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

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

2 Matlab完整代码实现 

知识点讲解完毕,下面就是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.CostVarMax);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
function results=RunInternalPSO(intmodel)disp('运行粒子群算法 ...');%% 本文参数定义CostFunction=@(x) MyCost(x,intmodel);        % 目标函数nVar=intmodel.nPlant;             %决策变量个数VarSize=[1 nVar];   % 决策变量矩阵的大小VarMin=0;         %变量下限VarMax=1;         %变量上%% 粒子群参数MaxIt=100;      nPop=50;        % 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.CostVarMax);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

function results=RunInternalPSO(intmodel)

    disp('运行粒子群算法 ...');

    %% 本文参数定义

    CostFunction=@(x) MyCost(x,intmodel);        % 目标函数

    nVar=intmodel.nPlant;             %决策变量个数

    VarSize=[1 nVar];   % 决策变量矩阵的大小

    VarMin=0;         %变量下限
    VarMax=1;         %变量上

    %% 粒子群参数

    MaxIt=100;      

    nPop=50;        

    % 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=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).PositionVarMax);
            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.Position=particle(i).Position;
                particle(i).Best.Cost=particle(i).Cost;
                particle(i).Best.Out=particle(i).Out;

                % 更新全局最优
                if particle(i).Best.Cost

                    BestSol=particle(i).Best;

                end

            end

        end

        BestCost(it)=BestSol.Cost;

       

        w=w*wdamp;

    end

    %% 结果
    results.BestSol=BestSol;
    results.BestCost=BestCost;

    disp('粒子群结束.');
    
end

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

3 结果及可视化

 

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...