Dear Dr. Zimmerman,
Dear Matpower Community,

Thank you for your help. I understand your comment about my costs not defining 
a convex function. But unfortunately, I am specifically looking to also solve 
problems that could have nonconvex cost functions.

So for the case of nonconvex cost functions, can I still use Matpower? Are 
there any solvers implemented/supported, that allow using a nonconvex function 
(unlike IPOPT or MIPS)? If yes, how do I select those within the code?

I appreciate your help.

Best Regards,

Patrick Eser
________________________________________
Von: Ray Zimmerman [[email protected]]
Gesendet: Montag, 9. Juni 2014 16:46
An: MATPOWER Discussion List
Cc: Eser  Patrick
Betreff: Re: OPF with IPOPT

— I have replied to the list … and you should address your questions to the 
list (you have to be subscribed), not the list owner —

The problem is with the specification of the generator cost, namely that the 
gencost parameters do not define a convex cost function. In particular, see 
section 5.4.1 on how MATPOWER handles piecewise linear cost functions. If you 
look at the basin created by set of linear constraints defined by the points 
specified for generator 3’s cost function, it is probably not what you intended 
($1/MWh for Pg < 20 MW, $14/MWh for Pg > 20 MW.

--
Ray Zimmerman
Senior Research Associate
B30 Warren Hall, Cornell University, Ithaca, NY 14853
phone: (607) 255-9645



On Jun 9, 2014, at 9:02 AM, Eser Patrick 
<[email protected]<mailto:[email protected]>> wrote:

Dear Dr. Zimmerman,
Dear Matpower Community,

I am new to Matpower, and I am struggling to fully understand the method, with 
which the optimization for lowest costs happens in the OPF. Please let me make 
a short example case to show my problem:

mpc.version = '2';

mpc.baseMVA = 100;

mpc.bus = [
[1, 3, 0, 0, 0, 0, 1, 1, 0, 380.0, 1, 1.2, 0.8];
[2, 2, 0, 0, 0, 0, 1, 1, 0, 380.0, 1, 1.2, 0.8];
[3, 2, 0, 0, 0, 0, 1, 1, 0, 380.0, 1, 1.2, 0.8];
[4, 1, 45, 6.75, 0, 0, 1, 1, 0, 380.0, 1, 1.2, 0.8];
];

mpc.gen = [
[1, 0, 0, 4.5, -4.5, 1, 100, 1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; %Power
[2, 0, 0, 4.5, -4.5, 1, 100, 1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; %Power
[3, 0, 0, 4.5, -4.5, 1, 100, 1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; %Power
];

mpc.branch = [
[1, 4, 0.0001, 0.001, 0.1, 0, 5000, 5000, 0, 0, 1, -360, 360];
[2, 4, 0.0001, 0.001, 0.1, 0, 5000, 5000, 0, 0, 1, -360, 360];
[3, 4, 0.0001, 0.001, 0.1, 0, 5000, 5000, 0, 0, 1, -360, 360];
];

mpc.gencost = [
[1.0, 0.0, 0.0, 3.0, 10, 100, 20, 120, 30, 140]; %Cost
[1.0, 0.0, 0.0, 3.0, 10, 100, 20, 120, 30, 140]; %Cost
[1.0, 0.0, 0.0, 3.0, 10, 100, 20, 240, 30, 250]; %Cost
];

So effectively, I have three 30 MW units (at bus 1,2 and 3) to satisfy my 
demand of 45 MW at bus 4. The losses are negligible. The units are technically 
the same, but have different costs to distinguish them.

If I now run Matpower with the IPOPT optimizer (MIPS delivers the same result, 
though), my resulting power output is:

Unit 1: 12.5 MW
Unit 2: 12.5 MW
Unit 3: 20 MW
Overall cost (f): 450 $/h

Obviously, this result is not correct. Unit 3 is by far the most expensive one, 
yet it is asked to deliver the most power. Why is this happening? How does the 
optimization work here?

The only thing that strikes me here: Unit 3 has the lowest gradient of all 
units (10 $/MWh from 20 to 30 MW)... is this the reason why it is dispatched? 
If it is, why is it then not run at 30 MW, but only 20 MW?

I read the segment about the OPF in the manual carefully, but I can't find an 
explanation for these phenomena in there. Is my problem ill-posed in some way?

I felt free to attach the input and output files to this email.

I would be very thankful for any hints/explanations on the topic. I greatly 
appreciate your help.

Best Regards,

Patrick Eser<pe_example_case.m><matpower_output.txt>



Reply via email to