Dears
I’m trying to solve my optimization problem using cvx
I get the following error when running the code
Error using cvx/times (line 173)
Disciplined convex programming error:
Cannot perform the operation: {real affine} .* {concave}
Error in cvx/mtimes (line 36)
z = feval( oper, x, y );
Error in planning_optimizing_beta_3 (line 166)
Deg(i,k,day,week)>= -((0.042*((BatC)/5000)+ ((1-Ef^2)/Ef)*our_Beta)...
My code is below
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cvx_begin %quiet %quiet for not producing any screen outputs
%in variables we put decision and axuillary variables that are related to
%decision variables
variables POP(NEV,t,days,weeks) MxAP(NEV,t,days,weeks) MnAP(NEV,t,days,weeks) RsRP(NEV,t,days,weeks) Deg(NEV,t,days,weeks) our_Beta
expressions Inn(t,days,weeks) running_cost(t,days,weeks) Scaled_week_profit(weeks) Yearly_profit(years) Total_profit Agg_Per Num_of_cars Scaling_Factor ...
Scaled_DEP(NEV,t) Comp(NEV,t) EvPer(t) Dep_i(NEV,t)
Agg_Per=(-85.7*our_Beta+20.31)/100;
for week=1:weeks
week
%loading data for the whole week
ReguppW(:,week) = Regupp((week-1)*days*hours+1:week*days*hours);
RegdwpW(:,week) = Regdwp((week-1)*days*hours+1:week*days*hours);
ResrespW(:,week) = Resresp((week-1)*days*hours+1:week*days*hours);
ExU_W(:,week) = ExUA((week-1)*days*hours+1:week*days*hours);
ExD_W(:,week) = ExDA((week-1)*days*hours+1:week*days*hours);
ExR_W(:,week) = ExRA((week-1)*days*hours+1:week*days*hours);
% PriceD_W(:,week) = Price((week-1)*days*hours+1:week*days*hours);
FPriceD_W(:,week) = FPrice((week-1)*days*hours+1:week*days*hours);
for day = 1:days
day
%loading data for the whole day
Pregup(:,day,week) = ReguppW((day-1)*hours+1 : day*hours,week)*1e-3;
% RegdwpD(:,day,week) = RegdwpW((day-1)*hours+1 : day*hours,week);
Pregdw(:,day,week) = RegdwpW((day-1)*hours+1 : day*hours,week)*1e-3;
Prespres(:,day,week) = ResrespW((day-1)*hours+1 : day*hours,week)*1e-3; % *1e-3 for KW to MW for 24 hours Responsive reserve price
ExU(:,day,week) = ExU_W((day-1)*hours+1 : day*hours,week); %for the whole day
ExD(:,day,week) = ExD_W((day-1)*hours+1 : day*hours,week);
ExR(:,day,week) = ExR_W((day-1)*hours+1 : day*hours,week);
%PriceD(:,day,week) = PriceD_W((day-1)*hours+1 : day*hours,week)*1e-3; %for the whole day
FPriceD(:,day,week) = FPriceD_W((day-1)*hours+1:day*hours,week)*1e-3; %for the whole day
% the for loop was done to apply the constraints for each time
for k = 1:t %number of hours
k
Inn(k,day,week) = ((Pregup(k,day,week)*(sum(MnAP(:,k,day,week))) + Pregdw(k,day,week)*(sum(MxAP(:,k,day,week))) +Prespres(k,day,week)*(sum(RsRP(:,k,day,week))))*EvPer(k))...
+ our_Beta*(Av(:,k)'*((MxAP(:,k,day,week)*ExD(k,day,week) + POP(:,k,day,week) - MnAP(:,k,day,week)*ExU(k,day,week) - RsRP(:,k,day,week)*ExR(k,day,week))*EvPer(k)));
running_cost(k,day,week)= (Av(:,k)'*((MxAP(:,k,day,week)*ExD(k,day,week) + POP(:,k,day,week) - MnAP(:,k,day,week)*ExU(k,day,week) - RsRP(:,k,day,week)*ExR(k,day,week))*(FPriceD(k,day,week))...
*EvPer(k)))+ (sum(Deg(:,k,day,week)));
end
end
Scaled_week_profit(week)=weighted_factor(week)*(( sum(sum(Inn(:,:,week)))- sum(sum(running_cost(:,:,week))) ));
end
for year=1:years
Yearly_profit(year)=(1/(1+(discount_rate))^year)*((sum(Scaled_week_profit)));
end
Total_profit=(sum(Yearly_profit)-sum(Investment_cost));
maximize Total_profit
subject to
our_Beta>0; %range for our_Beta
our_Beta<=0.12;
%
Num_of_cars==(Agg_Per*10000);%assuming the number of cars is 10000 cars
Scaling_Factor==(Num_of_cars/NEV);
Scaled_DEP==DEP*Scaling_Factor; %we scale DEP so we calculte the compensation factor and EVPer
%to calculate compensation factor
for i=1:NEV
for j=1:hours
Comp(i,j)==1+(Scaled_DEP(i,j)/(1-Scaled_DEP(i,j)));
end
end
%to calculate EVPer
for h=1:hours
for i=1:NEV
if h<Mttrip(i)
Dep_i(i,h)=sum(Scaled_DEP(i,1:h));
elseif (h >= Mttrip(i) && h < Ettrip(i))
Dep_i(i,h)=sum(Scaled_DEP(i,Mttrip(i):h));
elseif h >= Ettrip(i)
Dep_i(i,h)=sum(Scaled_DEP(i,Ettrip(i):h));
end
end
EvPer(h)==1-((1/NEV)*sum(Dep_i(:,h)));
end
for week=1:weeks
week
for day =1:days
day
Trip = zeros(NEV,hours);
for k=1:t
k
for i = 1:NEV
if k<Mttrip(i)
Trip(i,k)=0;
elseif k>=Mttrip(i) && k<Ettrip(i)
Trip(i,k)=trip_1(i);
elseif k>=Ettrip(i)
Trip(i,k)=trip_1(i)+trip_2(i);
end
sum(Av(i,1:k).*(MxAP(i,1:k,day,week).*ExD(1:k,day,week)' + POP(i,1:k,day,week) - MnAP(i,1:k,day,week).*ExU(1:k,day,week)' ...
- RsRP(i,1:k,day,week).*ExR(1:k,day,week)').*Comp(i,1:k) + ((-min(0,Av(i,1:k).*(POP(i,1:k,day,week) - MnAP(i,1:k,day,week).*ExU(1:k,day,week)'- ...
RsRP(i,1:k,day,week).*ExR(1:k,day,week)')).*(Comp(i,1:k)/Ef))*((1-Ef^2)/Ef)))*Ef + SOCI(i) -Trip(i,k) <= Mci(i);
sum(Av(i,1:k).*(MxAP(i,1:k,day,week).*ExD(1:k,day,week)' + POP(i,1:k,day,week) - MnAP(i,1:k,day,week).*ExU(1:k,day,week)' ...
- RsRP(i,1:k,day,week).*ExR(1:k,day,week)').*Comp(i,1:k) + ((-min(0,Av(i,1:k).*(POP(i,1:k,day,week) - MnAP(i,1:k,day,week).*ExU(1:k,day,week)'- ...
RsRP(i,1:k,day,week).*ExR(1:k,day,week)')).*(Comp(i,1:k)/Ef))*((1-Ef^2)/Ef)))*Ef + SOCI(i) -Trip(i,k) >= 0.1*Mci(i); %avoiding deep discharging
if k==t
sum(Av(i,1:k).*(MxAP(i,1:k,day,week).*ExD(1:k,day,week)' + POP(i,1:k,day,week) - MnAP(i,1:k,day,week).*ExU(1:k,day,week)' ...
- RsRP(i,1:k,day,week).*ExR(1:k,day,week)').*Comp(i,1:k) + ((-min(0,Av(i,1:k).*(POP(i,1:k,day,week) - MnAP(i,1:k,day,week).*ExU(1:k,day,week)'- ...
RsRP(i,1:k,day,week).*ExR(1:k,day,week)')).*(Comp(i,1:k)/Ef))*((1-Ef^2)/Ef)))*Ef + SOCI(i) -Trip(i,k)>= 0.99*Mci(i);
sum(Av(i,1:k).*(MxAP(i,1:k,day,week).*ExD(1:k,day,week)' + POP(i,1:k,day,week) - MnAP(i,1:k,day,week).*ExU(1:k,day,week)' ...
- RsRP(i,1:k,day,week).*ExR(1:k,day,week)').*Comp(i,1:k) + ((-min(0,Av(i,1:k).*(POP(i,1:k,day,week) - MnAP(i,1:k,day,week).*ExU(1:k,day,week)'- ...
RsRP(i,1:k,day,week).*ExR(1:k,day,week)')).*(Comp(i,1:k)/Ef))*((1-Ef^2)/Ef)))*Ef + SOCI(i) -Trip(i,k)<= Mci(i);
end
(MxAP(i,k,day,week) + POP(i,k,day,week))*Comp(i,k) <= (Av(i,k)*MP(i));
MnAP(i,k,day,week) <= POP(i,k,day,week) + MP(i)*Av(i,k);
RsRP(i,k,day,week) <= POP(i,k,day,week) + MP(i)*Av(i,k) - MnAP(i,k,day,week);
MxAP(i,k,day,week) >= 0;
MnAP(i,k,day,week) >= 0;
RsRP(i,k,day,week) >= 0;
POP(i,k,day,week) >= -MP(i)*Av(i,k);
Deg(i,k,day,week)>=0;
Deg(i,k,day,week)>= -((0.042*((BatC)/5000)+ ((1-Ef^2)/Ef)*our_Beta)...
*min(0,Av(i,k)*(POP(i,k,day,week) - MnAP(i,k,day,week)*ExU(k,day,week)-... RsRP(i,k,day,week)*ExR(k,day,week)))*(Comp(i,k)/Ef));
if Av(i,k)==1
if k==1
abs((sum(Av(i,1:k).*(MxAP(i,1:k,day,week).*ExD(1:k,day,week)' + POP(i,1:k,day,week) - MnAP(i,1:k,day,week).*ExU(1:k,day,week)' ...
- RsRP(i,1:k,day,week).*ExR(1:k,day,week)').*Comp(i,1:k) + ((-min(0,Av(i,1:k).*(POP(i,1:k,day,week) - MnAP(i,1:k,day,week).*ExU(1:k,day,week)'- ...
RsRP(i,1:k,day,week).*ExR(1:k,day,week)')).*(Comp(i,1:k)/Ef))*((1-Ef^2)/Ef)))*Ef + SOCI(i) -Trip(i,k)) - SOCI(i)) <= MP(i)/Ef
elseif k>1
abs((sum(Av(i,1:k).*(MxAP(i,1:k,day,week).*ExD(1:k,day,week)' + POP(i,1:k,day,week) - MnAP(i,1:k,day,week).*ExU(1:k,day,week)' ...
- RsRP(i,1:k,day,week).*ExR(1:k,day,week)').*Comp(i,1:k) + ((-min(0,Av(i,1:k).*(POP(i,1:k,day,week) - MnAP(i,1:k,day,week).*ExU(1:k,day,week)'- ...
RsRP(i,1:k,day,week).*ExR(1:k,day,week)')).*(Comp(i,1:k)/Ef))*((1-Ef^2)/Ef)))*Ef + SOCI(i) -Trip(i,k))-...
(sum(Av(i,1:k-1).*(MxAP(i,1:k-1,day,week).*ExD(1:k-1,day,week)' + POP(i,1:k-1,day,week) - MnAP(i,1:k-1,day,week).*ExU(1:k-1,day,week)' ...
- RsRP(i,1:k-1,day,week).*ExR(1:k-1,day,week)').*Comp(i,1:k-1) + ((-min(0,Av(i,1:k-1).*(POP(i,1:k-1,day,week) - MnAP(i,1:k-1,day,week).*ExU(1:k-1,day,week)'...
- RsRP(i,1:k-1,day,week).*ExR(1:k-1,day,week)')).*(Comp(i,1:k-1)/Ef))*((1-Ef^2)/Ef)))*Ef + SOCI(i) -Trip(i,k-1))) <= MP(i)/Ef
end
end
end
end
end
end
cvx_end