求求大佬们帮忙看看这个模拟退火算法哪里出错了,输出的都是0

clear

clc

%生成初始解

sol_new1=0;%(1)解空间(初始解)
sol_new2=0;
sol_new3=0;
sol_new4=0;
sol_new5=0;
sol_new6=0;
sol_new7=0;
sol_new8=0;
sol_new9=0;
sol_new10=0;
sol_new11=0;
sol_new12=0;
sol_new13=0;
sol_new14=0;
sol_new15=0;
sol_new16=0;
sol_current1 = sol_new1;

sol_best1 = sol_new1;

sol_current2 = sol_new2;

sol_best2 = sol_new2;
sol_current3 = sol_new3;

sol_best3 = sol_new3;

sol_current4 = sol_new4;

sol_best4 = sol_new4;

sol_current5 = sol_new5;

sol_best5 = sol_new5;

sol_current6 = sol_new6;

sol_best6 = sol_new6;

sol_current7 = sol_new7;

sol_best7 = sol_new7;

sol_current8 = sol_new8;

sol_best8 = sol_new8;

sol_current9 = sol_new9;

sol_best9 = sol_new9;

sol_current10 = sol_new10;

sol_best10 = sol_new10;

sol_current11 = sol_new11;

sol_best11 = sol_new11;

sol_current12 = sol_new12;

sol_best12 = sol_new12;

sol_current13 = sol_new13;

sol_best13 = sol_new13;

sol_current14 = sol_new14;

sol_best14 = sol_new14;

sol_current15 = sol_new15;

sol_best15 = sol_new15;

sol_current16 = sol_new16;

sol_best16 = sol_new16;

E_current = inf;

E_best = inf;

rand('state',sum(clock)); %初始化随机数发生器

t=90; %初始温度

tf=89.9; %结束温度

a = 0.99; %温度下降比例

while t>=tf%(7)结束条件

for r=1:1000 %退火次数

    %产生随机扰动(3)新解的产生  
    sol_new1=sol_new1+rand*0.2;  
    sol_new2=sol_new2+rand*0.2;
    sol_new3=sol_new3+rand*0.2; 
    sol_new4=sol_new4+rand*0.2; 
    sol_new5=sol_new5+rand*0.2; 
    sol_new6=sol_new6+rand*0.2; 

sol_new7=sol_new7+rand*0.2;
sol_new8=sol_new8+rand*0.2;
sol_new9=sol_new9+rand*0.2;
sol_new10=sol_new10+rand*0.2;
sol_new11=sol_new11+rand*0.2;
sol_new12=sol_new12+rand*0.2;
sol_new13=sol_new13+rand*0.2;
sol_new14=sol_new14+rand*0.2;
sol_new15=sol_new15+rand*0.2;
sol_new16=sol_new16+rand*0.2;

%检查是否满足约束

if 0.040208*sol_new4+0.040208*sol_new5+0.104208*sol_new7+1.430208*sol_new9-0.20979*sol_new10-0.20979*sol_new11+95.73021*sol_new12+1.430208*sol_new13+1.430208*sol_new14+29.73021*sol_new15+22.29944*sol_new16<=8043.321537 && -0.062691*sol_new4-0.062691*sol_new5-0.126691*sol_new7-1.452691*sol_new9+0.18731*sol_new10+0.18731*sol_new11-95.75269*sol_new12-1.452691*sol_new13-1.452691*sol_new14+29.75269*sol_new15+22.32192*sol_new16<=6422.337753 && 28.35672*sol_new8+64.75672*sol_new9+64.75672*sol_new13+64.75672*sol_new14>=118394.2 && 28.37923*sol_new8+64.77923*sol_new9+64.77923*sol_new13+64.77923*sol_new14<=116771.2 && sol_new1>=0 && sol_new2>=0 && sol_new3>=0 && sol_new4>=0 && sol_new5>=0 && sol_new6>=0 && sol_new7>=0 && sol_new8>=0 && sol_new9>=0 && sol_new10>=0 && sol_new11>=0 && sol_new12>=0 && sol_new13>=0 && sol_new14>=0 && sol_new15>=0 && sol_new16>=0

else

