📄 main_88.m
字号:
clc;clear;
figure(1);
Parameter_Sum=6;%从Parameter_Sum_All中找出参数个数为Parameter_Sum的最优组合
Para_Position=zeros(10,Parameter_Sum);
for kkk=1:1
[J_Yuan,Para_Position(kkk,:),Parameter_Sum_All]=wh_test_44(Parameter_Sum);
Max=J_Yuan;Max_1=Max;Max_2=Max;
Sample_Sum=wh_ZHS(Parameter_Sum_All,Parameter_Sum);% Step=Sample_Sum;
Temperature=100;Temperature_Initial=Temperature; Temperature_End=1;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=10000;
% else
% Sample_step_Point=1000;
% Sample_Sum_Step_End=20000;
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_44(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 + -