m基于自适应遗传优化的IEEE-6建设费用和网络损耗费用最小化电网规划算法matlab仿真

news2024/11/17 23:52:42

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

        电力工业是当今世界各国经济的重要组成部分,随着世界经济的不断发展,电网的建设和中长期规划和经济发展之间的矛盾变得越来越突出,对电力系统的需求也变得越来越大。在实际的电网建设过程中,合理的中长期的电网规划对整个区域的经济发展起到至关重要的作用。而不合理的规划不仅会增加建设成本,而且会影响整个电网运行的稳定性和可靠性。 介绍了常见的优化算法,包括线性规划,粒子群优化算法以及遗传优化算法,并提出了一种基于自适应交叉变异的遗传优化算法,使得选择的精英个体数量和参与变异的个体数量之间的比例达到最优。通过这种改进遗传优化算法可以有效解决传统优化算法所存在的局部优化问题。然后提出了一种投资费用和网络损耗费用最小化的电网规划数学模型,并将直流潮流,支路容量,决策变量取值范围以及电压降作为约束条件。最后将优化算法应用到电网规划中,通过 IEEE-6节点系统为例并通过MATLAB进行仿真计算和分析,从而证明算法在电网规划应用中的可行性。

        遗传算法 (Genetic Algorithm,GA) 是一种基于规律进化的随机优化搜索算法,该算法最早是由Holland在1975年提出的。遗传算法的主要优势是通过对目标对象进行优化操作,并通过基于概率的搜索方法,获得相应的搜索空间,因此GA算法具有较强的全局搜索能力。由于遗传算法特有的全局搜索能力,其被广泛使用在各个领域,包括信号处理,机器学习以及控制域等。遗传优化的主要算法流程图如下图所示:

        在一个中长期电网规划中,需要考虑的目标函数可以认为是新建电网线路的投资年费用和电网系统的运行费用之和的最小值,满足这目标值最小且符合电网运行的约束要求即是求解问题的最优解。根据这个原理,首先给出任意一年的目标函数为:

        遗传优化算法是一种基于全局最优解搜索算法,而电网规划的优化是一个较为复杂的优化设计过程。因此,采用遗传算法对电网规划进行优化设计是一个较好的解决方案。遗传优化算法主要步骤包括编码、选择、交叉以及变异等步骤,下面将基于遗传优化算法的基本实现过程对电网规划的优化设计进行实现。

        第一,编码实现。在遗传优化算法中,需要通过二进制编码实现对染色体的编码,对于电网规划问题,编码方式是通过1和0分别表示待选线路是否加入到电网系统中,假设某一电网系统中有8条待选线路,其染色体编码结果为{01100010},则说明编号为2,3,7的待选线路将加入到电网系统中。

        第二、遗传算法的初始种群规模的确定。遗传算法中的种群规模对算法的最优解计算能力有着较大的影响,当遗传算法的种群规模较大的时候,种群中的每一个个体可能具有的个体多样性概率越高,那么算法就越有可能找到实际的最优解,但这是以增加计算量为代价的。而当种群规模较小的时候,那么种群中每一个个体可能具有的个体多样性概率就月底,那么就会导致算法陷入局部优化的困境。因此,需要通过不断的仿真验证来获得最优的初始种群规模。

        第四、选择算子的确立。遗传优化算法的选择操作,其主要功能是根据个体适应度值来选择当前个体在后代中得到繁衍的机会。通过选择操作不仅可以保证种群的多样性,还反应了遗传算法的适者生存的原则。这里根据公式2.10的公式,采取基于排序选择的方法进行选择性操作。

        第五、交叉算子的确立。对于遗传算法的交叉方式的确定,主要涉及到遗传优化过程的全局最优解搜索能力。种群中的每一个个体通过交叉操作,使得染色体产生两个新的个体,其反应了两种新的不同的电网规划优化设计方案。其中,个体交叉操作是以一定的概率进行操作的,即交叉概率。交叉概率对交叉操作有着较大的影响,当交叉概率较大的时候,有利于遗传算法对新的搜索区域进行搜索,但是过多的交叉操作,会使得优秀的基因被破坏,从而降低全局搜索能力。当交叉概率较小的时候,表面大量的父代信息直接遗传给子代,使得部分子代个体出现早熟的问题。因此,在本课题中,遗传算法的交叉概率通过自适应调整的方式来进行交叉操作。

        第六、变异算子的确立。在完成交叉处理之后,进行变异操作,变异的含义是生成与两个父代个体特性相接近的新的子代个体,即产生了两个新的电网规划方案,此时,将两个新的电网规划方案和旧方案进行比较,将其中性能较好的方案进行保留。特别是在遗传算法迭代后期,由于通过大量的交叉操作之后,种群的的各个个体之间存在较大的相似性,丧失了多样式,使得遗传优化停滞不前,因此需要通过变异操作,增加个体的多样性。从而使算法具有全局最优性,进一步增强了GA的能力。

2.仿真效果预览

matlab2022a仿真如下:

 

3.MATLAB核心程序

