Warning: Solver not applicable (gurobi does not support signomial constraints)
回答済み% 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
サインインしてコメントを残してください。
コメント
1件のコメント