【优化调度】基于matlab粒子群算法求解抽水蓄能电站最佳调度问题【含Matlab源码 1968期】

本文主要是介绍【优化调度】基于matlab粒子群算法求解抽水蓄能电站最佳调度问题【含Matlab源码 1968期】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、抽水蓄能电站最佳调度问题简介

水沙联调的多目标数学模型
本文研究的抽水蓄能电站修建在多沙河流上,解决这类水库泥沙问题最有效的方法就是依据地形修建拦沙库。拦沙库的主要任务是在水库运行基准年内拦排泥沙,同时因抽水蓄能电站下库在正常运行期由于受泥沙影响,天然径流不能直接进入专用下水库,为补充水库渗漏、蒸发等造成的损失水量,故需要通过拦沙库向下水库补充水量。本文主要研究的是库区水沙联调的多目标规划问题,在满足水位的要求下,寻求水库补水与排沙的协调关系。

1 目标函数
根据拦沙库的主要任务有以下两个目标:一是尽可能在汛期降低拦沙库水位,增加拦沙库排沙效果;二是保证拦沙库有一定的补水能力。将两个目标分别表示为:

(1)式为库容目标函数,式中右端VYt为库区泥沙淤积库容,T为计算时段。(2)式为补水能力目标函数,E为补水能力,即在一定的时间范围内,库水位越高、入库流量越大,水库更容易蓄满水。

观察目标函数(1)、(2),表面上,保持有效库容最大与补水能力最大似乎是相似的、一致的,但如果看到这两个目标函数都与运行水位有关,就不难知道这两个目标是相互矛盾和冲突的。要使拦沙库拦沙效果好,则拦沙库在汛期降低水位,库水位越低,排沙效果越好,但水位过低,在退水后拦沙库不容易蓄满水,影响下水库的补水量,增大水库运行的风险。相反,如若保证拦沙库有一定的补水能力,则拦沙库应在高水位下运行,库区壅水高度的增加,必然加剧淤积,从而减少有效库容。针对目标函数的矛盾性,根据多目标优化理论,采用权重法将优化目标转化为主要目标和次要目标,分别赋予各个目标不同的权重,采用线性加权的方法,将多目标问题转化为单目标问题求解。虽然方程(1)和(2)式是一对相互矛盾的目标函数,但两个目标函数的单位一致,这为线性组合提供了前提条件,故目标函数可以变为:

式中,λ1和λ2为相应权重值,其取值范围是0~1。

2 PSO优化调度模型
粒子群优化算法(PSO-Particle Swarm Optimization)源自对鸟类和鱼类等动物群体行为的研究,其实质是根据个体与环境的适应程度,并通过群体间的信息共享和个体自身经验的总结来不断修正个体的行为策略,从而使整体逐渐“飞行”到最佳区域。在PSO中,N维空间中的每一个粒子代表了优化问题的一个可行解,所有的粒子都有一个由目标优化函数决定的适应值和一个速度决定其飞行的方向和距离。

根据POS算法的思想,可将搜索空间设为T维,用N个粒子对其进行搜索。每个粒子的位置就是一个T维向量,每一维向量表示一个模型的权重,即xi=(xi1,xi2,…,xi T),xit为微粒i在T维空间上的坐标。具体的POS优化调度模型的实现如下:

(1)在各时段允许的库容变化范围内,随机生成N组时段水位变化序列Z1=(z11,z21,…,zT1),…,ZN=(z1N,z2N,…,zTN),即随机初始化N个粒子(T为计算时段,也就是粒子的各种状态),检验每个粒子的状态是否满足水量平衡方程,如果不满足,重新初始化粒子群;

(2)计算粒子群中各粒子的适应度。由于目标函数所求解的是F(t)最大,因此粒子的适应度函数可由目标函数式变化得到:f(t)=c/F,c式中是个常数,在保证f(t)≤1的情况下,为了直观的反映粒子适应度大小,c根据具体情况调节;

(3)产生新一代N个粒子。根据N个粒子的适应度找到每个粒子迄今为止搜索到的最好位置Zp,粒子群此次迭代找到的最好位置Zg以及粒子群迄今为止搜索到的最好位置ZG。每个粒子根据水库水位扰动方程进行更新,扰动方程为:

式中:t=1,2,…T-1;i=1,2,…N;k是迭代次数;ω是惯性权重;c1、c2是加速常数,一般取2;r1、r2是在[0,1]内取值的随机函数;

(4)判断是否达到停止条件。停止条件通常由最大迭代次数和搜索到的最优位置满足适应阈值。若已经达到条件,寻优结束;若没有达到条件则转(2)继续执行。

