【优化调度】基于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使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J