📄 main_88.asv
字号:
clc;clear;
figure(1);
Para_Position=zeros,:)
for kkk=1:10
Parameter_Sum=4;%从Parameter_Sum_All中找出参数个数为Parameter_Sum的最优组合
[J_Yuan,Para_Position(kkk,:),Parameter_Sum_All]=wh_test(Parameter_Sum);
Max=J_Yuan;Max_1=Max;Max_2=Max;
Sample_Sum=wh_ZHS(Parameter_Sum_All,Parameter_Sum);% Step=Sample_Sum;
Temperature=5000;Temperature_Initial=Temperature; Temperature_End=0.05;Decline=0.8;
Temp_step=1;Sample_step=1;step=1;
Max_1_Max=0;Max_2_Max=0;
Temp_step_Point=round((Temperature_Initial-Temperature_End)/10);%将温度起点和终点分为10段,每段的两个端点都是采样点
if (Temp_step_Point<2)
Temp_step_Point=2;
end
if (Sample_Sum<=100)
Sample_step_Point=Sample_Sum;%在样本中每两个采样点间的间隔最小为Sample_Sum
Sample_Sum_Step_End=100;
elseif and((Sample_Sum>100),(Sample_Sum<=10000))
Sample_step_Point=round(Sample_Sum/10);
Sample_Sum_Step_End=Sample_Sum*2;
else
Sample_step_Point=1000;
Sample_Sum_Step_End=Sample_Sum;
end
while ~(Temperature<Temperature_End)
Temp_step=Temp_step+1;
if (Temp_step==Temp_step_Point)
if (Max_1==Max)
Max_1_Max=1;%说明在没降到Temperature_End时就已经退出循环了
break;%如果两个采样点的值相同,那末认为已经找到最优解,退出循环
else
Temp_step=1;%如果不相同,继续降温Temperature=Temperature*Decline;
end
end
% for step=1:Step%在每个温度下平衡条件
Max_2_Max=0;
while ~(step>Sample_Sum_Step_End)
Sample_step=Sample_step+1;
if (Sample_step==Sample_step_Point)
if (Max_2==Max)
Max_2_Max=1;%说明在没到(step>Sample_Sum_Step_End)时就已经退出循环了
break;%如果两个采样点的值相同,那末认为已经达到该温度下的平衡,退出while (step>Sample_Sum_Step_End)循环
else
Sample_step=1;%如果不相同,继续采样
end
end
[J_Xin,P]= wh_test(Parameter_Sum);
D=J_Xin-J_Yuan;
% D=D*10^5;
if J_Xin>=J_Yuan
Max=J_Xin;
J_Yuan=J_Xin;
Para_Position(kkk,:)=P;
if (Sample_step==1)
Max_2=Max;
end%(Sample_step==1)
if (Temp_step==1)
Max_1=Max;
end%(Temp_step==1)
else
Edge=rand(1);
if exp(D/Temperature)>Edge
Max=J_Yuan;
if (Sample_step==1)
Max_2=Max;
end%(Sample_step==1)
if (Temp_step==1)
Max_1=Max;
end%if (Temp_step==1)
end%---if exp(D/Temperature)>Edge
end%-----if J_Xin>=J_Yuan
step=step+1;
end%while (step>Sample_Sum)
% end%---Step
Temperature=Temperature*Decline;
end%---while ~(Temperature<1)
MAX(kkk)=Max;end %kkk
Max=max(MAX);
figure(1);
title 'Finished';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -