Hi Dr. Zimmerman,
Thanks for clarifying this part of code for me. I think your reasoning is right: if there are some generators below QMIN limit and some generators above QMAX limit, we should not conclude the problem is infeasible just from this fact. However, I am wondering if this kind of situation will arise? Thanks, Justin ________________________________ From: [email protected] <[email protected]> on behalf of Ray Zimmerman <[email protected]> Sent: Wednesday, June 15, 2016 10:09 AM To: MATPOWER discussion forum Subject: Re: Runpf Code Clarification I’m simply checking whether there are any generators at PV or REF buses that have any remaining VAr capacity and claiming infeasibility if not. That is, I’m assuming that if all remaining PV and REF generators have violated VAr limits then there does not exist a solution that respects all VAr limits. In looking at this more closely, this may include a false assumption. Namely, that constraining one violating generator will make other violations worse, not better. Is that what you were wondering about? (thinking out loud) I suppose if you have two generators left, one violating QMIN and the other violating QMAX, it’s possible that converting the first to at PQ bus, with the VAr injection set to its QMIN limit, would cause the second to reduce its VAr injection below its QMAX limit, resulting in a feasible solution. If so, this is a bug. Anybody want to take a crack at providing a patch? Ray > On Jun 14, 2016, at 11:26 AM, Zhi Zhang <[email protected]> wrote: > > Hi Dr. Zimmerman and MATPOWER Group, > > In the runpf code, there is a section checking infeasibility: > > TCL MERGE ERROR ( 06/15/2016 10:09:15 ): "invalid command name "first"" OutmailID: 120563829, List: 'matpower-l', MemberID: 75985500 SCRIPT: "first check for INFEASIBILITY (all remaining gens violating) > infeas = union(mx', mn')';" transposes handle fact that > TCL MERGE ERROR ( 06/15/2016 10:09:15 ): "extra > characters after close-quote" OutmailID: 120563829, List: 'matpower-l', MemberID: 75985500 SCRIPT: "union of scalars is a row vector > remaining = find( gen(:, GEN_STATUS) > 0 & ... > ( bus(gen(:, GEN_BUS), BUS_TYPE) == PV | ... > bus(gen(:, GEN_BUS), BUS_TYPE) == REF )); > if length(infeas) == length(remaining) && all(infeas == remaining) > if mpopt.verbose > fprintf('All %d remaining gens exceed their Q limits : INFEASIBLE PROBLEM\n', length(infeas)); > end > success = 0; > break; > end > > Can you explain what you are doing here? > > Thank you very much! > Justin Zhang --Apple-Mail=_C5E6D3EC-FAF5-4FD7-832C-0B4C7616054D Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="utf-8" <html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I’m simply checking whether there are any generators at PV or REF buses that have any remaining VAr capacity and claiming infeasibility if not. That is, I’m assuming that if all remaining PV and REF generators have violated VAr limits then there does not exist a solution that respects all VAr limits. In looking at this more closely, this may include a false assumption. Namely, that constraining one violating generator will make other violations worse, not better. Is that what you were wondering about?<div class=""><br class=""></div><div class="">(thinking out loud) I suppose if you have two generators left, one violating QMIN and the other violating QMAX, it’s possible that converting the first to at PQ bus, with the VAr injection set to its QMIN limit, would cause the second to reduce its VAr injection below its QMAX limit, resulting in a feasible solution.</div><div class=""><br class=""></div><div class="">If so, this is a bug. Anybody want to take a crack at providing a patch?</div><div class=""><br class=""></div><div class=""> Ray<br class=""><div class=""><div class=""><br class=""></div><div class=""><br class=""><div class=""><div class=""><div class=""><div><blockquote type="cite" class=""><div class="">On Jun 14, 2016, at 11:26 AM, Zhi Zhang <<a href="mailto:[email protected]" class="">[email protected]</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div id="divtagdefaultwrapper" style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; font-size: 12pt; background-color: rgb(255, 255, 255); font-family: Calibri, Arial, Helvetica, sans-serif;" class=""><div style="margin-top: 0px; margin-bottom: 0px;" class="">Hi Dr. Zimmerman and MATPOWER Group,</div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">In the runpf code, there is a section checking infeasibility:</div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><p style="margin-top: 0px; margin-bottom: 0px;" class=""></p><div class=""><b class="">" first check for INFEASIBILITY (all remaining gens violating)<br class=""> infeas = union(mx', mn')'; %% transposes handle fact that<br class=""> %% union of scalars is a row vector<br class=""> remaining = find( gen(:, GEN_STATUS) > 0 & ...<br class=""> ( bus(gen(:, GEN_BUS), BUS_TYPE) == PV | ...<br class=""> bus(gen(:, GEN_BUS), BUS_TYPE) == REF ));<br class=""> if length(infeas) == length(remaining) && all(infeas == remaining)<br class=""> if mpopt.verbose<br class=""> fprintf('All %d remaining gens exceed their Q limits : INFEASIBLE PROBLEM\n', length(infeas));<br class=""> end<br class=""> success = 0;<br class=""> break;<br class=""> end</b></div><p style="margin-top: 0px; margin-bottom: 0px;" class=""></p><div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">Can you explain what you are doing here?</div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">Thank you very much!</div><div style="margin-top: 0px; margin-bottom: 0px;" class="">Justin Zhang</div></div></div></blockquote></div><br class=""></div></div></div></div></div></div></body></html>
