在MATLAB中用yalmip工具箱+gurobi求解器求解规划问题时,原本计划用if语句时,遇到非线性的计算,这句应该是有问题(implies(d(1,t),[scr(t)/116-(p_old(t))<=Y4(t),S(t)==scr_obs(t)+scr(t)-116*(p_old(t))-116*Y4(t)]);),不会处理了
变量类型如下:
T为整型变量,st为限制条件
scr、scr_obs、scr、p_old为double类型变量
Y4、S、Y3、Y5为sdpvar型变量
代码如下:
st=[];
d = binvar(2,T);
for t = 1:T
st = [st,sum(d(:,t)) == 1,
implies(d(1,t),[scr(t)/116-(p_old(t))<=Y4(t),S(t)==scr_obs(t)+scr(t)-116*(p_old(t))-116Y4(t)]);
implies(d(2,t),[scr(t)/116-(p_old(t))>=Y4(t),S(t)==scr_obs(t)])];
end
st = [st, Y3<=S];
Y5=Y3+sum(Y4116);
你没弄明白你的具体意图