— 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]> 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>
