【优化发电】基于matlab差分进化算法求解单库发电优化问题【含Matlab源码 2253期】

news2024/11/18 12:30:54

⛄一、差分进化算法简介

如同所有的优化算法一样, 差分进化算法基于种群的进化算法。差分进化算法主要的参数主要有种群规模NP, 解空间的维数D, 缩放因子F和交叉概率Cr。D维矢量XGi=[xGi,1, xGi,2, …, xi, DG], i=1, 2, …, Np, 表示G代第i个个体。变异和交叉操作在每一代中产生新的种群, 然后选择操作实现种群优化。基本差分进化算法过程如下。

1 变异
通过变异操作, 新产生的个体由初始种群中任意选取的个体加上任意选取的两个个体的差分量乘以缩放因子。根据如下所示, 缩放因子我们采用自适应缩放因子, 如公式 (1) 所示。

VG+1i=xGr1+F (xGr2-xGr3) (1)

r1, r2, r3∈{1, 2, …, Np}任意选择且互不相等, 并且和i也不相等。缩放因子F控制着差分量 (xr2G-xr3G) 的大小。

2 交叉
交叉操作用来增加种群多样性, UG+1i,j表示第i个个体交叉个体第j个分量, rand ( ) 表示在[0, 1]区间任取的随机数, Cr是交叉概率, 而条件j=rand (0, D) 是为了确保试验个体中至少有一位是由VG+1i贡献的, 增加试验个体的多样性。交叉时我们采用分组交叉思想, 增强算法的局部搜索能力。

UG+1i,j={VG+1i,[rand()≤CR或j=rand(0,D)]xGi,j,其他   (2)

3 选择
选择操作是为了决定交叉个体是否保留到G+1代。对于最小化问题, 交叉个体UG+1i,j和原始个体通过贪婪策略进行比较, 目标函数更小的个体被保留作为新产生的种群个体。选择操作公式如下所示
在这里插入图片描述
这里的f (x) 代表目标函数, XiG+1代表新产生的种群个体。

文中算法改进主要有2方面。算法的参数值在算法开始时已经被设定, 随着迭代次数的改变, 可能不适应种群变化的要求。差分算法的控制参数主要有缩放因子 (F) 和交叉概率 (Cr) 。缩放因子 (F) 的大小决定了算法的收敛速度和种群的多样性, 在进化过程中发挥着重要的作用。选择合适的F能够平衡算法全局搜索和局部搜索。较小的F有助于提高算法的局部搜索能力, 但同时也增加了算法陷入局部最优, 出现早熟的可能性;而较大的F有利于增加种群的多样性, 提高全局寻优能力, 但会降低算法的收敛速度。我们提出了一种自适应的缩放因F, 使缩放因子能够随着迭代次数的改变, 适应当前种群的变化情况, 使得最优解可以保存。颜学峰, 余娟等也提出了自适应差分进化算法[7]748, 主要改进了算法的全局寻优能力。本文提出的自适应的缩放因子可以从以下公式得出
F=0.8[ (Gmax-G+1) /Gmax] (4)
Gmax是种群最大迭代次数, G是种群当前迭代次数。同时为了能够更早的找到最优解, 减少算法的计算量。在交叉过程中, 我们采用种群分组交叉思想。经种群变异产生的子代个体, 通过比较其适应度大小, 适应度更好的个体直接进入选择操作, 而剩下的个体根据交叉概率选择性的进入选择操作。通过分组交叉, 可以大大提高种群搜索到最优解的概率, 同时增加算法的健壮性。

⛄二、部分源代码

%-----------------------参数定义及初始化-------------------------
close all;
clc,clear;
NP=50; %种群个体数量
D=37; %染色体长度,这里有36旬,共37个节点蓄水量
G=2000; %迭代代数
F0=0.5; %缩放因子[0,2],一般取0.5
CR=0.3; %交叉率[0,1],一般取0.3,增大会更快收敛,造成早熟
Inf=10^20; %罚因子
K=8; %水库出力系数

%尾水曲线的三个参数 Zd=aq^2+bq+d
a=0.0000000011101;
b=0.0000836;
d=65.5;

%水库的水位库容曲线
zu=[130 135 140 145 150 155 160 165 170 175 185];
V=[103.3 124.1 147 171.5 196.9 228 262 300.2 344 393 445.7];

%各旬初的最低水位与最高水位
Zmin=[155 155 155 155 155 155 155 155 155 155 145 145 145 145 145 145 145 145 …
145 145 145 145 145 145 145 145 145 145 145 145 145 145 145 145 145 145 155];
Zmax=[175 175 175 175 175 175 175 175 175 175 175 175 175 175 170 155 146.5 146.5 146.5 …
146.5 146.5 146.5 146.5 146.5 146.5 165 165 175 175 175 175 175 175 175 175 175 175];
%内插各旬初的最低蓄水量与最高蓄水量
Vmin=[228,228,228,228,228,228,228,228,228,228,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,171.5,228];
Vmax=[393,393,393,393,393,393,393,393,393,393,393,393,393,393,344,228,179.12,179.12,179.12,179.12,179.12,179.12,179.12,179.12,179.12,300.2,300.2,393,393,393,393,393,393,393,393,393,393];

%各旬入库流量
Q=[5323 5351 4467 3967 4000 4382 4984 5037 4962 6194 7709 5354 6993 11091 12918 14778 15566 17060 …
27816 32798 33851 23446 20049 14796 17779 21637 17266 11754 10443 9019 7725 7244 6161 5424 5471 5250];

%各旬的最小下泄流量
qmin=[6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 6000 5700 5700 5700 5700 5700 5700 …
5700 5700 5700 5700 5700 5700 5700 5700 10000 10000 8000 8000 5700 5700 5700 5700 5700 5700];

%各旬的时段长,h
dt=[240 240 264 240 240 192 240 240 264 240 240 240 240 240 264 240 240 240 …
240 240 264 240 240 264 240 240 240 240 240 264 240 240 240 240 240 240];

Z0=174; %调度期初水位约束
ZT=173; %调度期末水位约束
V0=interp1(zu,V,Z0); %调度期初蓄量约束
VT=interp1(zu,V,ZT); %调度期末蓄量约束

%种群初始化
for i=1:1:NP
x=init(i,x); %生成一个时间序列,满足水位约束
q(i,:)=-(diff(x(i,:)))10^8./(3600dt) + Q; %q为出库流量
end

% 计算目标参数
Vmean=(conv2(x’,[1;1],‘valid’))'/2; %用conv2求相邻旬蓄量平均值
Zu=interp1(V,zu,Vmean); %根据库容曲线内插得到上游水位
Zd=aq.^2+bq+d; %根据尾水曲线公式生成下游水位
N=Kq.(Zu-Zd); %各旬的出力
N(N>Nmax)=Nmax; %出力超过装机容量的旬时段改为装机容量
E=N.dt; %各旬的发电量
Fit=E+Inf
min((N-Nmin)/Nmin,0)+Inf*min((q-qmin)./qmin,0); %适应度矩阵
ob=sum(Fit,2); %适应度矩阵每一行的和
trace(1)=max(ob); %记录下适应度最大值

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]周萧,王万良,徐新黎.解决作业车间调度问题的混合差分进化算法[J].轻工机械. 2010,28(05)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

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

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

