📄 sa.m
字号:
%1.参数初始化
x0=[1 1]; %初始解
T0=10000; %初始温度
a=0.9;
n=1; %n表示外循环次数
m=100; %m表示外循环次数
x1=x0; %x1代表当前最优解
T=T0; %T代表当前温度
%2.循环迭代
while T>0.01
for i=1:m
f1=f(x1);
x2(1)=x1(1)+0.1*(rand-0.5);
x2(2)=x1(2)+0.1*(rand-0.5);
f2=f(x2);
if (f2-f1)<0
x1=x2;
elseif exp((f1-f2)/T)>rand
x1=x2;
end
end
c_obj(n)=f(x1); %记录当前最优目标函数值
n=n+1;
T=a*T; %温度更新函数
end
%3.输出结果
f1=f(x1); %计算最终目标函数值
disp('The result is:')
disp(x1)
disp('The final result of objective function is:')
disp(f1)
%4.绘图
t=1:n-1;
plot(t,c_obj,':');
xlabel('迭代次数');
ylabel('函数值');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -