程序一再提示缺失值错误,给点建议!
proc ga seed=12345 maxiter = 30;/*启动遗传算法*/
function y(selected
);
array x[6] /nosym;/*六参数变量*/
call ReadMember(selected,1,x);
x1=x[1];
x2=x[2];
x3=x[3];
x4=x[4];
x5=x[5];
x6=x[6];
/*定义数组*/
array w1{22};
array Cldirpr{22};
array c{22,38};
array t{22,38};
array sum1{22,38};
array sum2{22};
/*输入初始数据*/
Cldirpr[1]=114.85;
Cldirpr[2]=116.6;
Cldirpr[3]=98.48;
Cldirpr[4]=94.62;
Cldirpr[5]=96.66;
Cldirpr[6]=92.09;
Cldirpr[7]=89.13;
Cldirpr[8]=89.67;
Cldirpr[9]=94.16;
Cldirpr[10]=86;
Cldirpr[11]=90.71;
Cldirpr[12]=77.36;
Cldirpr[13]=95.96;
Cldirpr[14]=92.5;
Cldirpr[15]=90.65;
Cldirpr[16]=80.64;
Cldirpr[17]=89.69;
Cldirpr[18]=87.26;
Cldirpr[19]=93.7;
Cldirpr[20]=99.92;
Cldirpr[21]=101.04;
Cldirpr[22]=99.97;
w1[1]=0.041971;
w1[2]=0.06284;
w1[3]=0.061298;
w1[4]=0.048207;
w1[5]=0.053486;
w1[6]=0.029016;
w1[7]=0.041167;
w1[8]=0.038811;
w1[9]=0.048087;
w1[10]=0.03854;
w1[11]=0.047836;
w1[12]=0.031245;
w1[13]=0.053271;
w1[14]=0.044165;
w1[15]=0.044041;
w1[16]=0.027272;
w1[17]=0.044041;
w1[18]=0.036816;
w1[19]=0.041431;
w1[20]=0.048634;
w1[21]=0.042047;
w1[22]=0.041971;
c[1,1]=11.83;c[1,2]=111.83;
do j=3 to 37;
c[1,j]=c[1,j+1]=0;
end;
c[2,1]=c[2,2]=9.78;c[2,3]=109.78;
do j=4 to 37;
c[2,j]=c[2,j+1]=0;
end;
c[3,1]=c[3,2]=c[3,3]=c[3,4]=3.28;c[3,5]=103.28;
do j= 6 to 37;
c[3,j]=c[3,j+1]=0;
end;
c[4,1]=c[4,2]=c[4,3]=c[4,4]=3.3;c[4,5]=103.3;
do j= 6 to 37;
c[4,j]=c[4,j+1]=0;
end;
c[5,1]=c[5,2]=c[5,3]=3.27;c[5,4]=103.27;
do j=5 to 37;
c[5,j]=c[5,j+1]=0;
end;
do j =1 to 32;
c[6,j]=c[6,j+1]=2.13;
end;
c[6,34]=102.13;c[6,35]=c[6,36]=c[6,37]=c[6,38]=0;
c[7,1]=c[7,2]=c[7,3]=c[7,4]=c[7,5]=c[7,6]=2.95;c[7,7]=102.95;
do j= 8 to 37;
c[7,j]=c[7,j+1]=0;
end;
c[8,1]=c[8,2]=c[8,3]=c[8,4]=c[8,5]=c[8,6]=c[8,7]=3.05;c[8,8]=103.05;
do j= 9 to 37;
c[8,j]=c[8,j+1]=0;
end;
c[9,1]=c[9,2]=c[9,3]=c[9,4]=3;c[9,5]=103;
do j =6 to 37;
c[9,j]=c[9,j+1]=0;
end;
c[10,1]=c[10,2]=c[10,3]=c[10,4]=c[10,5]=c[10,6]=c[10,7]=2.53;c[10,8]=102.53;
do j = 9 to 37;
c[10,j]=c[10,j+1]=0;
end;
c[11,1]=c[11,2]=c[11,3]=c[11,4]=2.39;c[11,5]=102.39;
do j =6 to 37;
c[11,j]=c[11,j+1]=0;
end;
do j =1 to 24;
c[12,j]=c[12,j+1]=1.3;
end;
c[12,26]=101.3;
do j= 27 to 37;
c[12,j]=c[12,j+1]=0;
end;
c[13,1]=c[13,2]=2.65;c[13,3]=102.65;
do j = 4 to 37;
c[13,j]=c[13,j+1]=0;
end;
c[14,1]=c[14,2]=c[14,3]=c[14,4]=c[14,5]=2.93;c[14,6]=102.93;
do j = 7 to 37;
c[14,j]=c[14,j+1]=0;
end;
c[15,1]=c[15,2]=c[15,3]=c[15,4]=c[15,5]=2.66;c[15,6]=102.66;
do j = 7 to 37;
c[15,j]=c[15,j+1]=0;
end;
do j =1 to 36;
c[16,j]=c[16,j+1]=1.7;
end;
c[16,38]=101.7;
c[17,1]=c[17,2]=c[17,3]=c[17,4]=c[17,5]=2.66;c[17,6]=102.66;
do j = 7 to 37;
c[17,j]=c[17,j+1]=0;
end;
c[18,1]=c[18,2]=c[18,3]=c[18,4]=c[18,5]=c[18,6]=c[18,7]=c[18,8]=3.02;c[18,9]=103.2;
do j= 10 to 37;
c[18,j]=c[18,j+1]=0;
end;
c[19,1]=c[19,2]=c[19,3]=c[19,4]=c[19,5]=c[19,6]=3.5;c[19,7]=103.5;
do j=8 to 37;
c[19,j]=c[19,j+1]=0;
end;
c[20,1]=c[20,2]=c[20,3]=c[20,4]=4.4164;c[20,5]=104.4164;
do j= 6 to 37;
c[20,j]=c[20,j+1]=0;
end;
c[21,1]=c[21,2]=c[21,3]=c[21,4]=c[21,5]=c[21,6]=4.89;c[21,7]=104.89;
do j=8 to 37;
c[21,j]=c[21,j+1]=0;
end;
c[22,1]=c[22,2]=c[22,3]=c[22,4]=c[22,5]=c[22,6]=4.71;c[22,7]=104.71;
do j=8 to 37;
c[22,j]=c[22,j+1]=0;
end;
t[1,1]=0.713889;t[1,2]=1.713889;
do j= 3 to 37;
t[1,j]=t[1,j+1]=0;
end;
t[2,1]=0.938889;t[2,2]=1.938889;t[2,3]=2.938889;
do j= 4 to 37;
t[2,j]=t[2,j+1]=0;
end;
t[3,1]=0.897222;t[3,2]=1.897222;t[3,3]=2.987222;
do j= 4 to 37;
t[3,j]=t[3,j+1]=0;
end;
t[4,1]=0.988889;t[4,2]=1.988889;t[4,3]=2.988889;t[4,4]=3.988889;t[4,5]=4.988889;
do j =6 to 37;
t[4,j]=c[4,j+1]=0;
end;
t[5,1]=0.575;t[5,2]=1.575;t[5,3]=2.575;t[5,4]=3.575;
do j =5 to 37;
t[5,j]=c[5,j+1]=0;
end;
t[6,1]=0.344444;
do j = 1 to 33;
t[6,j]+0.5=t[6,j+1];
end;
t[6,35]=t[6,36]=t[6,37]=t[6,38]=0;
t[7,1]=0.994444;t[7,2]=1.994444;t[7,3]=2.994444;t[7,4]=3.994444;t[7,5]=4.994444;t[7,6]=5.994444;t[7,7]=6.994444;
do j=8 to 37;
t[7,j]=t[7,j+1]=0;
end;
t[8,1]=0.091667;t[8,2]=1.091667;t[8,3]=2.091667;t[8,4]=3.091667;t[8,5]=4.091667;t[8,6]=5.091667;t[8,7]=6.091667;t[8,8]=7.091667;
do j= 9 to 37;
t[8,j]=t[8,j+1]=0;
end;
t[9,1]=0.225;t[9,2]=1.225;t[9,3]=2.225;t[9,4]=3.225;t[9,5]=4.225;
do j= 6 to 37;
t[9,j]=t[9,j+1]=0;
end;
t[10,1]=0.558333;t[10,2]=1.558333;t[10,3]=2.558333;t[10,4]=3.558333;t[10,5]=4.558333;t[10,6]=5.558333;t[10,7]=6.558333;t[10,8]=7.558333;
do j= 9 to 37;
t[10,j]=t[10,j+1]=0;
end;
t[11,1]=0.886111;t[11,2]=1.886111;t[11,3]=2.886111;t[11,4]=3.886111;t[11,5]=4.886111;
do j=6 to 37;
t[11,j]=t[11,j+1]=0;
end;
t[12,1]=0.480556;
do j=1 to 25;
t[12,j]+0.5=t[12,j+1];
end;
do j=27 to 37;
t[12,j]=t[12,j+1]=0;
end;
t[13,1]=0.075;t[13,2]=1.075;t[13,3]=2.075;t[13,4]=3.075;
do j=5 to 37;
t[13,j]=t[13,j+1]=0;
end;
t[14,1]=0.191667;t[14,2]=1.191667;t[14,3]=2.191667;t[14,4]=3.191667;t[14,5]=4.191667;t[14,6]=5.191667;
do j=7 to 37;
t[14,j]=t[14,j+1]=0;
end;
t[15,1]=0.394444;t[15,2]=1.394444;t[15,3]=2.394444;t[15,4]=3.394444;t[15,5]=4.394444;t[15,6]=5.394444;
do j=7 to 37;
t[15,j]=t[15,j+1]=0;
end;
t[16,1]=0.0555556;
do j=1 to 37;
t[16,j]+0.5=t[16,j+1];
end;
t[17,1]=0.897222;t[17,2]=1.897222;t[17,3]=2.897222;t[17,4]=3.897222;t[17,5]=4.897222;t[17,6]=5.897222;
do j= 7 to 37;
t[17,j]=t[17,j+1]=0;
end;
t[18,1]=0.972222;t[18,2]=1.972222;t[18,3]=2.972222;t[18,4]=3.972222;t[18,5]=4.972222;t[18,6]=5.972222;t[18,7]=6.972222;t[18,8]=7.972222;t[18,9]=8.972222;
do j=10 to 37;
t[18,j]=t[18,j+1]=0;
end;
t[19,1]=0.144444;t[19,2]=1.144444;t[19,3]=2.144444;t[19,4]=3.144444;t[19,5]=4.144444;t[19,6]=5.144444;t[19,7]=6.144444;
do j=8 to 37;
t[19,j]=t[19,j+1]=0;
end;
t[20,1]=0.561111;t[20,2]=1.561111;t[20,3]=2.561111;t[20,4]=3.561111;t[20,5]=4.561111;
do j= 6 to 37;
t[20,j]=t[20,j+1]=0;
end;
t[21,1]=0.661111;t[21,2]=1.661111;t[21,3]=2.661111;t[21,4]=3.661111;t[21,5]=4.661111;t[21,6]=5.661111;t[21,7]=6.661111;
do j= 8 to 37;
t[21,j]=t[21,j+1]=0;
end;
t[22,1]=0.911111;t[22,2]=1.911111;t[22,3]=2.911111;t[22,4]=3.911111;t[22,5]=4.911111;t[22,6]=5.911111;t[22,7]=6.911111;
do j=8 to 37;
t[22,j]=t[22,j+1]=0;
end;
/*初始数据输入完毕*/
do i=1 to 21;
do j=1 to 37;
sum1[1,1]=c[1,1]*exp(-t[1,1]*(x1+(x2+x3)*(1-exp(-t[1,1]/x5))/(t[1,1]/x5)-x3*exp(-t[1,1]/x5)+x4*(1-exp(-t[1,1]/x6))/(t[1,1]/x6)-x4*exp(-t[1,1]/x6)));
sum2[1]=(Cldirpr[1]-sum1[1,38])**2*w1[1];
/*目标函数*/
sum1[i,j+1]=sum1[i,j]+c[i,j+1]*exp(-t[i,j+1]*(x1+(x2+x3)*(1-exp(-t[i,j+1]/x5))/(t[i,j+1]/x5)-x3*exp(-t[i,j+1]/x5)+x4*(1-exp(-t[i,j+1]/x6))/(t[i,j+1]/x6)-x4*exp(-t[i,j+1]/x6)));
sum2[i+1]=sum2+(Cldirpr[i+1]-sum1[i+1,38])**2*w1[i+1];
end;
end;
result =sum2[22];
return(result);
endsub;
call SetEncoding('R6');
array LowerBound[6] /nosym (0.086 -0.086 -0.109 0.042 9 2.2);/*参数下界*/
array UpperBound[6] /nosym (0.094 -0.076 -0.098 0.054 12 4);/*参数上界*/
call SetBounds(LowerBound, UpperBound);
call SetObjFunc('y',0);/*最小化目标函数*/
call SetCrossProb(0.65);
call SetCrossArithmetic();/*算术交叉*/
call SetMutProb(0.05);/*变异概率*/
array delta[6] /nosym (0.2 0.2 0.2 0.2 0.2 0.2);
call SetMutDelta(delta,1);
call SetSelTournament(2);
call SetElite(2);
call Initialize('DEFAULT',120);
run;
quit;