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

news2024/11/23 13:13:40

目录

1 主要内容

目标函数

算法流程

2 部分程序

3 程序结果

4 程序链接


主要内容

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

  • 目标函数

  • 算法流程

部分程序

% -------------------------------------------------------------------------
%  基于改进多目标差分进化算法的配电网无功优化。
%  同时考虑网损和电压偏移2个目标函数。
%  控制变量包括:1.DG无功出力(节点2、13),2.并联电容器组数(节点6、31)。
%  算例为IEEE33节点系统
% -------------------------------------------------------------------------
clc
clear
​
%% ----------  控制参数设置  ----------
% 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);
    end
end
​
plot(pop(:,dim + 1),pop(:,dim + 2),'o');
xlabel('网损');
ylabel('电压偏差');

程序结果

 

附原文结果图

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

4 程序链接

 点击直达!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/422370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenAI-ChatGPT最新官方接口《文本交互》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(一)(附源码)

Text completion 文本交互前言Introduction 导言Prompt design 提示设计Basics基础知识TroubleshootingClassificationImproving the classifiers efficiency 提高分类器的效率Generation 总结Conversation 对话Transformation 变化Translation 翻译Conversion 转化Summarizati…

联想服务器配置RAID

一、背景描述 目前有台联想服务器&#xff0c;配置如下&#xff1a; CPU&#xff1a;2颗处理器&#xff0c;40核 内存&#xff1a;512GB 磁盘&#xff1a;2*960GB SATA 4*2.4TB SAS 计划在联想物理机上安装 Vmware 的 ESXi 6.7 虚拟化管理软件&#xff0c;作为虚拟化服务器。…

Linux驱动开发——字符设备

目录 Linux设备分类 字符设备驱动基础 字符设备驱动框架 虚拟串口设备 Linux设备分类 Linux系统根据驱动程序实现的模型框架将设备驱动分为下面三种。 (1)字符设备驱动:设备对数据的处理是按照字节流的形式进行的&#xff0c;可以支持随机访问&#xff0c;也可以不支持随…

【解决】You May need an additional loader to handle the result of these loaders

说在前面 最近在新拉项目执行install以及run命令时&#xff0c;两个项目同时报了类似的错误&#xff0c;报错详情如下图所示。 因为之前同事运行代码没有问题&#xff0c;所以基本的问题可以定位在某个依赖版本问题&#xff0c;考虑到时间先后&#xff0c;大概率是新版本使用…

把中文翻译成英语的软件-chatgpt、谷歌、百度、批量翻译

用chatgpt怎么实现中文英文在线转换翻译 要实现中文英文在线转换翻译的代码&#xff0c;可以使用OpenAI的ChatGPT模型实现。以下是实现该功能的简要教程&#xff1a; 准备环境 安装Python 3.x&#xff0c;使用pip或conda安装transformers及相关依赖&#xff1a; pip install…

【算法训练 (day2)】积木画(dp问题)

目录 一.问题 题目描述 输入格式 输出格式 输出样例 二.解题思路 合法性判定&#xff08;状态压缩&#xff09;&#xff1a; 推导dp式&#xff1a; 代码实现&#xff1a; 一.问题 题目描述 小明最近迷上了积木画&#xff0c;有这么两种类型的积木&#xff0c;分别为 I…

MySQL多表查询内连接外连接详解,join、left join、right join、full join的使用

目录 1、多表查询概览 1.1、分类 1.2、外连接的分类 1.3、常用的SQL语法标准 2、内外联接案例 2.1、初始化表 2.2、内连接 2.3、外连接案例 2.4、全连接案例 2.5、union和union all 2.6、实现MySQL全连接 2.7、内外连接面试基础 2.8、SQL99多表查询新特性 1、多表…

python入门项目:数据清洗

文章目录前言一、数据清洗是什么&#xff1f;二、重复值处理三 缺失值处理四、数据类型转换前言 本文是对数据清洗的简单学习。 本文使用的数据来源为&#xff1a;博雅读书社所提供的数据 一、数据清洗是什么&#xff1f; 数据清洗是指在数据分析或挖掘之前进行的&#xff0…

Linux Shell 实现一键部署Rabbitmq

rabbitmq 前言 RabbitMQ是实现了高级消息队列协议&#xff08;AMQP&#xff09;的开源消息代理软件&#xff08;亦称面向消息的中间件&#xff09;。RabbitMQ服务器是用Erlang语言编写的&#xff0c;而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代…

