⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sa.m

📁 用模拟退火算法求解连续优化问题的MATLAB程序
💻 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 + -