《MATLAB智能算法30个案例》:第21章 模拟退火算法工具箱及应用
1. 前言
《MATLAB智能算法30个案例分析》是2011年7月1日由北京航空航天大学出版社出版的图书,作者是郁磊、史峰、王辉、胡斐。本书案例是各位作者多年从事算法研究的经验总结。书中所有案例均因国内各大MATLAB技术论坛网友的切身需求而精心设计,其中不少案例所涉及的内容和求解方法在国内现已出版的MATLAB书籍中鲜有介绍。《MATLAB智能算法30个案例分析》采用案例形式,以智能算法为主线,讲解了遗传算法、免疫算法、退火算法、粒子群算法、鱼群算法、蚁群算法和神经网络算法等最常用的智能算法的MATLAB实现。
本书共给出30个案例,每个案例都是一个使用智能算法解决问题的具体实例,所有案例均由理论讲解、案例背景、MATLAB程序实现和扩展阅读四个部分组成,并配有完整的原创程序,使读者在掌握算法的同时更能快速提高使用算法求解实际问题的能力。《MATLAB智能算法30个案例分析》可作为本科毕业设计、研究生项目设计、博士低年级课题设计参考书籍,同时对广大科研人员也有很高的参考价值。
《MATLAB智能算法30个案例分析》与《MATLAB 神经网络43个案例分析》一样,都是由北京航空航天大学出版社出版,其中的智能算法应该是属于神经网络兴起之前的智能预测分类算法的热门领域,在数字信号处理,如图像和语音相关方面应用较为广泛。本系列文章结合MATLAB与实际案例进行仿真复现,有不少自己在研究生期间与工作后的学习中有过相关学习应用,这次复现仿真示例进行学习,希望可以温故知新,加强并提升自己在智能算法方面的理解与实践。下面开始进行仿真示例,主要以介绍各章节中源码应用示例为主,本文主要基于MATLAB2015b(32位)平台仿真实现,这是本书第二十一章模拟退火算法工具箱及应用实例,话不多说,开始!
2. MATLAB 仿真示例
打开MATLAB,点击“主页”,点击“打开”,找到示例文件
选中my_first_SA_run.m,点击“打开”,my_first_SA_run.m源码如下:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能:模拟退火算法工具箱及应用示例
%环境:Win7,Matlab2015b
%Modi: C.S
%时间:2022-07-09
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 清空环境
clc
clear all
close all
tic
ObjectiveFunction = @my_first_SA; % Function handle to the objective function
X0 = [2.5 2.5]; % Starting point
lb = [-5 -5]; % Lower bound
ub = [5 5]; % Upper bound
options = saoptimset('MaxIter',500,'StallIterLim',500,'TolFun',1e-100,'AnnealingFcn',@annealingfast,'InitialTemperature',100,'TemperatureFcn',@temperatureexp,'ReannealInterval',500,'PlotFcns',{
@saplotbestx, @saplotbestf, @saplotx, @saplotf,@saplottemperature});
[x,fval] = simulannealbnd(ObjectiveFunction,X0,lb,ub,options);
toc
调用函数my_first_SA.m的源码如下:
function y = my_first_SA(x)
% y = (4 - 2.1*x(1)^2 + x(1)^4/3)*x(1)^2 + x(1)*x(2) + (-4 + 4*x(2)^2)*x(2)^2;
% Rastrigin's function
y = 20 + x(1)^2 + x(2)^2 - 10*(cos(2*pi*x(1))+cos(2*pi*x(2)));
添加完毕,点击“运行”,开始仿真,输出仿真结果如下:
Maximum number of iterations exceeded: increase options.MaxIter.
时间已过 34.819267 秒。
3. 小结
本专栏第19章,第20章都是基于模拟退火算法的相关示例,具体见文末链接。对本章内容感兴趣或者想充分学习了解的,建议去研习书中第二十一章节的内容。后期会对其中一些知识点在自己理解的基础上进行补充,欢迎大家一起学习交流。