Thank you for you interpretation Prof Ray. Actually I have found a
function called sgvm_add_shunts() in matpower -> extras ->syngrid,
which looks like it may do what I want, but I am not sure because there
is not too much annotation in its source code and user's manual.
---------------------------------------------
"MATPOWER discussion forum"
<[email protected]>;
2020??9??10??(??????) ????10:48
"MATPOWER-L"<[email protected]>;
Re: optimal power flow with unit commitment using mixed integer programming
So runuopf() begins by running an OPF with all generators turned on, with
active power dispatches limited by PMIN and PMAX. Any unit that is dispatched
at PMIN (and would be dispatched lower if the limit were relaxed) is said to
have a binding PMIN limit and is therefore considered as a candidate for
shutdown. It re-runs the OPF with each of these candidates shut down (one at a
time) and continues the process with the one that produced the greatest
decrease in objective function ?? terminating when the objective is not
decreased by shutting down any of the units dispatched at PMIN.
So on second thought, since your "shunt generators?? are always dispatched at
PMIN (since PMIN = PMAX), they are always candidates for shutdown, so long as
the nodal price of active power is positive. This means that runuopf() may
actually give you a decent approximation to the solution of the problem after
all. The last condition (positive nodal price) is necessary to ensure that it
is the PMIN limit that is binding, not the PMAX limit. The binding limit is the
one that would alter the solution if it were relaxed.
However, runuopf() still requires that the problem be feasible with all
generators turned on. It will not be able to shut down units to turn an
infeasible problem into a feasible one ?? only to decrease the cost of a
feasible problem.
Ray