相关文章

NIO-ServerSocketChannel和Tomcat

ServerSocketChannel 面向流的侦听套接字的可选通道。 通过调用此类的open方法创建服务器套接字通道。 无法为任意预先存在的ServerSocket创建通道。 新创建的服务器套接字通道已打开但尚未绑定。 尝试调用未绑定的服务器套接字通道的accept方法将导致抛出NotYetBoundExcepti…

达梦数据库通过作业实现自动备份功能

达梦数据库通过作业实现自动备份功能作业功能简介一、通过DM管理工具创建备份作业(图形化配置)1.创建代理环境2.创建作业二、命令行方式配置备份作业案例1.创建代理环境2.全量备份3.增量备份4.备份清理三、JOB 运行和日志查看作业功能简介 在管理员的工作中,有许多…

安卓APP源码和设计报告——好再来点餐

大作业文档 项目名称:好再来点餐专业:班级:学号:姓名: 目 录 一、项目功能介绍3 二、项目运行环境3 1、开发环境3 2、运行环境3 3、是否需要联网3 三、项目配置文件及工程结构3 1、工程配置文件3 2、工程结构…

STC - 同时外挂扩展RAM和12864时, C库函数失效的问题

文章目录STC - 同时外挂扩展RAM和12864时, C库函数失效的问题概述笔记原理图 - 外挂XRAM原理图 - 12864错误现象总结ENDSTC - 同时外挂扩展RAM和12864时, C库函数失效的问题 概述 在写STC15实验箱4的出厂测试程序. 发现memset(buf, 0, 256)一片256字节的xdata内存时, 无法将这…

生产型企业如何搭建进销存管理系统?低代码平台了解一下

生产型企业在激烈的市场竞争中充分意识到信息化管理的重要性,但限于资金压力无法购买或开发大型的ERP 系统整合企业管理的小型企业而言,比较多的采用部署相对独立的小型信息系统提高管理信息化水平,常见的包括采购管理系统、销售管理系统、库…