2023年企业选择云服务器配置方法教程

这篇文章主要介绍企业选择腾讯云CVM云服务器配置方法教程。现在随着互联网信息的飞速发展&#xff0c;任何企业都脱离不了互联网&#xff0c;越来越多的企业都通过互联网实施无纸化的办公&#xff0c;互联网推广一体化整体型推广、互联网电子商务。中小型企业网站如何选购云服务…

又一款 AI 应用开源了,让你的绘画作品动起来!

公众号关注 “GitHubDaily”设为 “星标”&#xff0c;每天带你逛 GitHub&#xff01;2021 年的时候&#xff0c;Meta&#xff08;前身是 Facebook&#xff09;团队发布了一款非常有趣的 AI 工具&#xff0c;叫 Animated Drawings&#xff0c;它的牛逼之处&#xff0c;在于能借…

解锁ERD Online 高级隐藏功能

ERD Online 是全球第一个开源、免费在线数据建模、元数据管理平台。提供简单易用的元数据设计、关系图设计、SQL 查询等功能&#xff0c;辅以版本、导入、导出、数据源、SQL 解析、审计、团队协作等功能、方便我们快速、安全的管理数据库中的元数据。 ERD Online 产品图鉴 ERD …

使用DVSSL证书的钓鱼网站正在增加,如何识别钓鱼网站?

信息安全是一个庞大的领域&#xff0c;其中涉及到很多知识点&#xff0c;但是大多公司都对其没有提及足够的重视&#xff0c;希望随着国内对于安全的越来越重视以及各大主流浏览器对http网站的不友好&#xff0c;更多的公司也能在信息安全领域投入越来越多的注意。 然而&#…

C++IO流

目录 1. C语言的输入与输出 2. 流是什么 3. CIO流 3.1 C标准IO流 3.2 C文件IO流 4.stringstream的简单介绍 1. C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键 盘)读取数据&#xff0c;并将值存放在变量中…

vs中的错误集合

记录在vs 中遇到的 各种错误 1&#xff1a;project.vcxproj.filters 文件出现了异常&#xff0c;发现了以前的解决方案下的筛选器竟然没有了 原因&#xff1a;合并svn的时候 .vcxproj.filters 文件出现了 合并错误(检查该文件里面是否有不一样的) 解决办法&#xff1a;解决 该文…

Centos 7 上安装 Kubernetes 1.27 集群

Centos 7 上安装 Kubernetes 1.27 集群0. 安装 "Development Tools"1. 禁用swap2. 禁用防火墙3. 将SELinux设置为permissive模式4. 安装 ipset 和 ipvsadm5. 添加网桥过滤及内核转发配置文件6. 加载 overlay、br_netfilter、ip_tables、iptable_filter 模块7. 安装 c…

js调用gpt3.5(支持流回显、高频功能)

参考链接&#xff1a;直接在前端调用 GPT-3 API 效果图&#xff1a; 查看在线demo(要梯子) 注意&#xff1a; 1. 需要apiKey&#xff0c;自用安全&#xff0c;不要给别人 2. 需要梯子 3. 选择稳定、人少的代理ip 4. 不要频繁切换ip&#xff0c;防止封号 5. api调用上限高&…

李宏毅2023机器学习作业HW03解析和代码分享

ML2023Spring - HW3 相关信息&#xff1a; 课程主页 课程视频 Kaggle link Sample code HW03 视频 HW03 PDF 个人完整代码分享: GitHub | Gitee | GitCode P.S. 即便 kaggle 上的时间已经截止&#xff0c;你仍然可以在上面提交和查看分数。但需要注意的是&#xff1a;在 kaggle…

SpringAOP入门基础银行转账实例------------事务处理

SpringAOP入门基础银行转账实例------------事务处理 AOP为Aspect Oriented Programming 的缩写&#xff0c;意思为面向切面编程&#xff0c;是通过编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 AOP编程思想 AOP面向切面是一种编程思想&#xff0c;是oop的延…

Python 字符串format()格式化 / 索引

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 为了确保字符串按预期显示&#xff0c;我们可以使用 format() 方法对结果进行格式化。 字符串 format() format() 方法允许您格式化字符串的选定部分。 有时文本的一部分是你无法控制的&#xff0c;也许它们来自数据库或…