✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
🔥 内容介绍
随着可再生能源的快速发展,风电场已成为电力系统中重要的组成部分。然而,风电场的随机性和波动性给电力系统安全稳定运行带来了挑战。为了解决这一问题,本文提出了一种基于花朵授粉算法(FPA)求解含风电场的十机24时系统机组出力问题的优化方法。该方法考虑了风电场出力预测误差、机组出力约束和系统安全稳定约束,旨在实现电力系统经济安全运行。
1. 问题描述
含风电场的十机24时系统机组出力问题可以描述为:
min F(x) = Σ(Ci * Pi) + Σ(Cwi * Piw)
其中:
-
F(x)为系统总发电成本
-
Ci为第i台火电机组的单位发电成本
-
Pi为第i台火电机组的出力
-
Cwi为风电场的单位发电成本
-
Piw为风电场的出力
约束条件:
-
火电机组出力约束:Pimin ≤ Pi ≤ Pimax
-
风电场出力约束:0 ≤ Piw ≤ Pwiw
-
系统平衡约束:ΣPi + Piw = Pd
-
系统安全稳定约束:满足暂态稳定、电压稳定和频率稳定等约束
2. 花朵授粉算法
花朵授粉算法(FPA)是一种基于花朵授粉过程的优化算法。其基本原理如下:
-
**花朵初始化:**随机生成一定数量的花朵,每个花朵代表一个候选解。
-
**授粉:**将花粉从一朵花转移到另一朵花,从而产生新的花朵。
-
**传播:**花粉通过随机游走传播到新的位置,产生新的花朵。
-
**选择:**根据花朵的花蜜值(目标函数值)选择最优的花朵。
3. FPA求解机组出力问题
本文将FPA应用于求解含风电场的十机24时系统机组出力问题。具体步骤如下:
1. 花朵初始化
随机生成一定数量的花朵,每个花朵代表一个机组出力方案。
2. 授粉
将花粉从一朵花转移到另一朵花,产生新的花朵。授粉概率与花朵的花蜜值成正比。
3. 传播
花粉通过随机游走传播到新的位置,产生新的花朵。传播距离与花粉的质量成正比。
4. 选择
根据花朵的花蜜值(目标函数值)选择最优的花朵。
5. 迭代
重复步骤2-4,直到达到终止条件。
4. 仿真结果
本文以 IEEE 10 机系统为例,仿真验证了所提方法的有效性。仿真结果表明:
-
**经济性:**所提方法可以有效降低系统总发电成本。
-
**安全性:**所提方法可以满足系统安全稳定约束,保证系统安全稳定运行。
-
**鲁棒性:**所提方法对风电场出力预测误差具有较好的鲁棒性。
5. 结论
本文提出了一种基于花朵授粉算法求解含风电场的十机24时系统机组出力问题的优化方法。该方法考虑了风电场出力预测误差、机组出力约束和系统安全稳定约束,旨在实现电力系统经济安全运行。仿真结果表明,所提方法具有良好的经济性、安全性、鲁棒性,为含风电场的电力系统机组出力优化提供了有效的解决途径。
📣 部分代码
function mpc = data_ieee30gai
%CASE_IEEE30 Power flow data for IEEE 30 bus test case.
% 该数据是文献A united approach to optimal real and reactive power
% dispatch上的数据,与data_ieee30的主要区别是变压器变比均改为大于1
%% MATPOWER Case Format : Version 2
mpc.version = '2';
%%----- Power Flow Data -----%%
%% system MVA base
mpc.baseMVA = 100;
%% bus data
% bus_i type Pd Qd Gs Bs area Vm Va baseKV zone Vmax Vmin
mpc.bus = [
1 3 0 0 0 0 1 1.05 0 132 1 1.06 0.94
2 2 21.7 12.7 0 0 1 1.04 -5.48 132 1 1.06 0.94;
3 1 2.4 1.2 0 0 1 1.021 -7.96 132 1 1.06 0.94;
4 1 7.6 1.6 0 0 1 1.012 -9.62 132 1 1.06 0.94;
5 2 94.2 19 0 0 1 1.01 -14.37 132 1 1.06 0.94;
6 1 0 0 0 0 1 1.01 -11.34 132 1 1.06 0.94;
7 1 22.8 10.9 0 0 1 1.002 -13.12 132 1 1.06 0.94;
8 2 30 30 0 0 1 1.01 -12.1 132 1 1.06 0.94;
9 1 0 0 0 0 1 1.051 -14.38 1 1 1.06 0.94;
10 1 5.8 2 0 19 1 1.045 -15.97 33 1 1.06 0.94;
11 2 0 0 0 0 1 1.05 -14.39 11 1 1.06 0.94;
12 1 11.2 7.5 0 0 1 1.057 -15.24 33 1 1.06 0.94;
13 2 0 0 0 0 1 1.05 -15.24 11 1 1.06 0.94;
14 1 6.2 1.6 0 0 1 1.042 -16.13 33 1 1.06 0.94;
15 1 8.2 2.5 0 0 1 1.038 -16.22 33 1 1.06 0.94;
16 1 3.5 1.8 0 0 1 1.045 -15.83 33 1 1.06 0.94;
17 1 9 5.8 0 0 1 1.04 -16.14 33 1 1.06 0.94;
18 1 3.2 0.9 0 0 1 1.028 -16.82 33 1 1.06 0.94;
19 1 9.5 3.4 0 0 1 1.026 -17 33 1 1.06 0.94;
20 1 2.2 0.7 0 0 1 1.03 -16.8 33 1 1.06 0.94;
21 1 17.5 11.2 0 0 1 1.033 -16.42 33 1 1.06 0.94;
22 1 0 0 0 0 1 1.033 -16.41 33 1 1.06 0.94;
23 1 3.2 1.6 0 0 1 1.027 -16.61 33 1 1.06 0.94;
24 1 8.7 6.7 0 4.3 1 1.021 -16.78 33 1 1.06 0.94;
25 1 0 0 0 0 1 1.017 -16.35 33 1 1.06 0.94;
26 1 3.5 2.3 0 0 1 1 -16.77 33 1 1.06 0.94;
27 1 0 0 0 0 1 1.023 -15.82 33 1 1.06 0.94;
28 1 0 0 0 0 1 1.007 -11.97 132 1 1.06 0.94;
29 1 2.4 0.9 0 0 1 1.003 -17.06 33 1 1.06 0.94;
30 1 10.6 1.9 0 0 1 0.992 -17.94 33 1 1.06 0.94;
];
%% generator data
% bus Pg Qg Qmax Qmin Vg mBase status Pmax Pmin Pc1 Pc2 Qc1min Qc1max Qc2min Qc2max ramp_agc ramp_10 ramp_30 ramp_q apf
mpc.gen = [
1 99.211 5.335 200 -20 1.05 100 1 200 50 0 0 0 0 0 0 0 0 0 0 0;
2 80 27.657 100 -20 1.04 100 1 80 20 0 0 0 0 0 0 0 0 0 0 0;
5 50 21.544 80 -15 1.01 100 1 50 15 0 0 0 0 0 0 0 0 0 0 0;
8 20 22.933 60 -15 1.01 100 1 35 10 0 0 0 0 0 0 0 0 0 0 0;
11 20 38.583 50 -10 1.05 100 1 30 10 0 0 0 0 0 0 0 0 0 0 0;
13 20 40.345 60 -15 1.05 100 1 40 12 0 0 0 0 0 0 0 0 0 0 0;
];
%% branch data
% fbus tbus r x b rateA rateB rateC ratio angle status angmin angmax
mpc.branch = [
1 2 0.0192 0.0575 0.0528 0 0 0 0 0 1 -360 360;
1 3 0.0452 0.1852 0.0408 0 0 0 0 0 1 -360 360;
2 4 0.057 0.1737 0.0368 0 0 0 0 0 1 -360 360;
3 4 0.0132 0.0379 0.0084 0 0 0 0 0 1 -360 360;
2 5 0.0472 0.1983 0.0418 0 0 0 0 0 1 -360 360;
2 6 0.0581 0.1763 0.0374 0 0 0 0 0 1 -360 360;
4 6 0.0119 0.0414 0.009 0 0 0 0 0 1 -360 360;
5 7 0.046 0.116 0.0204 0 0 0 0 0 1 -360 360;
6 7 0.0267 0.082 0.017 0 0 0 0 0 1 -360 360;
6 8 0.012 0.042 0.009 0 0 0 0 0 1 -360 360;
6 9 0 0.208 0 0 0 0 1.078 0 1 -360 360;
6 10 0 0.556 0 0 0 0 1.069 0 1 -360 360;
9 11 0 0.208 0 0 0 0 0 0 1 -360 360;
9 10 0 0.11 0 0 0 0 0 0 1 -360 360;
4 12 0 0.256 0 0 0 0 1.032 0 1 -360 360;
12 13 0 0.14 0 0 0 0 0 0 1 -360 360;
12 14 0.1231 0.2559 0 0 0 0 0 0 1 -360 360;
12 15 0.0662 0.1304 0 0 0 0 0 0 1 -360 360;
12 16 0.0945 0.1987 0 0 0 0 0 0 1 -360 360;
14 15 0.221 0.1997 0 0 0 0 0 0 1 -360 360;
16 17 0.0824 0.1932 0 0 0 0 0 0 1 -360 360;
15 18 0.1070 0.2185 0 0 0 0 0 0 1 -360 360;
18 19 0.0639 0.1292 0 0 0 0 0 0 1 -360 360;
19 20 0.034 0.0680 0 0 0 0 0 0 1 -360 360;
10 20 0.0936 0.2090 0 0 0 0 0 0 1 -360 360;
10 17 0.0324 0.0845 0 0 0 0 0 0 1 -360 360;
10 21 0.0348 0.0749 0 0 0 0 0 0 1 -360 360;
10 22 0.0727 0.1499 0 0 0 0 0 0 1 -360 360;
21 22 0.0116 0.0236 0 0 0 0 0 0 1 -360 360;
15 23 0.1000 0.2020 0 0 0 0 0 0 1 -360 360;
22 24 0.1150 0.1790 0 0 0 0 0 0 1 -360 360;
23 24 0.1320 0.2700 0 0 0 0 0 0 1 -360 360;
24 25 0.1885 0.3292 0 0 0 0 0 0 1 -360 360;
25 26 0.2544 0.3800 0 0 0 0 0 0 1 -360 360;
25 27 0.1093 0.2087 0 0 0 0 0 0 1 -360 360;
28 27 0 0.3960 0 0 0 0 1.068 0 1 -360 360;
27 29 0.2198 0.4153 0 0 0 0 0 0 1 -360 360;
27 30 0.3202 0.6027 0 0 0 0 0 0 1 -360 360;
29 30 0.2399 0.4533 0 0 0 0 0 0 1 -360 360;
8 28 0.6360 0.2000 0.0428 0 0 0 0 0 1 -360 360;
6 28 0.0169 0.0599 0.013 0 0 0 0 0 1 -360 360;
];
%%----- OPF Data -----%%
%% generator cost data
% 1 startup shutdown n x1 y1 ... xn yn 分段线性(piecewise linear)
% 2 startup shutdown n c(n-1) ... c0 多项式1(polynomial)
mpc.gencost = [
2 0 0 3 0.00375 2 0;
2 0 0 3 0.0175 1.75 0;
2 0 0 3 0.0625 1.00 0;
2 0 0 3 0.00834 3.25 0;
2 0 0 3 0.0250 3.00 0;
2 0 0 3 0.0250 3.00 0;
];
%% bus names
mpc.bus_name = {
'Glen Lyn 132';
'Claytor 132';
'Kumis 132';
'Hancock 132';
'Fieldale 132';
'Roanoke 132';
'Blaine 132';
'Reusens 132';
'Roanoke 1.0';
'Roanoke 33';
'Roanoke 11';
'Hancock 33';
'Hancock 11';
'Bus 14 33';
'Bus 15 33';
'Bus 16 33';
'Bus 17 33';
'Bus 18 33';
'Bus 19 33';
'Bus 20 33';
'Bus 21 33';
'Bus 22 33';
'Bus 23 33';
'Bus 24 33';
'Bus 25 33';
'Bus 26 33';
'Cloverdle 33';
'Cloverdle132';
'Bus 29 33';
'Bus 30 33';
};
% Warnings from cdf2matp conversion:
%
% ***** check the title format in the first line of the cdf file.
% ***** Qmax = Qmin at generator at bus 1 (Qmax set to Qmin + 10)
% ***** MVA limit of branch 1 - 2 not given, set to 0
% ***** MVA limit of branch 1 - 3 not given, set to 0
% ***** MVA limit of branch 2 - 4 not given, set to 0
% ***** MVA limit of branch 3 - 4 not given, set to 0
% ***** MVA limit of branch 2 - 5 not given, set to 0
% ***** MVA limit of branch 2 - 6 not given, set to 0
% ***** MVA limit of branch 4 - 6 not given, set to 0
% ***** MVA limit of branch 5 - 7 not given, set to 0
% ***** MVA limit of branch 6 - 7 not given, set to 0
% ***** MVA limit of branch 6 - 8 not given, set to 0
% ***** MVA limit of branch 6 - 9 not given, set to 0
% ***** MVA limit of branch 6 - 10 not given, set to 0
% ***** MVA limit of branch 9 - 11 not given, set to 0
% ***** MVA limit of branch 9 - 10 not given, set to 0
% ***** MVA limit of branch 4 - 12 not given, set to 0
% ***** MVA limit of branch 12 - 13 not given, set to 0
% ***** MVA limit of branch 12 - 14 not given, set to 0
% ***** MVA limit of branch 12 - 15 not given, set to 0
% ***** MVA limit of branch 12 - 16 not given, set to 0
% ***** MVA limit of branch 14 - 15 not given, set to 0
% ***** MVA limit of branch 16 - 17 not given, set to 0
% ***** MVA limit of branch 15 - 18 not given, set to 0
% ***** MVA limit of branch 18 - 19 not given, set to 0
% ***** MVA limit of branch 19 - 20 not given, set to 0
% ***** MVA limit of branch 10 - 20 not given, set to 0
% ***** MVA limit of branch 10 - 17 not given, set to 0
% ***** MVA limit of branch 10 - 21 not given, set to 0
% ***** MVA limit of branch 10 - 22 not given, set to 0
% ***** MVA limit of branch 21 - 22 not given, set to 0
% ***** MVA limit of branch 15 - 23 not given, set to 0
% ***** MVA limit of branch 22 - 24 not given, set to 0
% ***** MVA limit of branch 23 - 24 not given, set to 0
% ***** MVA limit of branch 24 - 25 not given, set to 0
% ***** MVA limit of branch 25 - 26 not given, set to 0
% ***** MVA limit of branch 25 - 27 not given, set to 0
% ***** MVA limit of branch 28 - 27 not given, set to 0
% ***** MVA limit of branch 27 - 29 not given, set to 0
% ***** MVA limit of branch 27 - 30 not given, set to 0
% ***** MVA limit of branch 29 - 30 not given, set to 0
% ***** MVA limit of branch 8 - 28 not given, set to 0
% ***** MVA limit of branch 6 - 28 not given, set to 0
⛳️ 运行结果
🔗 参考文献
🎈 部分理论引用网络文献,若有侵权联系博主删除
🎁 关注我领取海量matlab电子书和数学建模资料
👇 私信完整代码和数据获取及论文数模仿真定制
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱船配载优化、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题
2 机器学习和深度学习方面
2.1 bp时序、回归预测和分类
2.2 ENS声神经网络时序、回归预测和分类
2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类
2.4 CNN/TCN卷积神经网络系列时序、回归预测和分类
2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类
2.7 ELMAN递归神经网络时序、回归\预测和分类
2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类
2.9 RBF径向基神经网络时序、回归预测和分类