(Sorry, that 1.0 announcement I just sent was an accident, a copy of what I 
sent to the developer list back in May.)

Hi MATPOWER users,

I wanted to let you know about some of my recent work on the internals of 
MATPOWER. I’ve been working on a major overhaul and generalization of the 
network modeling in MATPOWER that will allow for much easier customization and 
implementation of new device models, etc, as well as, unbalanced 3-phase 
modeling. More on that to come in the future.

But in the process, I found myself refactoring and enhancing some of the code 
used for building and solving the mathematical model for the OPF and I decided 
that it made sense to pull out this code, document it more thoroughly and 
release it as a separate package called 
MP-Opt-Model<https://github.com/MATPOWER/mp-opt-model>  to be included in 
future MATPOWER versions, but in its own subdirectory, like MP-Test, MIPS and 
MOST.

So, what is MP-Opt-Model? It consists of the opt_model class for building the 
model for an arbitrary optimization problem plus all of the code related to 
interfacing to 3rd party solvers and a few utility functions.

To build and solve a model using MP-Opt-Model, you simply create an opt_model 
object …

  om = opt_model;

Add some optimization variables ...

  om.add_var('theta', ...);
  om.add_var('V', ...);
  om.add_var('Pg', ...);
  om.add_var('Qg', ...);

... some constraints ...

  om.add_nln_constraint('Pmismatch', ...);
  om.add_nln_constraint('Qmismatch', ...);
  om.add_lin_constraint('branch_angle_diff', ...);

... and some costs ...

  om.add_quad_cost('genCost', ...);
  om.add_nln_cost('customCost', ...);

... then call the solve method.

  [x, f, success] = om.solve(opt);

The solver can be selected and its options controlled by the opt struct.

MP-Opt-Model currently handles linear (LP, MILP), quadratic (QP, MIQP) and 
general nonlinear (NLP) programming problems, as well as linear and nonlinear 
equations, depending on the solvers you have installed. It is not intended to 
be as comprehensive and flexible as a full modeling language like YALMIP or 
GAMS, but I suspect it is quite a bit faster.

MP-Opt-Model also includes a unified interface to all of the solvers for each 
class of problems, namely qps_master() (was qps_matpower()) for LP and QP 
problems, miqps_master() (was miqps_matpower()) for mixed-integer problems, 
nlps_master() for general nonlinear optimization problems, nleqs_master() for 
nonlinear systems of equations.

MP-Opt-Model<https://github.com/MATPOWER/mp-opt-model> is currently available 
on GitHub at https://github.com/MATPOWER/mp-opt-model, with the User's 
Manual<https://matpower.org/docs/MP-Opt-Model-manual.pdf> at available at 
https://matpower.org/docs/MP-Opt-Model-manual.pdf. The current master branch of 
the MATPOWER repository<https://github.com/MATPOWER/matpower> has also been 
updated to include and use MP-Opt-Model.

There is still a lot that can be done to improve and extend MP-Opt-Model, and I 
hope this move will help make it easier for others to not only make use of it, 
but also help enhance it.

Let me know what you think!

   Ray


Reply via email to