In [1]:
mismatch, x0, Vmag, pq, ref, Yf, Yt, ix_Vmag, ix_theta = init_mismatch(ps, true, PartFactFlag, true);
# find the minimum distance to solvability
xm, Jm, beta = find_Sm(mismatch,x0,verbose = verbose);


init_mismatch not defined
while loading In[1], in expression starting on line 1

In [12]:
x, converged = nrsolve(mismatch, x0, verbose=verbose, linesearch="exact")
if converged == true
    dist = 0
    println("The initial power flow converged.")
end
g(x) = mismatch(x)[1]
Jac(x) = mismatch(x, NeedJac=true)[2]
S = mismatch(x0)[3]
# find the left eigen vector of jacobian
w = get_left_eigv(Jac(x))
F(x) = 0.5*dot(g(x),g(x))
F_new = F(x)
if verbose
    println("F(x): $F_new")
end


Iter   Max(|g|)   |g|_2      max(Jac'*g)      alpha
   1  5.0000000  5.1961524 60.0000000  1.0287956 
   2  1.2380174  1.5388062  5.1011888  0.8075674 
   3  0.5452857  0.8969501  2.9454454  0.0237905 
   4  0.5357120  0.8863318  2.6221312  0.0003969 
   5  0.5355509  0.8861560  2.5813097  0.0000074 
   6  0.5355479  0.8861527  2.5757506  0.0000001 
 Did not find a solution to g(x) = 0.
F(x): 0.39263328939273257

In [20]:
S_i = S + sum(g(x).*w)*w
# S_i = S_i + [0,-0.05,-0.05]
mismatch_new(x;args...) = mismatch(x, Si=vec(S_i);args...)
x, converged = nrsolve(mismatch_new, x0, verbose=true, linesearch="exact")
w = get_left_eigv(Jac(x))


Iter   Max(|g|)   |g|_2      max(Jac'*g)      alpha
   1  4.5145889  4.6469775 55.1439236  0.9984969 
   2  0.9748206  1.0972682  6.7195411  1.2360430 
   3  0.1817355  0.2601904  2.1320033  1.4283021 
   4  0.0182154  0.0182389  0.1096506  0.9509246 
   5  0.0031271  0.0050359  0.0215530  1.4627641 
   6  0.0006896  0.0009954  0.0079930  1.0976920 
   7  0.0000548  0.0000589  0.0001310  1.0387569 
   8  0.0000098  0.0000140  0.0000891  1.0731624 
   9  0.0000001  0.0000001  0.0000009  1.0001782 
Solution found.
Check this case. The smallest eigen value has a large real/imaginary value.
Out[20]:
3x1 Array{Float64,2}:
  0.043369
 -0.64375 
 -0.764006

In [21]:
S_i


Out[21]:
3x1 Array{Float64,2}:
  0.999804
 -4.51459 
 -0.461823

In [22]:
w


Out[22]:
3x1 Array{Float64,2}:
  0.043369
 -0.64375 
 -0.764006

In [6]:
mismatch(x, Si=vec(S_i))


S_i not defined
while loading In[6], in expression starting on line 1

In [25]:
include("test/test_power_flow.jl")


Iter   Max(|g|)   |g|_2      max(Jac'*g)      alpha
   1  2.6060672  5.6902394 38.0788914  1.2639870 
   2  1.0858156  1.8875362 11.1092068  0.0416439 
   3  1.0559328  1.8485483 10.2743712  0.0000113 
   4  1.0559242  1.8485378 10.2882952  0.0000000 
 Did not find a solution to g(x) = 0.
Power flow did not converge.

In [26]:
beta, beta_P, beta_Q, beta_S, beta_C = find_sens_fact(ps, PartFactFlag);
println("beta: $beta")
println("beta_P: $beta_P")
println("beta_Q: $beta_Q")
println("beta_S: $beta_S")
println("beta_C: $beta_C")


Iter   Max(|g|)   |g|_2      max(Jac'*g)      alpha
   1  2.6060672  5.6902394 38.0788914  1.2639870 
   2  1.0858156  1.8875362 11.1092068  0.0416439 
   3  1.0559328  1.8485483 10.2743712  0.0000113 
   4  1.0559242  1.8485378 10.2882952  0.0000000 
 Did not find a solution to g(x) = 0.
F(x): 1.7085460118069389
F(x): 1.3461874544836498
F(x): 1.328848456493857
F(x): 1.3256745109147654
F(x): 1.3249184339228872
F(x): 1.324519917685782
F(x): 1.324270004775686
F(x): 1.324097413934338
F(x): 1.3239763424525652
F(x): 1.3238922126511952
beta: 1.627201408954156
beta_P: [0.0,0.24683290093914648,0.3231719821501524,0.3230459766424679,0.493179392531185,0.3966201577460313]
beta_Q: [0.0,0.0,0.0,0.29190042834689833,0.4685461126117775,0.1581135777901253]
beta_S: [0.0,0.0,0.0,0.4348327730342698,0.6800426263266466,0.39225598615056123]
beta_C: [0.0,0.0,0.0,0.13358783480307213,0.16484913305917645,0.08618672768302113]

In [42]:
beta, beta_P, beta_Q, beta_S, beta_C = find_sens_fact(ps, PartFactFlag);
println("beta: $beta")
println("beta_P: $beta_P")
println("beta_Q: $beta_Q")
println("beta_S: $beta_S")
println("beta_C: $beta_C")


Iter   Max(|g|)   |g|_2      max(Jac'*g)      alpha
   1  2.6060672  5.7601435 39.1840681  1.3881504 
   2  0.5741320  1.2497550  5.2648682  0.5775904 
   3  0.4914309  0.8640684  2.3745631  0.1037927 
   4  0.4733733  0.8188004  2.1864305  0.0043405 
   5  0.4725995  0.8170240  2.1647319  0.0001468 
   6  0.4725735  0.8169641  2.1655102  0.0000050 
   7  0.4725726  0.8169620  2.1653058  0.0000002 
 Did not find a solution to g(x) = 0.
F(x): 0.3337134320229509
F(x): 0.2338771891294488
F(x): 0.23376483404948384
F(x): 0.23375231769819194
beta: 0.683743106288015
beta_P: [-0.01984841547099103,0.0044586144176400055,0.015956341330375157,0.150375691592184,0.5150004370054138,0.12842508231768646]
beta_Q: [0.0,0.0,0.0,0.24831984128730716,0.7696129637691402,0.20256702161936807]
beta_S: [0.0,0.0,0.0,0.28192031492787234,0.9083588468907993,0.2340467612130938]
beta_C: [0.0,0.0,0.0,0.09335487023383258,0.1964476477388937,0.09379423627363047]

In [31]:
PartFactFlag = false
mismatch, x0, Vmag, pq, ref, Yf, Yt, ix_Vmag, ix_theta = init_mismatch(ps, true, PartFactFlag, true);
# find the minimum distance to solvability
xm, Jm, beta = find_Sm(mismatch,x0,verbose = verbose);


Iter   Max(|g|)   |g|_2      max(Jac'*g)      alpha
   1  2.6060672  5.6902394 38.0788914  1.2639870 
   2  1.0858156  1.8875362 11.1092068  0.0416439 
   3  1.0559328  1.8485483 10.2743712  0.0000113 
   4  1.0559242  1.8485378 10.2882952  0.0000000 
 Did not find a solution to g(x) = 0.
F(x): 1.7085460118069389
F(x): 1.3461874550866342
F(x): 1.3288484559221159
F(x): 1.3256745107967132
F(x): 1.324918434249631
F(x): 1.324519918133059
F(x): 1.3242700050882492
F(x): 1.324097414173314
F(x): 1.3239763425740434
F(x): 1.32389221230497

In [32]:
xm
mismatch(xm)[1]


Out[32]:
8-element Array{Float64,1}:
 0.407736
 0.530087
 0.537951
 0.796317
 0.648428
 0.487342
 0.744682
 0.25401 

In [30]:
xm
mismatch(xm)[1]


Out[30]:
9-element Array{Float64,1}:
 -0.0138144
  0.0028896
  0.0109183
  0.101023 
  0.352385 
  0.0881282
  0.167472 
  0.526941 
  0.139015 

In [37]:
PartFactFlag = true


Out[37]:
true

In [38]:
PartFactFlag


Out[38]:
true

In [43]:
-beta/beta_S[5]


Out[43]:
-0.7527235614299169

In [51]:
psnew = deepcopy(ps)
f = -.795
# f = -beta/beta_S[5]
ϕ = atan(psnew.shunt[2,:Q]/psnew.shunt[2,:P])
psnew.shunt[2,:P] = psnew.shunt[2,:P] + f*100*cos(ϕ)
psnew.shunt[2,:Q] = psnew.shunt[2,:Q] + f*100*sin(ϕ)
#psnew.shunt[2,:P] = psnew.shunt[2,:P] + actual_f*100
acpf!(psnew, PartFactFlag = PartFactFlag)
psnew.shunt


Iter   Max(|g|)   |g|_2      max(Jac'*g)      alpha
   1  2.5874336  5.3375452 40.8705177  1.4174779 
   2  0.4669214  0.8462551  4.1974946  1.0772656 
   3  0.0514955  0.0993975  0.1996503  1.1779291 
   4  0.0098514  0.0215048  0.0878214  1.1736791 
   5  0.0009121  0.0020756  0.0066486  1.0447499 
   6  0.0000685  0.0001397  0.0005844  1.0041611 
   7  0.0000001  0.0000003  0.0000013  1.0000087 
Solution found.
Out[51]:
busPQfracSfracZfactortypevaluefracEgamma
14280.0280.01.00.01.01.0100000.00.00.0
25223.78501089566947223.785010895669471.00.01.01.0100000.00.00.0
36280.0280.01.00.01.01.0100000.00.00.0

In [123]:
psnew = deepcopy(ps)
#actual_f = -3.597
f = -beta/beta_S[5]
ϕ = atan(psnew.shunt[2,:Q]/psnew.shunt[2,:P])
psnew.shunt[2,:P] = psnew.shunt[2,:P] + f*100*cos(ϕ)
psnew.shunt[2,:Q] = psnew.shunt[2,:Q] + f*100*sin(ϕ)
#psnew.shunt[2,:P] = psnew.shunt[2,:P] + actual_f*100
acpf!(psnew)


Iter   Max(|g|)   |g|_2      max(Jac'*g)      alpha
   1  2.5874336  4.6996219 43.1547725  1.3241792 
   2  0.5597862  0.9506106  9.8041060  0.9122476 
   3  0.3212555  0.4943572  4.4598915  0.0033420 
   4  0.3208440  0.4935303  4.5001890  0.0000020 
   5  0.3208438  0.4935298  4.5013173  0.0000000 
 Did not find a solution to g(x) = 0.
Power flow did not converge.

In [125]:
beta2, beta_P2, beta_Q2, beta_S2, beta_C2 = find_sens_fact(psnew, PartFactFlag);
println("beta: $beta2")
println("beta_P: $beta_P2")
println("beta_Q: $beta_Q2")
println("beta_S: $beta_S2")
println("beta_C: $beta_C2")


Iter   Max(|g|)   |g|_2      max(Jac'*g)      alpha
   1  2.5874336  4.6996219 43.1547725  1.3241792 
   2  0.5597862  0.9506106  9.8041060  0.9122476 
   3  0.3212555  0.4943572  4.4598915  0.0033420 
   4  0.3208440  0.4935303  4.5001890  0.0000020 
   5  0.3208438  0.4935298  4.5013173  0.0000000 
 Did not find a solution to g(x) = 0.
F(x): 0.12178581366761834
F(x): 0.07761942671998029
F(x): 0.07738268083287513
F(x): 0.07737276578865505
beta: 0.3933770857298505
beta_P: [0.0,0.2947584647755664,0.3444948994795507,0.4821772776102471,0.32811174037239754,0.4152406136202367]
beta_Q: [0.0,0.0,0.0,0.4706538274172717,0.20367251565376465,0.13735422951959586]
beta_S: [0.0,0.0,0.0,0.6737533356904299,0.37602825356434244,0.3907435608328921]
beta_C: [0.0,0.0,0.0,0.18104364784139482,0.11863054510843088,0.07498842879360726]

In [133]:
psnew.shunt


Out[133]:
busPQfracSfracZfactortypevaluefracEgamma
14280.0280.01.00.01.01.0100000.00.00.0
25110.80396399580496110.803963995804991.00.01.01.0100000.00.00.0
36280.0280.01.00.01.01.0100000.00.00.0

In [128]:
f2 = -beta2/beta_S2[5]


Out[128]:
-1.0461370442275542

In [146]:
psnew2 = deepcopy(psnew)
f2 = -1.204
psnew2.shunt[2,:P] = psnew.shunt[2,:P] + f2*100*cos(ϕ)
psnew2.shunt[2,:Q] = psnew.shunt[2,:Q] + f2*100*sin(ϕ)
#psnew.shunt[2,:P] = psnew.shunt[2,:P] + actual_f*100
acpf!(psnew2)


Iter   Max(|g|)   |g|_2      max(Jac'*g)      alpha
   1  2.5874336  4.6084804 45.7088422  1.2634542 
   2  0.5312585  0.7998067  6.6388588  1.2230913 
   3  0.0656857  0.1146947  0.6218171  1.1914704 
   4  0.0119190  0.0220404  0.1878271  1.1842667 
   5  0.0017633  0.0033098  0.0148648  1.1392477 
   6  0.0003190  0.0005890  0.0052353  1.1473344 
   7  0.0000265  0.0000538  0.0001464  1.0205154 
   8  0.0000008  0.0000014  0.0000119  1.0006668 
Solution found.

In [149]:
(-1.046 - (-1.204))*100/1.204


Out[149]:
13.12292358803986

In [109]:
(f - actual_f)*100/actual_f


Out[109]:
-166.52191516171774

In [110]:
f


Out[110]:
2.3927932883669873

In [111]:
actual_f


Out[111]:
-3.597

In [116]:
f


Out[116]:
4.42518314360744e-9

In [ ]: