MATPOWER实战记录(一)
高斯-塞德尔法+牛拉法
潮流计算方法对比
牛顿拉夫逊法:
1)收敛速度快,若初值较好,算法将具有平方收敛特性,一般迭代4~5 次便可以
收敛到非常精确的解,而且其迭代次数与所计算网络的规模基本无关。
2)具有良好的收敛可靠性,对于对高斯-塞德尔法呈病态的系统,牛顿法均能可靠收敛。
3)初值对牛顿法的收敛性影响很大。解决的办法可以先用高斯-塞德尔法迭代1~2 次,以此迭代结果作为牛顿法的初值。也可以先用直流法潮流求解一次求得一个较好的角度初值,然后转入牛顿法迭代。
PQ法特点:
(1)用解两个阶数几乎减半的方程组(n-1 阶和n-m-1 阶)代替牛顿法的解一个(2n-m-2)阶方程组,显著地减少了内存需求量及计算量。
(2)牛顿法每次迭代都要重新形成雅可比矩阵并进行三角分解,而P-Q 分解法的系数矩阵 B’和B’’是常数阵,因此只需形成一次并进行三角分解组成因子表,在迭代过程可以反复应用,显著缩短了每次迭代所需的时间。
(3)雅可比矩阵J 不对称,而B’和B’’都是对称阵,为此只要形成并贮存因子表的上三角或下三角部分,减少了三角分解的计算量并节约了内存。由于上述原因,P-Q 分解法所需的内存量约为牛顿法的60%,而每次迭代所需时间约为牛顿法的1/5。二:因为牛顿法每次迭代都要重新生成雅克比矩阵,而PQ法的迭代矩阵是常数阵(第一次形成的)。参数一变,用PQ法已做的工作相当于白做了,相当于重新算,次数必然增多。
潮流计算代码
%% 高斯赛德尔法,不收敛,给一个初值
clc,clear
mpopt=mpoption;
mpopt=mpoption(mpopt,'PF_ALG',4,'PF_DC',0,'VERBOSE',3,'OUT_GEN',1);
mpopt.pf.gs.max_it = 10; % 高斯赛德尔迭代次数
mpc = CASE; % matpower潮流算例
results_4 = runpf(mpc,mpopt)
save GS_result
%% 无直流,牛拉法,用高斯赛德尔法修改初始值
clc,clear
load GS_result.mat
mpopt=mpoption;
mpopt=mpoption(mpopt,'PF_ALG',1,'PF_MAX_IT',10,'PF_DC',0,'VERBOSE',3,'OUT_GEN',1);
mpc = CASE;
mpc.bus(:,8:9) = results_4.bus(:,8:9); % 利用高斯赛德尔的V、θ参数
% mpc.gen(:,3) = results.gen(:,3);
results_n = runpf(mpc,mpopt)