3 约束条件
流量约束:为了保证下游河道的安全,水库下泄流量不能大于下游允许的安全泄量或其它有些特殊的要求。

水位约束:为保证拦沙库补水能力,任何时刻其水位不得低于设计死水位。
非负约束:以上各约束条件中的变量均满足非负要求。

⛄二、部分源代码

%% 抽水蓄能电站的最佳调度方案研究 火+水+抽
% 粒子群算法版
% 变量定义如下:
% 决策变量:火电出力,抽蓄出力
% x=[Pf(624),Pc(224)];
clc;
clear;
close all;

%% 算法参数
parameter;
nVar=7*24; % Number of Decision Variables
VarMin=[ones(1,24)*P_minfire(1), ones(1,24)*P_minfire(2), ones(1,24)*P_minfire(3),ones(1,24)*P_minfire(4),…
ones(1,24)*P_minfire(5), ones(1,24)P_minfire(6),ones(1,24)(-300)]; % Lower Bound of Variables
VarMax=[ones(1,24)*P_maxfire(1), ones(1,24)*P_maxfire(2),ones(1,24)*P_maxfire(3),ones(1,24)*P_maxfire(4), …
ones(1,24)*P_maxfire(5),ones(1,24)*P_maxfire(6),ones(1,24)*300]; % Upper Bound of Variables
MaxIt=500; % Maximum Number of Iterations
nPop=500; % Population Size (Swarm Size)

%% 计算
[ bestPosition, fitValue ] = …
PSOFUN( @fun_objective,nVar,VarMin,VarMax,MaxIt,nPop );
x=bestPosition;
[f,fun,fun1,fun2,six,two,g,g1,h]= jieguo(x);
f
six
two
fun
fun1
fun2
% g;
% [mg ng]=max(g)
% g1;
% [mg1 ng1]=max(g1)
% h;
% [mh nh]=max(h)
%% 各个决策变量的含义
Pfl=six(:,1);
Pf2=six(:,2);
Pf3=six(:,3);
Pf4=six(:,4);
Pf5=six(:,5);
Pf6=six(:,6);
%抽蓄1
Pc1=two(:,1);
% %抽蓄2
% Pc2=two(:,2);

%% 火电出力求和
Pf=zeros(1,24);
for t=1:24
Pf(t)=Pfl(t)+Pf2(t)+Pf3(t)+Pf4(t)+Pf5(t)+Pf6(t) ;
end

%% 水电出力
P_w=sum(P_shui(😃)*ones(1,24);

%% 抽蓄出力
P_c=Pc1;
P_c1=zeros(1,24);
P_c0=zeros(1,24);
for t=1:24
if P_c(t)>=0
P_c1(t)=P_c(t);
else
P_c0(t)=P_c(t);
end

end

⛄三、运行结果

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

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 向波,宋刚福,周婷,周晓蔚.抽水蓄能电站水沙调度研究[J].水力发电学报. 2012,31(04)

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

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

这篇关于【优化调度】基于matlab粒子群算法求解抽水蓄能电站最佳调度问题【含Matlab源码 1968期】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/185867

相关文章

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

idea npm install很慢问题及解决(nodejs)

《ideanpminstall很慢问题及解决(nodejs)》npm安装速度慢可通过配置国内镜像源(如淘宝)、清理缓存及切换工具解决,建议设置全局镜像(npmconfigsetregistryht... 目录idea npm install很慢(nodejs)配置国内镜像源清理缓存总结idea npm in

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

idea突然报错Malformed \uxxxx encoding问题及解决

《idea突然报错Malformeduxxxxencoding问题及解决》Maven项目在切换Git分支时报错,提示project元素为描述符根元素,解决方法:删除Maven仓库中的resolv... 目www.chinasem.cn录问题解决方式总结问题idea 上的 maven China编程项目突然报错,是

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造

Python绘制TSP、VRP问题求解结果图全过程

《Python绘制TSP、VRP问题求解结果图全过程》本文介绍用Python绘制TSP和VRP问题的静态与动态结果图,静态图展示路径,动态图通过matplotlib.animation模块实现动画效果... 目录一、静态图二、动态图总结【代码】python绘制TSP、VRP问题求解结果图(包含静态图与动态图

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

Java 中 Optional 的用法及最佳实践

《Java中Optional的用法及最佳实践》在Java开发中,空指针异常(NullPointerException)是开发者最常遇到的问题之一,本篇文章将详细讲解Optional的用法、常用方... 目录前言1. 什么是 Optional?主要特性:2. Optional 的基本用法2.1 创建 Opti