Dear Ray,
while trying to find a way to add a user defined constraint I came across this
example posted by you a couple years ago:
What I want to do is to create an equality constraint that will allow only
above a limit of operation of certain units. In fact, I have 14 gens of which
11 are conventional. I want the output of those eleven gens to be always above
50% of the total load. So the inequality should be sth like:
Pg1+Pg2+...Pg11> 0.5* Load
I have 41 buses so I believe that the following can produce my extra constraint:
A_V = sparse(1, 80);A_Pg = sparse( [ 1 1 1 1 1 1 1 1 1 1 1 0 0 0] );
A_Qg = sparse(1, 14);
mpc.A = [A_V A_Pg A_Qg];
mpc.l = [0.5*Load];
Questions:
In the example following, you only put pu values at the limits of the struct.
Can I use absolute values?
Does what I present here makes sense?
In the following example is there a chance there is a typo and it is mpc.u =
[0; 0.09] instead of mpc.u = [0; 0.01] or I am getting sth wrong?
Best Regards,
Vagelis
Ok, here's a simple example ...
Suppose you wanted to add the following two constraints to case9.m:
1) generator 1 and generator 2 real power output must be equal
0 <= Pg1 - Pg2 <= 0
2) the difference in voltage magnitudes between buses 1 and 9 must be less than
0.01 p.u.
-0.01 <= Vm1 - Vm9 <= 0.09Since we have 9 buses and 3 generators, the A
matrix will be 2 x 24 (9 angles,
9 magnitudes, 3 real injections, 3 reactive injections).
mpc = loadcase('case9');
A_Va = sparse(2, 9);
A_Vm = sparse( [ 0 0 0 0 0 0 0 0 0;
1 0 0 0 0 0 0 0 -1 ] );
A_Pg = sparse( [ 1 -1 0;
0 0 0 ] );
A_Qg = sparse(2, 3);
mpc.A = [A_Va A_Vm A_Pg A_Qg];
mpc.l = [0; -0.01];
mpc.u = [0; 0.01];
opt = mpoption('OUT_BRANCH', 0, 'OUT_ALL_LIM', 0, 'OUT_SYS_SUM', 0);
r = runopf(mpc, opt);