Battery constraint P(discharge) x P(charge) =e= 0 still returns values for both

Problems with modeling
Post Reply
esruma
User
User
Posts: 1
Joined: 2 weeks ago

Battery constraint P(discharge) x P(charge) =e= 0 still returns values for both

Post by esruma »

Hi,

I am making a simple model for battery charging and discharging in day-ahead markets for 24h periods. One of the important constraints is P(discharge) x P(charge) =e= 0, meaning that the battery cannot discharge and charge at the same time. However, the results sometimes include a set of time where both powers for P(discharge) and P(charge) have a very small value e-10-16. I have tried QCP and MINLP and both give the same results. Should I assume that there is something wrong with this constraint or is GAMS bad at reading zeros? How do I fix the problem?

Here are all the battery constraints:

*no charging or discharging the battery at the same time (one has to be zero)
mode(t).. P_c(t)*P_dc(t)=e=0.00;

*power charged or discharged only positive and in the limit of battery maximum power
charge_limit_min(t).. P_c(t)=g=P_min;
charge_limit_max(t).. P_c(t)=l=P_max;
discharge_limit_min(t).. P_dc(t)=g=P_min;
discharge_limit_max(t).. P_dc(t)=l=P_max;

*discharged power cannot exceed battery charge level at previous hour
charge_capacity(t).. P_c(t)=l=E_max - E_net(t-1);
discharge_capacity(t).. P_dc(t)=l=E_net(t-1);

*stored energy cannot exceed battery capacity:
energy_limit_min(t).. E_min=l=E_net(t);
energy_limit_max(t).. E_net(t)=l=E_max;

*energy injected to the battery hourly: charged and discharged power equal to net stored energy in battery
energy_stored(t).. E_stored(t) =e= eta*P_c(t)-P_dc(t);

*available energy in the battery
energy_net(t).. E_net(t) =e= SOC_0*E_max$(ord(t)=1) + E_net(t--1)$(ord(t)>1) + E_stored(t);

Thanks!
Post Reply