组合优化问题及算法
上述问题都是NP-hard问题,目前人们认为它们不存在求解最优解的多项式时间算法,大规模情 形只有尝试用一些近似算法或启发式算法求解。
启发式算法
邻域概念 对于组合优化问题(D,F,f),D上的一个映射: N:SD N(S)2D
称为一个邻域映射,其中2D表示D的所有子集构成的集合,N(S)称为S的邻域。 邻域的构造依赖于问题决策变量的表示,邻域的结构在现代化优化算法中起重要作用。
5. 二维装箱问题(平面上的套裁问题) 原料的尺寸大于需求的尺寸,需求的品种尺寸可以不同,最终的目标是在满足需求的前提下,使边角余
料最小。 6. 车间作业调度问题(job shop scheduling) n个工件,J1,…,Jn在m台机器M1,M2,…,Mm上加工。每个工件Ji有ni个工序,Oi1,…,Oini,第Oij工序的加工
类似可定义k-opt(k2)
启发式算法
局部最优与全局最优
若s*满足 f(s*)()f(s),其中sN(s*)F,
则称s*为f在F上的局部(local)最小(最大)解。 若s*满足 f(s*)()f(s),其中sF,
则称s*为f在F上的全局(global)最小(最大)解。
启发式算法
启发式算法定义 一个基于直观或经验构造的算法,在可接受的花费(计算时间、占用空间等)下给出待解决问题
s.t. xij 1, i 1,, n
j1
n
xij 1, j 1,, n
i1
xij | S | 1, 2 | S | n 2,
i, jS
xij {0,1}, i, j 1,, n, i j.
S {1,2,, n}
一些例子
3.有约束的机器调度问题(capacitated machine scheduling) n个加工量为{di|i=1,2,…,n}的产品在一台机器上加工,机器在第t个时段的工作能力为ct,求完成所有
min f ( x) s.t. g ( x) 0
xD
其中D表示有限个点组成的集合。
一些例子
1. 0-1背包问题 设有一个容积为b的背包,n个体积分别为
ai(i=1,2,…,n),价值分别为ci (i=1,2,…,n)的物品,如何以最大的价值装包?
n
max ci xi
i 1
n
s.t. ai xi b
i 1
xi {0,1},
i 1,, n
一些例子
2. 旅行商问题(TSP,traveling salesman problem) 一个商人欲到n个城市推销商品,每两个城市i和j之间的距离为dij,如何选择一条道路使得商
人每个城市正好走一遍后回到起点且所走路径最短。n来自min dij xij
i j
n
(x1,x2,…,xn)为贪婪算法所得解,单位体积的价值越大越先放入是贪婪算法的原则。
k1
di xi dk b
i1
启发式算法
简单的邻域搜索算法 给定组合优化问题,假设其邻域结构已确定,算法为
1)任选一个初始解s0F; 2) 在N(s0)中按某一规则选一s;若f(s)<f(s0),则s0s;否则,N(s0) N(s0)-s; 3) 若N(s0)=,停止;否则,返回2).
启发式算法
邻域概念 例如,前面例子2给出的TSP问题模型。由解空间 D={x{0,1}n(n-1)},可以定义它的一种邻域为:
N (x) {y |yx| |yijxij|k,
i,j
k为一个正整数。
TSP问题解的另一种表示法为
D={S=(i1,i2,…,in)是1,2,…,n的一个排列}
y D }
每一个实例的一个可行解,该解与最优解的偏离程度不一定能预计。 启发式算法是一种技术,使在可接受的计算开销内寻找最好的解,但不一定能保证所得解的可行
性和最优性,甚至多数情况下,无法给出所得解同最优解的近似程度。
启发式算法
近似算法定义 记问题A的任何一个实例I的最优解和启发式算法H解的目标值分别为zopt(I)和zH(I),若对某个
产品加工所需时段数最少的调度方案
minT
T
s.t. xit 1, i 1,,n
t1 n
di xit ct , t 1,2,T
i1
xit {0,1}, i 1,,n, t 1,2,,T
其中xit,T为决策变量,xit=1表示产品i在第t时段加工
一些例子
4. 装箱问题(bin packing) 如何把n个尺寸不超过1的物品装入尺寸为1的箱子,并使所用的箱子个数最少。
启发式算法
邻域概念
TSP问题解的另一种表示法为 D={S=(i1,i2,…,in)是1,2,…,n的一个排列} 可以定义它的邻域映射为2-opt,即S中的两个元素对换。
如 4 个 城 市 的 TSP 问 题 , 当 S=(1,2,3,4) 时 , N(S)={(2,1,3,4),(3,2,1,4),(4,2,3,1),(1,3,2,4),(1,4,3,2),(1,2,4,3)}.
正数0,有 |zH(I)-zopt(I)| |zopt(I)|,IA
则称H是A的近似算法。
启发式算法
背包问题的贪婪算法
1)将物品以ci/ai(单位体积的价值)由大到小的顺序排列,不妨把排列记为{1,2,…,n},k:=1;
2)若
,则xk=1;否则xk=0,k:=k+1;
3) 当k=n+1时,停止;否则,转2).
组合优化问题及算法
引言
组合最优化(combinatorial optimization)是通过对数学方法的研究去寻找离散事件的最优 编排、分组、次序或筛选等,是运筹学(operations research)中的一个重要分支。所研究的问题 涉及信息技术、经济管理、工业工程、交通运输、通信网络等领域。该问题可用数学模型描述为:
时间为pij,必须按工序进行加工且每一工序必须一次加工完成。一台机器在任何时刻最多只能加工一个产品, 一个工件不能同时在两台机器上加工,如何安排才能使最后一个完工的工件完工时间最小?
一些例子
7. 最大截问题(MCP,Max Cut Problem) 8. 图的顶点着色问题(GCP,Graph Colouring Problem) 9. 独立集问题(ISP,Independent Set Problem) 10.调度问题(SCP,Scheduling Problem) 11.划分问题(PAP,Partition Problem) 12.布局问题(PLP, Placement Problem)……