1) If you mean by making the tap ratio into a control variable ... no, this is not currently implemented. 2) See my reply to Carlos a few minutes ago.
-- Ray Zimmerman Senior Research Associate 211 Warren Hall, Cornell University, Ithaca, NY 14853 phone: (607) 255-9645 On Jun 21, 2011, at 12:07 PM, Dailan Xu wrote: > Thank you very much for your help. I got it. > 1) Is it possible to add a transformer and control the voltage of it? > > 2) I want to minimize power losses instead of cost function. How can I do it? > > > Best Regards > > D. Xu > > > > On Tue, Jun 21, 2011 at 17:32, Ray Zimmerman <[email protected]> wrote: > In an OPF there is no slack bus, only a reference bus to serve as a reference > for the voltage angles. The voltages at all buses are already optimization > variables. You don't need to add it. And you can constrain it as you like, > either with fixed limits using the VMIN and VMAX columns in the bus matrix, > or by adding linear constraints that tie it to any of your other optimization > variables, (Pg, Qg, Vm, Va or any user-specified variables). > > -- > Ray Zimmerman > Senior Research Associate > 211 Warren Hall, Cornell University, Ithaca, NY 14853 > phone: (607) 255-9645 > > > > On Jun 21, 2011, at 6:52 AM, Dailan Xu wrote: > >> Dear Prof. Zimmerman >> >> Another question: I want to use an OLTC (on load tap changer) to control the >> voltage of slack bus. Is it possible to do it in MATPOWER by adding an >> optimization variable(voltage of slack bus)? >> >> >> Best Regards >> >> D. Xu >> >> >> >> On Tue, Jun 21, 2011 at 01:14, Dailan Xu <[email protected]> wrote: >> Dear Prof. Zimmerman >> >> Thank you very much for your guidance. I have written a code as follow(also >> I have attached in a m.file) that I need for both power factor constraint >> and variable constraints. >> >> But when I run runopf I encounter with an error. Could you please let me >> know what is the error? >> >> +++++++++++++++++++++++++++++++++++++++++++++++++++ >> define_constants; >> mpc = loadcase( 't_case30_userfcns'); >> >> om=opf_setup(mpc,mpopt); >> r = mpc.reserves; >> ng = size(mpc.gen, 1); %% number of on-line gens >> >> Rmin = zeros(ng, 1); %% bound below by 0 >> Rmax = r.qty; %% bound above by stated max reserve qty ... >> k = find(mpc.gen(:, RAMP_10) > 0 & mpc.gen(:, RAMP_10) < Rmax); >> Rmax(k) = mpc.gen(k, RAMP_10); %% ... and ramp rate >> Rmax = Rmax / mpc.baseMVA; >> >> I = speye(ng); %% identity matrix >> Ar = [I I]; >> Pmax = mpc.gen(:, PMAX) / mpc.baseMVA; >> lreq = r.req / mpc.baseMVA; >> >> Cw = r.cost * mpc.baseMVA; %% per unit cost coefficients >> >> om = add_vars(om, 'R', ng, [], Rmin, Rmax); >> om = add_constraints(om, 'Pg_plus_R', Ar, [], Pmax, {'Pg', 'R'}); >> om = add_constraints(om, 'Rreq', r.zones, lreq, [], {'R'}); >> om = add_costs(om, 'Rcost', struct('N', I, 'Cw', Cw), {'R'}); >> >> >> nb = size(mpc.bus, 1); >> ng = size(mpc.gen, 1); >> pf = 0.95; >> QPratio = sqrt(1/pf^2 -1); >> %% add constraint that QPratio * Pg(i) - Qg(i) = 0, for i = 2 .. ng >> mpc.A = sparse([1:ng 1:ng]', [2*nb+(1:ng) 2*nb+ng+(1:ng)]', >> [QPratio*ones(ng,1); -ones(ng,1)], ng, 2*nb+2*ng); >> mpc.A = mpc.A(2:end, :); >> mpc.l = zeros(ng-1, 1); >> mpc.u = mpc.l; >> opf_execute(om,mpopt); >> >> +++++++++++++++++++++++++++++++++++++++++++++ >> >> Best Regards >> >> D. Xu >> >> >> >> On Mon, Jun 20, 2011 at 21:47, Ray Zimmerman <[email protected]> wrote: >> You simply need to build an A matrix that has all of your constraints in it. >> In other words, in addition to the rows for the power factor constraints, >> you will be adding additional rows for the constraints that include your new >> variables. But new variables mean new columns in A as well. These must be >> added to all rows, including those for the power factor constraints. >> >> When you have multiple sets of constraints like this that you are adding, it >> is often best to use the callback mechanism described in Chapter 6. You can >> then treat them separately, using the add_vars and add_constraints functions >> and MATPOWER will then form the overall matrix at runtime. It allows you to >> implement and then enable/disable multiple OPF extensions independently. >> >> -- >> Ray Zimmerman >> Senior Research Associate >> 211 Warren Hall, Cornell University, Ithaca, NY 14853 >> phone: (607) 255-9645 >> >> >> >> On Jun 20, 2011, at 10:21 AM, Dailan Xu wrote: >> >>> I have used the following code to impose power factor constraint for >>> generators (as you have written for one of the users). How can I >>> differenciate these two problems, i.e. adding a variable z and specified >>> power factor as follows: because we will have 2 matix of A >>> mpc = loadcase('t_auction_case'); >>> nb = size(mpc.bus, 1); >>> ng = size(mpc.gen, 1); >>> pf = 0.95; >>> QPratio = sqrt(1/pf^2 -1); >>> %% add constraint that QPratio * Pg(i) - Qg(i) = 0, for i = 2 .. ng >>> mpc.A = sparse([1:ng 1:ng]', [2*nb+(1:ng) 2*nb+ng+(1:ng)]', >>> [QPratio*ones(ng,1); -ones(ng,1)], ng, 2*nb+2*ng); >>> mpc.A = mpc.A(2:end, :); >>> mpc.l = zeros(ng-1, 1); >>> mpc.u = mpc.l; >>> Best Regards >>> >>> D. Xu >>> >>> >>> >>> On Mon, Jun 20, 2011 at 16:08, Ray Zimmerman <[email protected]> wrote: >>> Section 6.4 references two examples included in MATPOWER. These both use >>> the callback mechanism. There is another very basic example at about line >>> 184 of t/t_opf_mips.m that defines the A, l, u and N, fparm, H and Cw >>> parameters to be passed directly to opf. As described in the first >>> paragraph of chapter 6, these parameters can also be specified as >>> additional fields in the case struct, which is how you would need to do it >>> when calling runmarket. >>> >>> -- >>> Ray Zimmerman >>> Senior Research Associate >>> 211 Warren Hall, Cornell University, Ithaca, NY 14853 >>> phone: (607) 255-9645 >>> >>> >>> >>> On Jun 20, 2011, at 9:41 AM, Dailan Xu wrote: >>> >>>> Thank U. Where can I find an example? or could you please give me an >>>> example? >>>> >>>> Best Regards >>>> >>>> D. Xu >>>> >>>> >>>> On Mon, Jun 20, 2011 at 15:28, Ray Zimmerman <[email protected]> wrote: >>>> The runmarket code is simply a wrapper around the OPF solver, so it's the >>>> same as adding variables to extend the OPF. The bus voltages are already >>>> control variables, but please see section 5.3 and chapter 6 of the manual >>>> for details on how to extend the OPF with other variables, constraints and >>>> costs. >>>> >>>> -- >>>> Ray Zimmerman >>>> Senior Research Associate >>>> 211 Warren Hall, Cornell University, Ithaca, NY 14853 >>>> phone: (607) 255-9645 >>>> >>>> >>>> >>>> On Jun 20, 2011, at 9:15 AM, Dailan Xu wrote: >>>> >>>> > Dear Prof. Zimmerman >>>> > >>>> > How can I add an optimization variable to runmarket, for example, adding >>>> > voltage of buses as control variable? Is it possible? >>>> > >>>> > Best Regards >>>> > >>>> > D. Xu >>>> > >>>> > >>>> >>>> >>>> >>>> >>>> >>> >>> >> >> >> > >
