matlab使用yamlip报错

运行时报了下面的错误
错误使用 compileinterfacedata (line 1061)
You have NaNs in your constraints!. Read more: https://yalmip.github.io/naninmodel/

出错 solvesdp (line 231)
[interfacedata,recoverdata,solver,diagnostic,F,Fremoved,ForiginalQuadratics] =
compileinterfacedata(F,[],logdetStruct,h,options,0,solving_parametric);

出错 Untitled3 (line 80)
r=solvesdp(st,obj,ops);

看了别的文章说是把sdpvar赋值给了double类型,但不知道是不是这个问题,不知道该怎么改
具体代码是下面


T=24; %定义调度时段
Lmax=1500;
Lmin=0;
nw=0.5;
npv=0.5;
nwmc=0.029;
npvmc=0.025;
Dbuy=[0.35, 0.35, 0.35, 0.35, 0.35, 0.35, 0.35, 0.35, 0.87, 0.87, 0.87, 0.35, 0.35, 0.87, 0.87, 0.87, 0.87, 0.87, 0.87, 1.16, 1.16, 1.16, 0.35, 0.35];
Pl0=[1306.90 ,1368.58 ,1321.60 ,1474.66 ,1414.95 ,1525.90 ,1432.76 ,1504.77 ,1555.63 ,1552.64 ,1551.49 ,1651.05 ,1563.95 ,1649.42 ,1637.15 ,1712.35 ,1740.20 ,1844.76,1860.16,1899.36 ,1786.16 ,1692.58 ,1554.26 ,1519.26 ];
Pw=[714.04,671.6,687.84,673.24,641.78,637.12,610.82,573.2,569.84,530.38,455.28,276.79,319.22,255.1,242.5,358.2,466.38,513.54,621.36,597.96,621.66,640.14,667.42,659.84];
Ppv=[0,0,0,0,0,0,7.95,182.75,580,810.25,937.5,935,660,325.75,103.25,1.59,0,0,0,0,0,0,0,0];
nco2=[0.571267016,0.536828753,0.525166667,0.525031185,0.530546218,0.486323957,0.536741463,0.501413359,0.517093845,0.548874735,0.45426025,0.52123839,0.534353448,0.541059459,0.540084926,0.636137625,0.767340659,0.873252033,0.894365325,0.900590717,0.901502646,0.883884298,0.834160263,0.895483871];

%变量
Plinebuy = sdpvar(1,T);%联络线功率
Pwd= sdpvar(1,T);%风电弃风功率
Ppvd= sdpvar(1,T);%光伏弃光功率
Pwcost= sdpvar(1,T);%弃风惩罚成本
Ppvcost= sdpvar(1,T);%弃风惩罚成本
Pco2cost= sdpvar(1,T);%co2排放费用
Pmccost= sdpvar(1,T);%系统运维成本Pw2l[t]
Pw2l= sdpvar(1,T);%风电供给负荷功率
Pw2line= sdpvar(1,T');%风电卖给联络线
Ppv2line= sdpvar(1,T);%光伏卖给联络线
Ppv2l= sdpvar(1,T);%光伏供给负荷
wd = sdpvar(1,1);%风电弃风率
CO2 = sdpvar(1,1) ;%二氧化碳排放数据
Buy = sdpvar(1,1);%购能费用
pvd = sdpvar(1,1);%光伏弃光率
Pbuycost = sdpvar(1,T);%购能费用
Psell = sdpvar(1,T);%售能费用

%约束条件
st = [];
for t = 1 : T %弃风弃光惩罚成本
    st=[st,Pwcost(t)==Pwd(t)*nw]; %#ok<*AGROW>
    st=[st,Ppvcost(t)==Ppvd(t)*npv];%弃风惩罚成本
end
for t = 1 : T %运维成本
    st=[st,Pmccost(t)==Pw(t)*nwmc+Ppv(t)*npvmc];
    st=[st,Pbuycost(t)==Plinebuy(1,t)*Dbuy(t)];
    st=[st,Psell(t)==(Ppv2line(t)+Pw2line(t))*Dbuy(t)];
end
for t = 1 : T %二氧化碳排放成本
    st=[st,Pco2cost(t)==Plinebuy(t)*nco2(t)];
end
%惩罚成本
for t=1:T
    st=[st,CO2==sum(Pco2cost(t)),Buy==sum(Pbuycost(t))];
end
for t = 1 : T %联络线传输约束
    st=[st,Lmin<=Plinebuy(t)<=Lmax];
end
for t = 1 : T %联络线传输上下限 风电出力上下限约束
    st=[st,Pw(t)==Pw2l(t)+Pwd(t)+Pw2line(t)];
end
for t = 1 : T %光伏出力等式约束
    st=[st,Ppv(t)==Ppv2l(t)+Ppvd(t)+Ppv2line(t)];
end
for t = 1 : T %电功率平衡等式约束
    st=[st,Pl0(t)==Ppv2l(t)+Pw2l(t)+Plinebuy(t)];
end
for t=1:T
    st=[st,wd==Pwd(t)/sum(Pw(t))];
    st=[st,pvd==Ppvd(t)/sum(Ppv(t))];
end

for t = 1 : T 
    st=[st,Pwd(1,t)>=0,Ppvd(1,t)>=0,Pw(1,t)>=0,Ppv(1,t)>=0,Pw2l(1,t)>=0,Pw2line(1,t)>=0,Ppv2l(1,t)>=0,Ppvd(1,t)>=0;Ppv2line(1,t)>=0];
end

%目标函数
obj=0;
for t=1:T
   obj = Pco2cost(1,t)+Pmccost(1,t)+Pbuycost(1,t)-Psell(1,t)+Pwcost(1,t)+Ppvcost(1,t);
end
%设置求解器
ops=sdpsettings('solver','cplex','verbose',1);
%求解
r=solvesdp(st,obj,ops);
if result.problem==0
    objresult=value(obj)
else
    disp('求解错误')
end

我试了一下和你一样的报错,然后我又试了

open sdpvar

错误使用 open (line 86)
未找到文件 'sdpvar'
所以应该是库缺少函数了,可以去这里下载这个函数https://yalmip.github.io/download/
这里也有安装说明,https://yalmip.github.io/tutorial/installation/

st=NaN,包含了非数字,你把st输出看看