Ubuntu开机自动挂载SD卡到指定挂载点并将Docker默认存储路径改为SD卡

Ubuntu开机自动挂载SD卡到指定挂载点并将Docker默认存储路径改为SD卡查看磁盘信息查看磁盘原挂载点永久开机自动挂载分区——修改文件/etc/fstab应用挂载修改docker默认存储路径查看磁盘信息 sudo fdisk -l如果磁盘太多可以用 sudo fdisk -l | grep GiB只看以GB为单位的磁盘&…

【D3.js】2.2-给 Circle 元素添加属性

title: 【D3.js】2.2-给 Circle 元素添加属性 date: 2022-12-02 15:19 tags: [JavaScript,CSS,HTML,D3.js,SVG] 上章节中虽然添加了circle,但是因为缺少某些属性设置而显得不可见,在此章节中将学习circle的cx、cy、r属性。 一、学习目标 circle的x坐标与…

带你玩转序列模型之NLP与词嵌入(一)

目录 一.词汇表征 二.使用词嵌入 三.词嵌入的特性 四.嵌入矩阵 五.学习词嵌入 一.词汇表征 上周我们学习了RNN、GRU单元和LSTM单元。本周你会看到我们如何把这些知识用到NLP上,用于自然语言处理,深度学习已经给这一领域带来了革命性的变革。其中一…

嵌入式 ADC使用手册完整版 (188977万字)(附源码详细篇)

嵌入式 ADC使用手册完整版 (188977万字)💜(附源码详细篇)💜【1】ADC简介【2】ADC主要特征【3】ADC引脚和内部信号【4】ADC 模块框图【5】ADC校准(CLB)【6】ADC 时钟【7】ADCON 开关【…

Gomodule和GoPath

GoLang生态系统 什么是GOROOT GOROOT 是环境变量,它的值是 Golang 安装包路径 什么是GOPATH GOPATH 是Golang 1.5版本之前一个重要的环境变量配置,是存放 Golang 项目代码的文件路径。 可以通过go env命令查看 GOPATH目录 进入GOPATH目录&#xff…

【Docker】redis分片集群搭建:3主3从,容错迁移,扩缩容

Docker是基于Go语言实现的云开源项目。Docker的主要目标是**“Build,Ship and Run Any App,Anywhere”**。也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运…

2022 ios APP最新iOS开发上架测试教程

2022 ios APP最新开发测试教程 本文详细介绍最新的在windows上进行ios app开发编译打包安装到手机测试的完整流程。介绍ios开发经常遇到的问题和解决方法,包括ios开发证书,ios开发描述文件等。 2.Apple开发常用的三个网址: 开发者中心&#x…

羚数智能入选 IDC关于中国制造执行系统(MES)的市场2021年度份额报告

近日,国际权威市场研究机构IDC发布《中国制造业 MES 市场分析及厂商份额,2021》,引起行业关注。 成立短短一年多,羚数智能作为国产生产运营管理软件年度代表企业(Vendor Who Shaped the Year)入选报告&…

LabVIEW比较LabVIEW类对象 LabVIEW接口

LabVIEW比较LabVIEW类对象 LabVIEW接口 使用比较功能比较LabVIEW类对象。 如比较同一个类的两个对象,例如,卡车类的两个对象,LabVIEW将比较类层次结构中所有层次的数据,类似于LabVIEW比较由簇组成的簇。 如比较不同类的两个对…

Coremail邮件安全:如何防范校园邮件新威胁

11月23日,Coremail举办《校园安全交流防护会暨新技术应用分享》直播,Coremail邮件安全解决方案专家刘骞,从目前面临的邮件安全防护难点、盗号威胁等角度提出针对教育行业的有效邮件安全解决方案。 教育行业面临邮件安全问题 问题1&#xff…

[附源码]Python计算机毕业设计Django健身房预约平台

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

【软件测试】身为测试人,经常背锅的我该咋办?

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 当产品上线的或者开…

Live800:智能客服时代,智能营销机器人有哪些套路?

流量已进入存量时代,大量企业为了活下去陷入竞争“内耗”。 面对更挑剔的客户需求、更精细的运营挑战,企业客户服务场景从幕后走向台前,脱离了传统的、被动的消费语境,成为完成客户体验闭环、主动触达客户、甚至成为驱动企业“第…

[附源码]Python计算机毕业设计SSM开放式实验室预约系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

基于无线通信模块对焦炉发讯装置的设计

现有的交换机控制系统多采用PLC控制系统,当焦炉出现故障,需要交换机停止加热时,需有人工进行干预时存在滞后性;以上操作需要操作人员具有良好的心理素质和过硬的技术能力,存在误操作的可能。当交换机本身及外部设备发生…