Unfortunately, the OPF routines in MATPOWER are not currently designed to 
handle integer variables. The integer variable capability indicated by 
add_vars() was added for MOST, where mixed integer solvers are explicitly 
called when integer variables are present.

If you are using DC OPF only, you may be able to easily modify dcopf_solver() 
to call miqps_matpower() instead of qps_matpower() when the problem has integer 
variables.

I’m afraid for AC OPF there isn’t likely to be an easy workaround. My 
suggestion in that case is to see if you can find a formulation for your 
storage that doesn’t require integer variables. If it is related to avoiding 
simultaneous charge and discharge, you may not even need that constraint. It 
seems to me that simultaneous charge and discharge should never be optimal if 
there are charging/discharging inefficiencies.

Hope this helps,

    Ray


> On Oct 9, 2019, at 2:20 PM, Diego Piserà <[email protected]> wrote:
> 
> 
> Dear Dr. Zimmerman, Dear community
>  
> I am working on a multitemporal OPF with storage device using Matpower
>  
> To implement this problem I need to introduce new variables in the OPF 
> formulation.
>  
> Two of these variables are integers, 'alphaCH'and 'alphaDS' .
>  
> using the runopf function the solution converges but unfortunately the 
> variables 'alphaCH' 'alphaDS'are treated as continuous and not integer 
> variables
>  
>  
> Using Matpower 6.0 this is the code by which I add the function during the 
> formulation:
>  
> function om = userfcn_multitemporalOPF_formulation(om, args)
>  
> global LoL LoI no_period no_SD SoCMax SoCmin SoC0;
>  
> define_constants;
> % mpc = get_mpc(om);
> no_SD = 1;
> no_gen = 5;
> no_ts = 24;
>  
> "
OutmailID: 124021150, List: 'matpower-l', MemberID: 82861091
SCRIPT: "ADD Variable >   > om = add_vars(om,'alphaCH', no_SD * no_ts, 0, 
zeros(no_SD * no_ts, 1), ones(no_SD * no_ts, 1), 'I'); > om = 
add_vars(om,'alphaDS', no_SD * no_ts, 0, zeros(no_SD * no_ts, 1), ones(no_SD * 
no_ts, 1), 'I'); >   >"
TCL MERGE ERROR ( 10/15/2019 12:58:37 ): "invalid command name "ADD" ADD 
Constrains
> % contraints on State of Charge
> A = args.Ar;
> l = ones(args.no_period*args.no_SD,1).*(args.SoCmin-args.SoC0)/args.baseMVA;
> u = ones(args.no_period*args.no_SD,1)*(args.SoCMax-args.SoC0)/args.baseMVA;
> om = add_constraints(om, 'SoC', A, l, u,{'Pg'});
>  
> % constraint that avoid charge and discharge at the same time
> om = add_constraints(om, 'Pch_plus_aplha', args.Ar_CH, [], zeros(no_SD * 
> no_ts,1), {'Pg','alphaCH'});
>  
> om = add_constraints(om, 'Pds_plus_aplha', args.Ar_DS, [], zeros(no_SD * 
> no_ts,1), {'Pg','alphaDS'});
>  
> om = add_constraints(om, 'a_a',args.Ar_a_a, zeros(no_SD * no_ts, 1), 
> ones(no_SD * no_ts, 1), {'alphaCH', 'alphaDS'} );
>  
> Who can tell me why matpower doesn't treat the two variables as whole numbers?
>  
> Diego Piserà

Reply via email to