✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
1 算法原理
Existing heuristic optimization algorithms are prone to obtain a set of non-dominated solutions overconcentrated within an intermediate area in the objective space. It results in a poor diversity performance of the Pareto front when handling the problem on multi-objective voltage and reactive power coordinated control (MOVRPOC). For mitigating the
aforementioned disadvantages, a newly developed heuristic algorithm, gaining-sharing knowledge based algorithm (GSK), is implemented to handle the problem of MOVRPOC. Then, the minimum system losses, the minimum average voltage deviation and the minimum curtailment rate are treated as optimization objectives, and then the revised IEEE 33-bus distribution system is utilized as the benchmark networks. Grey wolf optimization (GWO) and equilibrium optimizer (EO) are taken as a comparison to validate the improvement on diversity of GSK. The results reveal that GSK is capable to obtain more diverse non-dominated solutions to MOVRPOC for distributed networks, which can bebetter applied to the practical scenarios on MOVRPOC distribution networks.
2 算法流程
多目标无功电压优化是一种在配电网或输电网中通过调整无功功率和电压水平来实现多个优化目标的方法。这些目标可以包括降低功耗、改善电压稳定性、减少潮流损耗等。
以下是多目标无功电压优化的一般流程:
- 网络建模:将配电网或输电网进行建模,包括各个节点、支路、负载以及发电设备等。
- 目标函数定义:根据具体的优化目标,定义一个或多个目标函数。常见的目标函数包括最小化功耗、最大化电压稳定性指标、最小化网络损耗等。
- 约束条件设定:确定约束条件,包括电压限制、无功功率限制、线路容量限制等。这些约束条件是为了保证系统运行的安全性和可行性。
- 优化算法选择:选择适当的优化算法来求解多目标优化问题。常用的算法包括遗传算法、粒子群优化、蚁群算法等。这些算法能够搜索优化空间,并找到一组 Pareto 最优解集合,代表了权衡不同优化目标的最佳解。
- 优化求解:利用选择的优化算法对目标函数进行优化求解。通过迭代搜索和评估目标函数值,不断更新解空间,直到满足停止准则或达到一定的迭代次数。
- 解析结果分析:对求解得到的 Pareto 最优解集合进行分析,根据实际需求选择最优的方案。可以考虑权衡不同目标之间的权重,并选择具有最佳综合性能的解决方案。
⛄ 部分代码
function mpc = case33
mpc.version = '2';
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 12.66 1 1.1 0.9;
% 1 3 0 0 0 0 1.05 1 0 12.66 1 1.05 0.95;
2 1 0.100 0.060 0 0 1 1 0 12.66 1 1.05 0.95;
3 1 0.090 0.040 0 0 1 1 0 12.66 1 1.05 0.95;
4 1 0.120 0.080 0 0 1 1 0 12.66 1 1.05 0.95;
5 1 0.060 0.030 0 0 1 1 0 12.66 1 1.05 0.95;
6 1 0.060 0.020 0 0 1 1 0 12.66 1 1.05 0.95;
7 1 0.200 0.100 0 0 1 1 0 12.66 1 1.05 0.95;
8 1 0.200 0.100 0 0 1 1 0 12.66 1 1.05 0.95;
9 1 0.060 0.020 0 0 1 1 0 12.66 1 1.05 0.95;
10 1 0.060 0.020 0 0 1 1 0 12.66 1 1.05 0.95;
11 1 0.045 0.030 0 0 1 1 0 12.66 1 1.05 0.95;
12 1 0.060 0.035 0 0 1 1 0 12.66 1 1.05 0.95;
13 1 0.060 0.035 0 0 1 1 0 12.66 1 1.05 0.95;
14 1 0.120 0.080 0 0 1 1 0 12.66 1 1.05 0.95;
15 1 0.060 0.010 0 0 1 1 0 12.66 1 1.05 0.95;
16 1 0.060 0.020 0 0 1 1 0 12.66 1 1.05 0.95;
17 1 0.060 0.020 0 0 1 1 0 12.66 1 1.05 0.95;
18 1 0.090 0.040 0 0 1 1 0 12.66 1 1.05 0.95;
19 1 0.090 0.040 0 0 1 1 0 12.66 1 1.05 0.95;
20 1 0.090 0.040 0 0 1 1 0 12.66 1 1.05 0.95;
21 1 0.090 0.040 0 0 1 1 0 12.66 1 1.05 0.95;
22 1 0.090 0.040 0 0 1 1 0 12.66 1 1.05 0.95;
23 1 0.090 0.050 0 0 1 1 0 12.66 1 1.05 0.95;
24 1 0.420 0.200 0 0 1 1 0 12.66 1 1.05 0.95;
25 1 0.420 0.200 0 0 1 1 0 12.66 1 1.05 0.95;
26 1 0.060 0.025 0 0 1 1 0 12.66 1 1.05 0.95;
27 1 0.060 0.025 0 0 1 1 0 12.66 1 1.05 0.95;
28 1 0.060 0.020 0 0 1 1 0 12.66 1 1.05 0.95;
29 1 0.120 0.070 0 0 1 1 0 12.66 1 1.05 0.95;
30 1 0.200 0.100 0 0 1 1 0 12.66 1 1.05 0.95;
31 1 0.150 0.070 0 0 1 1 0 12.66 1 1.05 0.95;
32 1 0.210 0.100 0 0 1 1 0 12.66 1 1.05 0.95;
33 1 0.060 0.040 0 0 1 1 0 12.66 1 1.05 0.95;
];
%%generator data
% bus Pg Qg Qmax Qmin Vg mBase status Pmax Pmin
mpc.gen = [
1 0 0 60 -60 1.05 100 1 100 0
];
%%branch data
% fbus tbus r x b rateA rateB rateC ratio angle
% status
mpc.branch = [ %% (r and x specified in ohms here, converted to p.u. below)
1 2 0.0922 0.0470 0 130 130 130 0 0 1;
2 3 0.4930 0.2512 0 130 130 130 0 0 1;
3 4 0.3661 0.1864 0 130 130 130 0 0 1;
4 5 0.3811 0.1941 0 130 130 130 0 0 1;
5 6 0.8190 0.7070 0 130 130 130 0 0 1;
6 7 0.1872 0.6188 0 130 130 130 0 0 1;
7 8 0.7115 0.2351 0 130 130 130 0 0 1;
8 9 1.0299 0.7400 0 130 130 130 0 0 1;
9 10 1.0440 0.7400 0 130 130 130 0 0 1;
10 11 0.1967 0.0651 0 130 130 130 0 0 1;
11 12 0.3744 0.1298 0 65 65 65 0 0 1;
12 13 1.4680 1.1549 0 32 32 32 0 0 1;
13 14 0.5416 0.7129 0 65 65 65 0 0 1;
14 15 0.5909 0.5260 0 65 65 65 0 0 1;
15 16 0.7462 0.5449 0 65 65 65 0 0 1;
16 17 1.2889 1.7210 0 65 65 65 0 0 1;
17 18 0.7320 0.5739 0 32 32 32 0 0 1;
2 19 0.1640 0.1565 0 32 32 32 0 0 1;
19 20 1.5042 1.3555 0 32 32 32 0 0 1;
20 21 0.4095 0.4784 0 16 16 16 0 0 1;
21 22 0.7089 0.9373 0 16 16 16 0 0 1;
3 23 0.4512 0.3084 0 16 16 16 0 0 1;
23 24 0.8980 0.7091 0 16 16 16 0 0 1;
24 25 0.8959 0.7071 0 32 32 32 0 0 1;
6 26 0.2031 0.1034 0 32 32 32 0 0 1;
26 27 0.2842 0.1447 0 32 32 32 0 0 1;
27 28 1.0589 0.9338 0 32 32 32 0 0 1;
28 29 0.8043 0.7006 0 32 32 32 0 0 1;
29 30 0.5074 0.2585 0 32 32 32 0 0 1;
30 31 0.9745 0.9629 0 16 16 16 0 0 1;
31 32 0.3105 0.3619 0 16 16 16 0 0 1;
32 33 0.3411 0.5302 0 16 16 16 0 0 1;
];
%% convert branch impedances from Ohms to p.u.
[PQ, PV, REF, NONE, BUS_I, BUS_TYPE, PD, QD, GS, BS, BUS_AREA, VM, ...
VA, BASE_KV, ZONE, VMAX, VMIN, LAM_P, LAM_Q, MU_VMAX, MU_VMIN] = idx_bus;
[F_BUS, T_BUS, BR_R, BR_X, BR_B, RATE_A, RATE_B, RATE_C, ...
TAP, SHIFT, BR_STATUS, PF, QF, PT, QT, MU_SF, MU_ST, ...
ANGMIN, ANGMAX, MU_ANGMIN, MU_ANGMAX] = idx_brch;
Vbase = mpc.bus(1, BASE_KV) * 1e3; %% in Volts
Sbase = mpc.baseMVA * 1e6; %% in VA
mpc.branch(:, [BR_R BR_X]) = mpc.branch(:, [BR_R BR_X]) / (Vbase^2 / Sbase);
return;
⛄ 运行结果
⛄ 参考文献
[1] 王亚梅.面向多目标的主动配电网无功协调优化[D].山东理工大学[2023-06-16].DOI:CNKI:CDMD:2.1018.139525.
[2] 陈功贵,曹佳,刘耀,等.基于全序排列帝国主义算法的多目标无功优化仿真研究[J].实验室研究与探索, 2019, 38(7):6.DOI:10.3969/j.issn.1006-7167.2019.07.023.
[3] 袁辉,徐贵光,周京阳.基于模糊线性规划的无功电压优化[J].电网技术, 2003, 27(12):5.DOI:CNKI:SUN:DWJS.0.2003-12-008.
[4] 刘述奎,陈维荣,李奇,等.基于自适应聚焦粒子群优化算法的电力系统多目标无功优化[J].电网技术, 2009(13):53-58.DOI:CNKI:SUN:DWJS.0.2009-13-012.