%编号
NO    = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]';
%线路首端号
START = [1,1,1,1,1,2,2,2,2,3,3,3,4,4,5]';
%线路末端号
ENDS  = [2,3,4,5,6,3,4,5,6,4,5,6,5,6,6]';
%支路电抗
ZDK   = [40,50,60,20,10,20,20,40,20,20,30,48,30,20,10]';
%容量限制
Vmax  = [100,100,80,100,70,100,100,100,100,82,100,100,75,100,78]';
%线路长度
Len   = [40,38,60,20,68,20,40,31,30,59,20,48,63,30,61]';
%电抗
DZ    = [0.1,0.09,0.15,0.05,0.17,0.05,0.1,0.08,0.08,0.15,0.05,0.12,0.16,0.08,0.15]';
%电抗
DK    = [0.4,0.38,0.6,0.2,0.68,0.2,0.4,0.31,0.3,0.59,0.2,0.48,0.63,0.3,0.61]';

tmps  =[NO,START,ENDS,ZDK,Vmax,Len,DZ,DK]; 
%整理
IEEE6 =[tmps([1,3,4,6,7,11],:);tmps([9,11,14],:)]; 

%初始线路
Nline =[1,1,1,1,1,1,0,0,0];   


%初始邻接矩阵
Connect=[0 1 0 1 1 0;
         1 0 1 1 0 0;
         0 1 0 0 1 0;
         1 1 0 0 0 0;
         1 0 1 0 0 0;
         0 0 0 0 0 0];
%各节点注入功率
P = [-30,-240,125,-160,-240]';             
%节点数 
N = 6;     

tic;
%定义遗传算法参数
%种群规模
NIND   = 1000;                                                                
%迭代次数
MAXGEN = 200;                                                                                                             
Price  = zeros(MAXGEN,1);          
%基向量 
BaseV  = 5*ones(1,length(Nline));
Chrom  = crtbp(20,BaseV); 
gen    = 0;   
%初始种群函数值
ObjV   = func_obj(Chrom,IEEE6,Nline,Connect,P,N); 
df     = 1000;
while gen< MAXGEN
      gen
      if gen == 0
         Pe = 0.92; 
      else
         Pe = 1/(1+exp(-df/10));  
      end
      gen   = gen+1;
      FitnV = ranking(ObjV);           
      %选择
      SelCh = select('sus',Chrom,FitnV);                              
      SelCh = recombin('xovmp',SelCh,Pe);  
      %重组
      f     = [zeros(1,length(Nline));5*ones(1,length(Nline))];      
      %变异
      SelCh        = mutbga(SelCh,f);                                               
      SelCh        = fix(SelCh);   
      ObjV2        = func_obj(SelCh,IEEE6,Nline,Connect,P,N);                                      
      [Chrom,ObjV] = reins(Chrom,SelCh,1,1,ObjV,ObjV2); 
      indx         = find(isnan(ObjV) == 1);
      ObjV3        = ObjV;
      ObjV3(indx)  = [];
      Price(gen)   = min(ObjV3);  
      if gen > 1
         df        = abs(Price(gen) - Price(gen-1));
      end
end

[Y,I]   = min(ObjV);                        
%规划
Net_new = Chrom(I,:);
Net_new
Y   
figure;
plot(Price,'b','linewidth',2);
grid on    
xlabel('Iteration times');
ylabel('Total cost');
toc; 
save R2.mat Price
02_048m

4.完整MATLAB

V

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

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

相关文章

微服务框架 SpringCloud微服务架构 16 SpringAMQP 16.7 DirectExchange

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构16 SpringAMQP16.7 DirectExchange16.7.1 发布订阅 - DirectExchange16.7.…

基于遗传优化算法的小车障碍物避障路线规划matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 一种通过模拟自然进化过程搜索最优解的方法&#xff0c;对于一个最优化问题&#xff0c;该算法通过一定数量的候选解种群迭代地执行选择、交叉、变异、评价等操作使得种群向更好的解进化。 遗传算…

MyBatisPlus简述

文章目录一、MyBatisPlus入门案例与简介1.入门案例2.springboot整合mybatis的方式3.springboot整合mybatisplus步骤1.创建环境&#xff0c;上面我们已经创建过了步骤2.创建数据库及表步骤2.pom.xml补全依赖步骤3.添加MP的相关配置信息步骤4.根据数据库表创建实体类步骤5.创建Da…

linux安装redis哨兵

安装环境 服务器一台&#xff1a; 服务器IP&#xff1a;172.169.3.251主从端口&#xff1a;6379、6380、6381哨兵端口&#xff0c;26379、26380、26381安装目录&#xff1a;/usr/local/redis配置文件目录&#xff1a;/usr/loca/redis/conf redis安装 1、下载redis wget ht…

设计模式--策略模式

文章目录前言一、未使用设计模式二、策略模式1.定义2.结构三、应用场景四、优缺点优缺参考资料前言 需求&#xff1a; 一天&#xff0c;产品经理走过来对你说。猫啊&#xff08;自称&#xff09;&#xff0c;帮我设计一个计算器&#xff0c;需要的功能有求最大值&#xff0c;最…

【JavaEE-Servlet】Filter过滤器详解