sol_new1=sol_new1+rand*0.2;

sol_new2=sol_new2+rand*0.2;
sol_new3=sol_new3+rand*0.2;
sol_new4=sol_new4+rand*0.2;
sol_new5=sol_new5+rand*0.2;
sol_new6=sol_new6+rand*0.2;
sol_new7=sol_new7+rand*0.2;
sol_new8=sol_new8+rand*0.2;
sol_new9=sol_new9+rand*0.2;
sol_new10=sol_new10+rand*0.2;
sol_new11=sol_new11+rand*0.2;
sol_new12=sol_new12+rand*0.2;
sol_new13=sol_new13+rand*0.2;
sol_new14=sol_new14+rand*0.2;
sol_new15=sol_new15+rand*0.2;
sol_new16=sol_new16+rand*0.2;

continue;

end

    %退火过程  
    E_new=350000*sol_new1+6500*sol_new2+350000*sol_new3+205000*sol_new4+205000*sol_new5+11800+sol_new6+1000*sol_new7+8500*sol_new8+7600*sol_new9+6000*sol_new11+4600*sol_new12+8150*sol_new13+6150*sol_new14+6100*sol_new15+40000*sol_new16;%(2)目标函数  
    if E_new<E_current%(5)接受准则  
            E_current=E_new;  
            sol_current1=sol_new1;  
                sol_current2=sol_new2; 
                sol_current3=sol_new3;

sol_current4=sol_new4;
sol_current5=sol_new5;
sol_current6=sol_new6;
sol_current7=sol_new7;
sol_current8=sol_new8;
sol_current9=sol_new9;
sol_current10=sol_new10;
sol_current11=sol_new11;
sol_current12=sol_new12;
sol_current13=sol_new13;
sol_current14=sol_new14;
sol_current15=sol_new15;
sol_current16=sol_new16;
if E_new<E_best

%把冷却过程中最好的解保存下来

E_best=E_new;

sol_best1=sol_new1;

sol_best2=sol_new2;

sol_best3=sol_new3;

sol_best4=sol_new4;

sol_best5=sol_new5;

sol_best6=sol_new6;

sol_best7=sol_new7;

sol_best8=sol_new8;

sol_best9=sol_new9;

sol_best10=sol_new10;

sol_best11=sol_new11;

sol_best12=sol_new12;

sol_best13=sol_new13;

sol_best14=sol_new14;

sol_best15=sol_new15;

sol_best16=sol_new16;

end

else

if rand<exp(-(E_new-E_current)/t)%(4)代价函数差

E_current=E_new;

sol_current1=sol_new1;

sol_current2=sol_new2;
sol_current3=sol_new3;
sol_current4=sol_new4;
sol_current5=sol_new5;
sol_current6=sol_new6;
sol_current7=sol_new7;
sol_current8=sol_new8;
sol_current9=sol_new9;
sol_current10=sol_new10;
sol_current11=sol_new11;
sol_current12=sol_new12;
sol_current13=sol_new13;
sol_current14=sol_new14;
sol_current15=sol_new15;
sol_current16=sol_new16;

else

sol_new1=sol_current1;

sol_new2=sol_current2;
sol_new3=sol_current3;
sol_new4=sol_current4;
sol_new5=sol_current5;
sol_new6=sol_current6;
sol_new7=sol_current7;
sol_new8=sol_current8;
sol_new9=sol_current9;
sol_new10=sol_current10;
sol_new11=sol_current11;
sol_new12=sol_current12;
sol_new13=sol_current13;
sol_new14=sol_current14;
sol_new15=sol_current15;
sol_new16=sol_current16;

end

end

plot(r,E_best,'*')

hold on

end

t=t*a;%(6)降温

end

disp('最优解为:')

disp(sol_best1)

disp(sol_best2)
disp(sol_best3)
disp(sol_best4)
disp(sol_best5)
disp(sol_best6)
disp(sol_best7)
disp(sol_best8)
disp(sol_best9)
disp(sol_best10)
disp(sol_best11)
disp(sol_best12)
disp(sol_best13)
disp(sol_best14)
disp(sol_best15)
disp(sol_best16)
disp('目标表达式的最小值等于:')

disp(E_best)