启发式算法
[x,fval,exitflag,output] = simulannealbnd(@dejong5fcn,[0,0])
Optimization terminated: change in best function value less than options.TolFun. x = -15.9669 -31.9749 fval = 1.9920 exitflag = 1 output = iterations: 1608 funccount: 1621 message: [1x80 char] randstate: [625x1 uint32] randnstate: [2x1 double] problemtype: 'unconstrained' temperature: [2x1 double] totaltime: 0.8268
1.2 计算复杂性的概念
例:TSP枚举法的基本计算量是n!,随着n的 增加,计算量急剧增加。
算法复杂性分析 NP问题
组合优化问题的特点:
•这些问题描述非常简单,并且有很强的工程代表 性,但最优化求解很困难; •其主要原因是求解这些问题的算法需要极长的运 行时间与极大的存储空间,以致根本不可能在现 有计算机上实现,即所谓的“组合爆炸”。 兼顾解的质量以及运行时间的较好算法: (1)设计平均形态良好的概率算法 (2)设计求近似最优解的近似算法
• 一般模型 目标函数 约束函数
min f ( x)
s.t. g ( x) 0, x D.
D是有限个点 构成的集合
经典的组合优化问题: • • • • • 0-1背包问题(Knapsack Problem) 加工调度问题(Scheduling Problem) 旅行商问题(Travelling Salesman Problem--TSP) 装箱问题(Bin Packing Problem) 图着色问题(Graph Coloring Problem)
3)冷却进度T(t)
冷却进度表是指从某一高温状态T0向低温状态冷 却时的降温管理表。 假设时刻t的温度用T(t)表示,则经典模拟退火算法 的降温方式为:
T0 T (t ) lg(1 t )
而快速模拟退火算法的降温方式为:
T0 T (t ) 1 t
这两种方式都能使模拟退火算法收敛。
4)初始温度T0 实验表明,初温越大,获得高质量解的几率越大, 但花费的计算时间将增加。因此,初温的确定应 折中考虑优化质量和优化效果。
options = saoptimset('PlotFcns',{@saplotbestf,@saplottemperature, @saplotf,@saplotstopping}); simulannealbnd(@dejong5fcn,x0,lb,ub,options);
options = saoptimset('InitialTemperature',[300 50]);
相关函数:
[x, fval] = threshacceptbnd(@objfun, x0)
3.3 模拟退火算法要素
1)状态空间与状态生成函数(邻域函数)
•搜索空间(状态空间):由经过编码的可行解的 集合所组成
•状态生成函数(邻域函数)应尽可能保证产生的 候选解遍布全部解空间。通常由两部分组成,即产 生候选解的方式和候选解产生的概率分布 •候选解一般采用按照某一概率密度函数对解空间 进行随机采样来获得 •概率分布可以是均匀分布、正态分布、指数分布 等等
1.3 邻域结构与局部最优
如何求解全局最优解?
二.启发式算法
•基于直观或经验构造的算法,在可接受的花费 (时间、空间)下,给出待解决优化问题每个 实例的一个可行解,该可行解与最优解的偏差 不一定事先可以估计。
•启发式算法是一种技术,在可接受的计算费用 内去寻找最好的解,但不一定能保证解的可行 性与最优性,多数情况下无法描述该解与最优 解的近似程度。
fun = @(x) 3*sin(x(1))+exp(x(2)); x = simulannealbnd(fun,[1;1],[0 0])
Optimization terminated: change in best function value less than options.TolFun. x= 896.9234 0.0000
iii) 如果 E 0, 则 xbest xnew ; iv)如果 E 0, 则如果
exp(E / t ) random[0,1], xbest xnew ,
否则 xbest xbest .
v)end for
4)降温 t * t 5)end while 6)输出当前最优点,计算结束。
启发式算法
一、组合优化问题 二、启发式算法
三、模拟退火算法
四、遗传算法
一.组合优化问题
1.1 组合优化问题的基本概念 • 解决离散的优化问题运筹学分支。通过 对数学方法的研究去寻找离散事件的最优 编排、分组、次序或筛选等,可以涉及信 息技术、经济管理、工业工程、交通运输 和通信网络等诸多领域。
dejong5fcn
x0 = [0 0]; [x,fval] = simulannealbnd(@dejong5fcn,x0)
Optimization terminated: change in best function value less than options.TolFun. x= 0.0216 -31.9955 fval = 2.9821
5)内循环终止准则 或称Metropolis抽样稳定准则,用于决定在各温 度下产生候选解的数目。
6)外循环终止准则
即算法终止准则,常用的包括:
•设置终止温度的阀值 •设置外循环迭代次数 •算法搜索到的最优值连续若干步保持不变 •检查系统熵是否稳定
3.4 模拟退火算法实验性能分析:
1)模拟退火法与局部搜索算法的差异
•速度快
•多数情况下,程序简单,易于修改
•不能保证求得最优解
•表现不稳定 •算法的好坏依赖于实际问题、经验和设计者的技术
启发式算法的分类
•一步算法
•改进算法
•数学规划算法
•解空间松弛算法
•现代优化算法
现代优化算法:上世纪80年代初兴起
•禁忌搜索(tabu search)
•模拟退火(simulated annealing)
三.模拟退火算法
(simulated annealing algorithm)
3.1 起源:固体退火过程
1983,Kirkpatrick成功应用于组合优化问题
类比:
组合优化问题 解 最优解 费用函数 金属物体 状态 能量最低的状态 能量
3.2 模拟退火算法流程:
1)随机产生一个初始解 x0 ,令 xbest x0 ,并计 算目标函数值 E ( x0 ); 2)设置初始温度 t=T(0),终止温度 Tmin , 降温系 数 ; 3)while t>Tmin i)for j=1:k ii)对当前最优解 xbest , 按照某一邻域函数, 产生一新的解 xnew . 计算新的目标函数值 E( xnew ), 并计算目标函数值的增量 E E( xnew ) E( xbest ).
则 x
best
: x
now
, P N (x
best
);
否则 P P S ; 重复step2.
改善局部搜索算法性能的途径:
(1)对大量初始解执行算法,再从中选优
(2)引入更复杂的邻域结构,使算法能对解空 间的更大范围进行搜索
(3)改变局部搜索算法只接受优化解迭代的准 则,在一定限度接受恶化解。 禁忌搜索:是一种人工智能算法,是局部搜索 算法的扩展。其重要思想是标记已得到的局部 最优解,并在进一步的迭代中避开这些局部最 优解。
x0 = [0 0]; lb = [-64 -64]; ub = [64 64]; [x,fval] = simulannealbnd(@dejong5fcn,x0,lb,ub)
Optimization terminated: change in best function value less than options.TolFun. x= -32.0169 -31.9879 fval = 0.9980
•遗传算法(genetic algorithms)
•神经网络(neural networks)
•蚁群算法(ant algotithms)
•其他方法
局部搜索算法:
Step1:选定一个初始可行解 x 0 ;记录当前最优 best 0 best 解 x : x ,令 P N ( x ); Step2:当 P 或满足其他停止运算准则时, 输出计算结果,停止运算;否则,从P中选一集 now now best x 合S,得到S中的最优解 ;若 f ( x ) f ( x ),
• 0-1背包问题
设有一个容积为b的背包,n件体积分别 为 ai ,价值分别为 ci 的物品,如何以最 大的价值装包?
max z ci xi
i 1 n
s.t.
a x
i 1
n
i i
b,
0 若第i种物品没选上, xi 1, 否则.
•旅行商问题
给定n个城市和每两个城市间的距离。一 个货郎自某一城市出发巡回售货,问这个 货郎应该如何选择路线,使每个城市经过 一次且仅一次,并且路径长度最短。 基于图论的0-1规划模型
2)优点:高效、健壮、通用、灵活 3)不足:返回一个高质量近似解的时间花费 较多,当问题规模不可避免增大时,难于承 受的运行时间将使算法丧火算法的matlab实现
利用模拟退火算法求函数极小:无约束或 有界约束