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: 75174736
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: 75174736
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&nbsp;all remaining PV and REF generators have violated VAr limits&nbsp;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="">&nbsp; &nbsp;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 &lt;<a 
href="mailto:[email protected]"; 
class="">[email protected]</a>&gt; 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="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 infeas = union(mx', mn')';&nbsp; %% transposes handle fact that<br 
class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 %% union of scalars is a row vector<br 
class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 remaining = find( gen(:, GEN_STATUS) &gt; 0 &amp; ...<br 
class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 ( bus(gen(:, GEN_BUS), BUS_TYPE) == PV | ...<br 
class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 bus(gen(:, GEN_BUS), BUS_TYPE) == REF ));<br 
class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 if length(infeas) == length(remaining) &amp;&amp; all(infeas == remaining)<br 
class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 if mpopt.verbose<br 
class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 fprintf('All %d remaining gens exceed their Q limits : INFEASIBLE PROBLEM\n', 
length(infeas));<br 
class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 end<br 
class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 success = 0;<br 
class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 break;<br 
class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 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>

Reply via email to