当前位置: 首页 > news >正文

【配电网】基于差分进化算法的含DG配电网无功优化模型

目录

1 主要内容

目标函数

算法流程

2 部分程序

3 程序结果

下载链接


主要内容

该程序参考《自适应多目标差分进化算法在计及电压稳定性的无功优化中的应用》,以网损和电压偏差为目标,考虑DG无功出力和电容器组,建立多目标无功优化模型,并采用差分进化算法进行求解,在差分进化的寻优机制中嵌入非劣排序和拥挤距离排序以对种群实施选择操作,使算法快速收敛到 Pareto前沿的同时,保证了非劣解的均匀分布;对缩放因子和交叉概率进行自适应修正,避免对参数的反复试探 ,提高了算法的鲁棒性。并在IEEE33节点系统上进行验证。

  • 目标函数

  • 算法流程

部分程序

% -------------------------------------------------------------------------%  基于改进多目标差分进化算法的配电网无功优化。%  同时考虑网损和电压偏移2个目标函数。%  控制变量包括:1.DG无功出力(节点2、13),2.并联电容器组数(节点6、31)。%  算例为IEEE33节点系统% -------------------------------------------------------------------------clcclear%% ----------  控制参数设置  ----------% Ndg - DG个数% Nc - 无功补偿点个数% dim - 控制变量维数% M - 优化目标的个数% lower - 控制向量的下限% upper - 控制向量的上限% popSize - 种群大小% F - 缩放因子% CR - 交叉因子% iterMax - 最大进化代数Ndg = 2;Nc = 2;dim = Ndg + Nc;M = 2;% DG无功出力范围为-100kvar-500kvar,节点6的电容器组数为4组,节点31的电容器组数为7组lower = [-100 -100 0 0];upper = [500 500 4 7];popSize = 40;iterMax = 200;% 为方便运算,将种群中个体对每个目标的适应度值和总体约束冲突值也保存在相应的个体中pop = initialization(popSize, M, dim, Ndg, Nc, lower, upper);%% ---------------初始化控制参数矩阵---------------F = zeros(popSize,1);  CR = zeros(popSize,1); %% ----------  开始迭代  ----------for iter = 1 : iterMax    parent = pop(:, 1 : (dim + M + 1));    for i = 1 : popSize                % 随机选出4个个体,且i~=r1~=r2~=r3        while 2 > 1            r1 = floor(rand * popSize) + 1;            if r1 ~= i                break;            end        end        while 2 > 1            r2 = floor(rand * popSize) + 1;            if r2 ~= i & r2 ~= r1                break;            end        end        while 2 > 1            r3 = floor(rand * popSize) + 1;            if r3 ~= i & r3 ~= r1 & r3 ~= r2                break;            end        end                % 对缩放因子和交叉概率进行自适应修正        Fk = 0.9 - 0.1*exp(iter/iterMax);        CRk = 0.9 - 0.1*exp(iter/iterMax);                F(i) = normrnd(Fk,0.1);        CR(i) = normrnd(CRk,0.1);             % 变异、交叉操作同时进行        randj = floor(rand * dim) + 1;        % 连续控制变量        for j = 1 : Ndg            if rand < CR(i) | j == randj                candidate(i, j) = parent(r1, j) + F(i) * (parent(r2, j) - parent(r3, j));            else                candidate(i,j) = parent(i, j);            end            % 越限处理            if candidate(i, j) < lower(1, j)                candidate(i, j) = lower(1, j);            end            if candidate(i, j) > upper(1, j)                candidate(i, j) = upper(1, j);            end        end        % 离散控制变量        for j = Ndg + 1 : dim            if rand < CR(i) | j == randj                candidate(i, j) = round(parent(r1, j) + F(i) * (parent(r2, j) - parent(r3, j)));            else                candidate(i,j) = round(parent(i, j));            end            % 越限处理            if candidate(i, j) < lower(1, j)                candidate(i, j) = lower(1, j);            end            if candidate(i, j) > upper(1, j)                candidate(i, j) = upper(1, j);            end        end                % 评价生成的子代个体        candidate(i, (dim + 1) : (dim + M + 1)) = evaluation(candidate(i ,:), dim, Ndg, Nc);    end    % 选择操作,使生成的种群规模介于popSize和2*popSize之间    parent = parent(:, 1 : (dim + M + 1));    temp_pop = selection(parent, candidate, popSize, dim, M);        % 对temp_pop进行快速非劣排序和拥挤距离计算    temp_pop = nondomination(temp_pop, M, dim);         % 对temp_pop进行truncate,选出规模为popSize的种群    pop = truncation(temp_pop, M, dim, popSize);        [m, n] = size(pop);    temp_pop1 = zeros(m, n);        if iter < iterMax-1        index = randperm(popSize);        for i = 1 : popSize            temp_pop1(i ,:) = pop(index(i) ,:);        end        pop = temp_pop1;    end     if mod(iter,10) == 0        disp ('迭代次数:')        disp(iter);    endendplot(pop(:,dim + 1),pop(:,dim + 2),'o');xlabel('网损');ylabel('电压偏差');

程序结果

附原文结果图

程序有详细文档和每个子函数作用文档,方便大家学习,注意:只有主函数可以运行,子函数是不能单独运行的!

下载链接

相关文章:

  • python技巧:自动控制高低温箱,通过串口输入命令,生成16进制字符串,并计算CRC16。
  • 4.1-3 模拟器
  • C#调用ACCESS数据库,解决“Microsoft.ACE.OLEDB.12.0”未注册问题
  • 计算机网络知识点汇总与复习——(一)计算机网络体系结构
  • 【408--考研复习笔记】计算机网络----知识点速览
  • Base64编码的优缺点
  • Redis原理:rename命令
  • 玩机搞机基本常识-------安卓机型各种root方式面面观 选择适合自己机型的root方式
  • 自然语言处理(26:(终章Attention 2.)带Attention的seq2seq的实现)
  • 人工智能图像识别大数据技术之Scala2
  • 工业通信协议“牵手密码”,Ethernet IP转Profinet网关的桥梁魔法
  • 体验智谱清言的AutoGLM进行自动化的操作(Chrome插件)
  • MySQL数据库中,tinyint(1) 和 tinyint 有什么区别
  • 深入剖析JavaScript多态:从原理到高性能实践
  • 基于R语言与MaxEnt的物种分布建模全流程解析:从算法优化到科研制图实战
  • C++编程指南32 - 模板编程时要避免过度约束以提高通用性
  • 蓝桥杯训练士兵
  • 单点登录(SSO)实战:基于Vue与Spring Boot的深度实现
  • 蓝桥复习3(AT240C2 EE2PROM IIC ) 继电器 蜂鸣器 PWM
  • 汇编学习之《push , pop指令》
  • 市场监管总局召开平台企业支持个体工商户发展座谈会
  • 国际能源署:全球电动汽车市场强劲增长,中国市场继续领跑
  • 北京航空航天大学首个海外创新研究院落户巴西
  • 山东枣庄同一站点两名饿了么骑手先后猝死,当地热线:职能部门正调查
  • 十三届全国政协经济委员会副主任张效廉被决定逮捕
  • 金科股份重整方案通过,正式进入重整计划执行环节