Filter过滤器熟悉的关键字-Filter&#xff08;回顾-联系-可以不看&#xff09;Filter概述何时使用&#xff1f;Filter生命周期过滤器单个实现doFilter方法关于Filter的配置路径Filter的执行顺序在web.xml文件中进行配置的时候&#xff0c;Filter的执行顺序是什么&#xff1f;使…

HTML期末学生大作业-班级校园我的校园网页设计与实现html+css+javascript

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

[附源码]Python计算机毕业设计Django停车场管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

使用 JavaScript 检测用户是否在线

有时您可能希望增强您的应用程序以通知用户他们可能已经失去了互联网连接。 用户可能正在访问您的网站并收到缓存版本&#xff0c;因此通常看起来他们的互联网仍在工作。 然而&#xff0c;他们失去了引擎盖下的连接&#xff0c;并且不会加载任何新内容。 在这里向他们显示一些…

博客系统(页面设计)

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录前言一、【博客列表页】blog_list.html参考代码&#xff1a;二、【博客详情页】 blog_detail.html参考代码&#xff1a;三、【博客登录页】login.html参考代码&#xff1a;四、【博客编辑页】参考代码&#xff1a;【…

QFtp的使用

1. 环境 Win10 QT5.9.9 2. 相关说明 Qt5.0之后移除了QFtp类&#xff08;基于FTP协议实现的一个类&#xff09;&#xff0c;并且使用 QNetworkAccessManager 实现了 Ftp 的上传/下载功能。尽管后者在性能上和稳定性上有所提升&#xff0c;但有些原本 QFtp 有的功能 QNetwork…

什么是微服务?

文章目录什么是微服务微服务技术栈单体架构分布式架构认识微服务微服务技术框架SpringCloud什么是微服务 当我们提到微服务&#xff0c;很多人第一反应就是SpringCloud&#xff0c;但是微服务技术并不能与SpringCloud完全划等号&#xff1a; 微服务是分布式架构的一种&#x…

AI视频监控在畜牧养殖中的技术应用解决方案

一、方案概况 随着养殖业迅猛发展的同时也给养殖业主带来了严峻挑战。对养殖业来说&#xff0c;养殖场大多建立在偏远地区&#xff0c;给集中管理带来不便&#xff1b;畜禽养殖成本大&#xff0c;丢失、偷盗等情况时有发生&#xff0c;容易造成巨大的经济损失。建立一套远程视…

013. N 皇后

1.题目链接&#xff1a; 51. N 皇后 2.解题思路&#xff1a; 2.1.题目要求&#xff1a; 给一个数字 n &#xff0c;要求返回所有 n 个 皇后能在 n X n 的棋盘上 不相互攻击 的情况。 能攻击到的情况&#xff1a;以皇后自身为原点&#xff0c;横、竖、同斜线&#xff08;45度…

Linux搭建单机多进程zookeeper集群

01 ZooKeeper是什么 ZooKeeper 是一个开放源码的分布式协调服务&#xff0c;它是集群的管理者&#xff0c;监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终&#xff0c;将简单易用的接口和性能高效、功能稳定的系统提供给用户。 分布式应用程序可以基…

用数字隔离器取代传统的光耦合器

介绍 光耦合器是一种已有几十年历史的技术&#xff0c;广泛用于信号隔离&#xff0c;通常提供安全隔离、信号电平移位和地面回路缓解。它们通常用于广泛的终端应用中&#xff0c;包括数据通信电路、开关模式电源系统、测量和测试系统&#xff0c;以及孤立的数据采集系统。光耦…

【入门】初识深度学习

文档背景 机器学习和深度学习的概念十分火热。听上去也很难&#xff0c;不慌&#xff0c;有时候就需要行动在前脑子在后。不管&#xff0c;干就完啦。 前言 人工智能&#xff08;ArtificialIntelligence&#xff0c;AI&#xff09;是最宽泛的概念&#xff0c;是研发用于模拟、延…

数据库基本语法

SQL常用语句总结 mysql -u root -p mysql会提示你输入密码&#xff0c;输入安装配置MySQL服务时设置的密码即可。 输入如下命令生成样例数据库&#xff1a; CREATE DATABASE university; USE university; SOURCE <DLL.sql文件路径>; SOURCE <InsertStatements.sql文…

Jenkins实践指南--pipeline概述

1.pipeline概述 1.1 什么是pipeline 从某种抽象层次上讲&#xff0c;部署流水线&#xff08;Deployment pipeline&#xff09;是指从软件版本控制库到用户手中这一过程的自动化表现形式。——《持续交付-发布可靠软件的系统方法》 pipeline 英语愿意为管道&#xff0c;在Jen…

Python之路—200行Python代码搞了个打飞机游戏!!

早就知道pygame模块&#xff0c;就是没怎么深入研究过&#xff0c;恰逢这周未没约到妹子&#xff0c;只能自己在家玩自己啦&#xff0c;一时兴起&#xff0c;花了几个小时写了个打飞机程序。 很有意思&#xff0c;跟大家分享下。 先看一下项目结构 1 2 3 4 5 6 7 8 9 10 11 1…