• Matlab|基于多目标粒子群算法的微电网优化调度(多约束多目标智能算法模板)


    目录

    1 主要内容

    2 部分代码

    3 程序结果

    4 下载链接


    主要内容

    程序针对微电网优化模型进行优化求解,文件夹共包含四部分内容,分别是:原始多目标粒子群、改进多目标粒子群、改进多目标粒子群(勘误)和改进多目标粒子群(多约束模板),满足各位同学对于多目标粒子群算法各类需求。

    多约束多目标智能算法优化模板,具体完善内容有一下几点:

    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
    

    程序结果

    4 下载链接

  • 相关阅读:
    本文为Mybatis面经,其中难点问题做了详细解释
    使用Python实现一个简单的密码管理器
    ESP32 下蓝牙播放音乐
    AOP详解
    Fiddler抓手机包
    语音助手开发小记(2023.9.25)
    甘露糖-聚乙二醇-N-羟基琥珀酰亚胺mannose-PEG-NHS
    微服务项目架构演变过程
    Web3 solidity编写fillorder填充订单函数 并梳理讲述逻辑
    论文阅读:Denoising Diffusion Probabilistic Models
  • 原文地址:https://blog.csdn.net/superone89/article/details/136666203