Warning: Solver not applicable (gurobi does not support signomial constraints)
Answered% Decision Variables
P_EV_one = sdpvar(Para.N_Node, Para.N_Time, 'full'); % Charging power per EV
P_EV_node = sdpvar(Para.N_Node, Para.N_Time, 'full'); % Total charging power per node
SOC_EV = sdpvar(Para.N_Node, Para.N_Time, 'full'); % SOC of EVs
Z_charge = binvar(Para.N_Node, Para.N_Time, 'full'); % Charging status
Z_end = binvar(Para.N_Node, Para.N_Time, 'full'); % Charging end time
max_load = sdpvar(1, 1); % Maximum load auxiliary variable
% Constraints
C = [];
% Node charging power
C = [C, P_EV_node == P_EV_one .* (Para.N_EV_EachNode * ones(1, Para.N_Time))];
% Charging duration constraints
for i = 1:Para.N_Node
% Link charging status to power
for t = 1:Para.N_Time
C = [C, P_EV_one(i,t) <= M_power * Z_charge(i,t)];
C = [C, P_EV_one(i,t) >= 0.001 * Z_charge(i,t)];
end
% Charging duration <= 5 hours
C = [C, sum(Z_charge(i,:)) <= 5];
% At least one charging slot
C = [C, sum(Z_charge(i,:)) >= 1];
end
% Charging end time definition
for i = 1:Para.N_Node
C = [C, sum(Z_end(i,:)) == 1];
C = [C, Z_end(i,1) <= Z_charge(i,1)];
for t = 1:(Para.N_Time-1)
C = [C, Z_end(i,t) <= Z_charge(i,t)];
C = [C, Z_end(i,t) <= 1 - Z_charge(i,t+1)];
end
C = [C, Z_end(i,Para.N_Time) <= Z_charge(i,Para.N_Time)];
end
% Enforce continuous charging
for i = 1:Para.N_Node
for t = 1:(Para.N_Time-1)
C = [C, Z_charge(i,t+1) >= Z_charge(i,t) - Z_end(i,t)];
end
end
% Power and SOC constraints
for t = 1:Para.N_Time
for i = 1:Para.N_Node
C = [C, 0 <= P_EV_one(i,t) <= Para.EV_Pmax(i)];
C = [C, Para.EV_SOCmin(i) * Para.EV_Cap(i) <= SOC_EV(i,t) <= Para.EV_SOCmax(i) * Para.EV_Cap(i)];
C = [C, SOC_EV(i,t) >= Para.EV_SOCexp(i) * Para.EV_Cap(i) - M * (1 - Z_end(i,t))];
end
end
% SOC update constraints
C = [C, SOC_EV(:,1) == Para.EV_SOCinit .* Para.EV_Cap];
for t = 1:(Para.N_Time-1)
C = [C, SOC_EV(:,t+1) == SOC_EV(:,t) + Para.EV_Eff .* P_EV_one(:,t) * Delta_t];
end
% Total energy constraint
for i = 1:Para.N_Node
C = [C, sum(P_EV_one(i,:).*Para.EV_Eff(i)) * Delta_t >= (Para.EV_SOCexp(i) - Para.EV_SOCinit(i)) * Para.EV_Cap(i)];
end
% Objective: Minimize maximum load
C = [C, sum(P_EV_node, 1)' + P_base <= max_load];
Objective = max_load;
% Solver settings
ops = sdpsettings('solver', 'gurobi', 'verbose', 2, 'debug', 1);
optimize(C, Objective, ops);
The above code keeps telling me this error “Warning: Solver not applicable (gurobi does not support signomial constraints)” , how can i solve it? Need help, Thanks!
-
Please have a look at this comment of a similar post.
I do not know if there have been updates in the meantime. But if you tested the latest versions, then YALMIP still does not support Gurobi's nonlinear features.0
Please sign in to leave a comment.
Comments
1 comment