前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的动态规划主题范文,仅供参考,欢迎阅读并收藏。
关键词:动态规划;模板匹配;特征距离矩阵
DOIDOI:10.11907/rjdk.171142
中图分类号:TP312
文献标识码:A 文章编号:1672-7800(2017)06-0037-03
0 引言
在计算机领域,常需要将实验数据与预先设定好的模板进行匹配。图像处理领域中的图像检索、图像分割、图像拼接、图像检测、视频编码等,就需要运用到模板匹配技术。模板匹配技术在图像处理领域的具体应用可以简单分为两大类:基于特征点的匹配技术、基于像素灰度的匹配。基于特征点的匹配往往被更高级的机器视觉类任务采用,而在图像处理中,基于特征的匹配方法由于抽取的点、线、特征子等特征容易受到视角变换、遮挡等问题的干扰,会影响到最终匹配结果的质量,同时特征抽取方法的时间复杂度较高,对于实时性是一个挑战。基于像素灰度的模板匹配方法,只需要设定好匹配的模板尺寸与遍历方式,算法简洁、稳定性高,适合图像处理与计算机视觉问题中的底层预处理。但其也存在一些缺点,如噪声、光照引起的灰度变化,且运算数据量大,基于像素灰度的匹配算法也无法避免图像数据与模板匹配过程可能带来的高复杂度问题。
迄今为止,模板匹配技术已经被广泛应用到图像处理的实际问题中,并取得了一系列成果。例如,王倩倩[1]将模板匹配问题应用到藻类图像的识别问题中,李厚军[2]将模板匹配问题应用到眉毛的识别问题中,陈莹[3]将模板匹配方法用于增强微光图像,王正等[4]将模板匹配引入到图像编码中的调色板更正上,提高了图像编码效率,王志衡,郭超等[5]将模板匹配方法应用到了新闻图像字母行切分之中,张盼盼[6]等将模板匹配方法应用到了数字识别过程中,陈宁等[7]将该方法应用到集装箱识别与匹配的问题中。然而,采用上述方法在面临大数据量的数据时,也存在复杂度较高的问题。因此,如何进一步优化模板匹配问题有待进一步研究解决。
动态划方法(Dynamic Programming)早期诞生于运筹学,是一种迭代求解最优的方法。近年来,动态规划方法作为算法设计策略中求解最优子结构的一种重要思想,被广泛引入到计算机问题求解之中。动态规划求解计算机问题的基本思想是,将待求解问题分解成若干个结构相同的子问题,在求解过程中保存已求解子问题的答案并在后续求解过程中,有效利用之前求解的答案协助当前问题求解。由于后续问题在求解过程中已经遇到了需要之前已经求过的子问题,因此大大提高了求解效率[8-11]。可以简单地将动态规划算法分为基于线性的动态规划算法、基于树形的动态规划算法、基于区域的动态规划算法、基于背包的动态规划算法。具体采用何种动态规划方法应针对具体问题作具体分析,例如,有学者[12-13]在语音识别与动作识别等具体领域尝试采用动态规划算法尝试优化求解。但往往只是将动态规划算法应用到某一具体问题,尚未对图像处理中的模板匹配问题进行动态规划算法实现。
综上,鉴于动态规划方法的自身特性及当前图像处理在解决模板匹配问题上的不足,本文提出了一种采用动态规划解决模板匹配的方法,首先给出图像数据与模板的匹配问题,并对该问题进行符号化和相应的理论分析,此后采用动态规划的方法解决模板匹配问题,并对传统动态规划解决方法在时间复杂度上进行改进。相较于传统模板匹配方法,采用本文提出的方法可以将时间复杂度减少一个数量级。
1 问题分析与解决
图像模板匹配算法的过程可以简单归纳为:首先采用某一尺度的模板遍历所有数据(例如整幅图像),此后计算模板与模板在整个图像中所对应区域的匹配程度,最后在数据中找到与模板匹配程度最高的区域。对于一幅图像数据S而言,若图像的尺寸大小为H*W,模板T的尺寸为P*P,模板匹配算法需要在图像数据上进行遍历,并计算模板与模板覆盖区域的匹配程度,将模板覆盖到一个图像区域并计算匹配度的过程约定为一个动作。设有一组试验动作序列:V=(V0,V1,…,VM) 和一组模板动作序列T=(T0,T1,…,TN),(M>N),两组序列都满足动作的时间顺序,这里试验动作数据中的每个动作都必须出现在匹配路径中,而模板动作序列不做此要求。计算模板与图像对应位置的匹配程度,可以根据需求采取不同的度量方式,如欧式距离、光度距离与几何距离等。模板的移动可以采用Zigzag的方式实现。则上述模板匹配可以得到有效的距离矩阵,可以在该距离矩阵的基础上设计动态规划优化解决方案。这里,假设试验动作数为M=15,模板动作数为N=10。
1.1 问题符号化及分析
为了方便地表达该问题,采用3个矩阵进行存储和计算,如图1所示。一个是矩阵A,用来存放原始数据;一个是矩阵B,用来存放计算过程的局部最优值;一个是矩阵R,用来记录局部最优值所对应的路径。
1.2 问题解决
1.2.1 局部最优值计算
对于上述问题,采用动态规划思想进行解决,其基本思路如下:首先,试验动作从V0开始,由于它是第一个试验动作,前面没有其它动作,因而无论它选择哪一个模板,都可看成是当前的最优值;然后,考查第二个试验动作V1,如果V1选择的模板动作是T0,那么试验动作V0选择的模板只能是T0,这时它的最小值为a0,0+a1,0,同时在矩阵R中r0,0位置记录该局部最优值所对应的模板序号;如果V1选择的模板动作为T1,那么试验动作V0可以选择的模板是T0或T1,显然,只有取a0,0和a0,1中的最小值,与a1,1相加后可得V1在选择模板动作T1时的最优值,同时在矩阵R中r0,1位置记录该局部最优值所对应的模板序号;如果V1选择的模板动作为T2,那么试验动作V0可以选择的模板就可以是T0、T1或T2,这时,需要取a0,0、a0,1、a0,2中的最小值,与a1,2相加后可得V1在选择模板动作T2时的最优值,同时在矩阵R中r0,2位置记录该局部最优值所对应的模板序号;如果V1选择的模板动作为Tj,j=3,…9,则依次类推。
其中,k的最大值是第M层叶结点的个数。度为p的树中第i层至多有pi-1个节点(i>1),该问题求解的树的度p=3,则第M=15层至多有3M-1=315-1个结点,试验中k的最大值为16,通过分析可以得出该问题的时间复杂度为O(16*M)。
综上分析,文中给出的算法在求模板匹配的最优解时,其对应的时间复杂度为O(MN)+O(KM),即max(O(MN),O(KM))。若从p叉树的生成角度考虑,算法的时间复杂度为O(MN)+O(nodes),即max(O(MN),O(nodes))。
3 结语
针对传y模板匹配算法在应用图像处理问题时遇到的时间复杂度过高等问题,对数据与模板匹配的过程进行优化,提出了一种基于动态规划算法加以实现的方法,算法的时间复杂度为max(O(MN),O(KM))。利用本算法,可以将模板匹配过程的复杂度大大减小,也不需要对数据进行过多处理,而且程序编写简单,各方面比原算法和目前已有文献中提到的改进算法都有很大提高。
可以看出,未来无论是计算机处理领域的模板匹配问题,还是日常生活生产中经常遇到的“试验数据和事先存储好的模板动作进行匹配”及类似问题,本文所提出的算法都具有一定应用前景。
参考文献:
[1]王倩倩.基于聚类的模板匹配显微细胞图像分割算法的研究[D].重庆:重庆大学,2015.
[2]李厚军.快速模板匹配方法及其在眉毛识别中的应用[D].北京:北京工业大学,2015.
[3]陈莹.基于FPGA的微光图像增强和模板匹配研究[D].北京:中国科学院大学,2014.
[4]王正,陶品,冯立新,温江涛,杨士强.基于模板的调色板方法[J].计算机辅助设计与图形学学报,2016,28(7):1146-1151.
[5]王志衡,郭超.基于模板匹配的新闻图像字幕行切分算法[J].北京邮电大学学报,2016,39(3):49-53.
[6]张盼盼,张颖颖.模板匹配与八邻域分析法在数字细化预处理中的应用及比较[J].软件导刊,2016,15(5):210-211.
[7]陈宁,王胜,黄正文.基于特征匹配的集装箱识别与定位技术研究[J].图学学报,2016,37(4):530-536.
[8]THOMAS H CORMEN,CHARLES E LEISERSON.Introduction to algorithms[M].Second Edition.Massachusetts:The MIT Press,2001.
[9]王晓东.计算机算法设计与分析[M].第2版.北京:电子工业出版社,2005.
[10]徐孝凯,贺桂英.数据结构(C语言描述)[M].北京:清华大学出版社,2004.
[11]唐策善,李龙澍,黄刘生.数据结构――用C语言描述[M].北京:高等教育出版社,2003.
动态规范是算法里一种非常重要的方法,是求解决策过程最优化的数学方法。动态规划自问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其他方法求解更为方便。
本文通过对经典的01背包问题的求解,从动态规划的角度进行阐述,通过案例对该算法的计算过程进行了直观的描述,并对该算法进行了一定的优化,最后指出该算法的优缺点。
[关键词]背包 动态规划 时间复杂度 空间复杂度
[中图分类号]TP31[文献标识码]A[文章编号]1009-5349(2010)05-0121-03
前言
背包问题是一个经典的动态规划模型,很多关于算法的教材都把它作为一道例题,该问题既简单又容易理解,而且在某种程度上还能够揭示动态规划的本质。
将具有不同重量和价值的物体装入一个有固定载重量的背包,以获取最大价值,这类问题被称为背包问题。
背包问题可以扩展出很多种问题,而01背包问题是最常见、最有代表性的背包问题。
一、问题描述
给定一个载重量为M的背包及n个物体,物体i的重量为wi、价值为pi,1≤i≤n,要求把这些物体装入背包,使背包内的物体价值总量最大。此处我们讨论的物体是不可分割的,通常称这种物体不可分割的背包问题为01背包问题。
二、基本思路
01背包问题的特点是:每种物体只有一件,可以选择放或者不放。假设:xi表示物体i被装入背包的情况,xi=0,1。当xi=0时,表示物体没有被装入背包;当xi=1时,表示物体被装入背包。根据问题的要求,有如下的约束方程(1)和目标函数(2):
三、利用动态规划法求解01背包问题
(一)动态规划算法的基本思想
动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。我们可以用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中,这就是动态规划法的基本思路。具体的动态规划算法多种多样,但它们具有相同的填表格式。
(二)算法设计
假定背包的载重量范围为0~m。类似于资源分配那样,令optpi(j)表示在前i个物体中,能够装入载重量为j的背包所得的最大价值,j=1,2,……,m。显然,此时在前i个物体中,有些物体可以装入背包,有些物体不能装入背包。于是,可以得到下面的动态规划函数:
(4)式表明:把前面i个物体装入载重量为0的背包,或者把0个物体装入载重量为j的背包,得到的价值都为0。(5)式表明:当第i个物体的重量大于背包的载重量时,装入前i个物体得到的最大价值,与装入前i-1个物体得到的最大价值一样,即第i个物体没有装入背包。(6)式表明:当第i个物体的重量小于背包的载重量时,如果第i个物体装入背包,背包中物体的价值,等于把前i-1个物体装入载重量为j-wi的背包所得到的价值与第i个物体的价值pi之和;如果第i个物体没有装入背包,则背包中物体的价值,等于把前i-1个物体装入载重量为j的背包,却不装入第i个物体所取得的价值。显然,这两种装入方法,在背包中所取得的价值不一定相同,因此,取这两者中的最大值,作为把前面i个物体装入载重量为j的背包所取得的最优价值。
该算法可分为n阶段:
第一阶段,只装入一个物体,计算在不同载重量的背包情况下,所取得的最大价值;
第二阶段,装入前两个物体,按(5)式和(6)式计算在不同载重量的背包情况下,取得的最大价值;
……
第n阶段,装入前n个物体,按(5)式和(6)式计算在不同载重量的背包情况下,取得的最大价值,而在背包载重量为M时,所得结果就是我们想要的结果。
为了确定具体哪个物体装入背包,从optpn(m)的值向前倒推。有如下递推关系式:
(7)式表明:如果optpi(j)大于optpi-1(j),则物体i被装入背包;如果optpi(j)等于optpi-1(j),表明i物体未被装入背包。按照该关系式,i从n到1依次类推,直到确定第一个物体是否被装入背包为止,就能确定装入背包的具体物体。
(三)存储结构
该算法需要将每一个物体的重量和价值分别存储起来,并针对不同载重量的背包对物体分别计算,故考虑使用数组来实现。对于物体i,用weight[i]来表示重量、用p[i]表示价值,解向量用x[i]表示物体i是否被放入,上面提到的optpi(j)则用二维数组相应的optp[i][j]来表示,物体个数n,背包载重量为m。
(四)算法实现
initial knapsack_dynamic(initial optp[][],weight[],p[],x[],n,m)
{
initial i,j,value;
//根据(4)式初始化第0列及解向量X
//解向量初始值设置为false,表示起初所有物体均未放入背包
for(i = 0; i
{
optp[i][0] = 0;
x[i] = FALSE;
}
//根据(4)式初始化第0行
for(i = 0; i
{
optp[0][i] = 0;
}
//利用(5)(6)式计算optp[i][j]
for(i = 1; i
{
for(j = 1; j
{
optp[i][j] = optp[i-1][j];
if((j >= weight[i]) && (optp[i-1][j - weight[i]]+p[i]) > optp[i-1][j])
optp[i][j] = optp[i-1][j-weight[i]] + p[i];
}
}
//确定装入背包的具体物体
j = m;
for(i = n; i > 0; i--)
{
if(optp[i][j] > optp[i-1][j])
{
x[i] = TRUE;
j = j - weight[i];
}
}
//value就是所要求的值
value = optp[n][m];
return value;
}
1.案例分析
现有载重量为10的背包,有四个物体A、B、C、D,其重量分别为4、2、5、3,价值分别为4、3、5、8,要求放入物体使背包所获价值最大。
用optp[i][j]来存储这四个物体在不同载重量的背包下所获的价值,计算过程如下表所示:
2.时间空间复杂度
该算法中,矩阵optp的大小为(m+1)×(n+1),物体的重量、价值和解向量大小都等于物体个数n,故该算法的空间复杂度为O(nm)。对物体重量、价值的初始化(算法实现略)所需时间都为n,解向量和矩阵第0行初始化时间为n,矩阵第0列初始化时间为m,对矩阵optp的计算所需时间为n×m,解向量X的确定时间为n,故整个算法的时间复杂度为O(nm)。
(五)算法优化
在上述算法中,时间复杂度不能再继续优化了,但是空间复杂度是可以继续优化的。
上述算法中,存储optp使用的是二维数组,其大小为(m+1)×(n+1),但是仔细观察发现,optp[i][j]只与optp[i-1][j]和optp[i-1][j - weight[i]]有关,与optp[k][l](k=1,2,……,i-2,i+1,……n,j=1,2,……,m)无关,故可考虑只用一维数组_optp来存储,_optp[j]相当于optp[i][j]。而考虑到optp[i][j]是由optp[i][j]和optp[i-1][j - weight[i]]共同计算得到的,故该算法中的j循环要从后往前计算,_optp[]的计算算法设计如下所示:
for(i = 1; i
{
for(j = m; j >= 1; j--)
{
if((j >= weight[i]) && (_optp[j - weight[i]]+p[i]) > _optp[j])
_optp[j] = optp[j-weight[i]] + p[i];
}
}
上述例子中,相应的_optp[j]计算结果如下表所示:
}
}
上述例子中,相应的_optp[j]计算结果如下表所示:
显然,对于物体i,_optp[j]的计算不会影响到_optp[0,1,……,weight[i]-1],故上述算法可继续优化为:
for(i = 1; i
{
for(j = m; j >= weitht[i]; j--)
{
if((_optp[j - weight[i]]+p[i]) > _optp[j])
_optp[j] = optp[j-weight[i]] + p[i];
}
}
对于01背包问题,常见的要求有两种:一种是恰好装满背包、另一种则没有要求,针对这两种问法,可从初始化上来区分。
当要求恰好装满背包时,初始化时将_optp[0]设为0,其他_optp[1,2,……,m]全部设为-∞,这样就可保证最终得到的_optp[n]是一种恰好装满的最优解,此时可以把初始化理解成没有任何物体可放时,只有容量为0的背包能被价值为0的nothing“恰好装满”;当没有这个限制时,初始化时应将_optp[0,1,……,m]都设为0,此时可以理解为任何一个背包都有一个合法的解“什么都不装”,这个解的价值为0。
当优化后,空间复杂度变为O(m),计算所需时间为:
当weitht[i]较大时,可以节省很多时间。
动态规划的缺点:对于01背包问题,用动态规划方法解很容易理解,但是这种方法有一些弊端,从上述算法可以看出:当物体的重量较大时,所需的物理空间较大;当物体的重量不是整数时,无法利用数组来存储该结构。
四、结束语
在日常生活中,01背包问题有很多应用,比如如何利用有限空间的手提包,装入外出旅行的各种必需品。
关键词:动态规划;装载问题;JAVA语言
中图分类号:TP31 文献标识码:A 文章编号:1009-3044(2014)10-2401-03
Abstract: How to load goods to get maximum economic benefits by manufacturers is a sub-problem divided from logistics distribution.In this paper,the sub-problem is abstracted a 0-1 knapsack problem.We create a mathematical model based on dynamic programming algorithm,and analyze the advantages of the algorithm.Then we use JAVA language to solve the problem.After setting some test datum, the final results show that the dynamic programming method has efficiency,and can be applied widely.
Key words: Dynamic programming; Loading problems; JAVA language
随着经济的不断发展,各厂商在满足客户需求的条件下,利用物流技术,从备货、装箱、配送、存储等物流配载技术网中寻求省时省力的方法,使得资源使用效率得到提高,同时降低了厂商的成本[1]。
问题提出:某厂商每周向校园超市运输一次商品,在小型货车容量不变且不能超载的约束下,如何装载商品,使产生的经济效益最大化?该问题是厂家所关心的,也是本文的关注点。运用动态规划方法解决此问题,能够较好地控制企业的人力资源成本和运输成本,从而提高商业的竞争力。
1 动态规划算法简介
动态规划(dynamic programming)[2]产生于20世纪50年代,由美国数学家R.E.Bellman等人提出。动态规划的思想是把一个问题划分为具有相关性的若干子问题来解决,并将各个子问题求解答案和求解方法进行保存。如果在之后的处理过程中还需要用到已解决的子问题,则直接调用答案,从而避免重复的计算,节省了时间。
在解决实际问题中,我们需要动态规划出适当的约束条件和递推关系,并在各单阶段中寻找互相联系的因素,依次将每一阶段所得的最优结果进行存储。这种阶段划分、自下向上的求解方式需要建立表或数组才能有效实施。如图1所示:
基于动态规划法解决的问题需要满足一定的条件,例如:(1)满足无后效性,即子问题的下一状态只与现在状态有关;(2)满足最优性子结构,得出子问题的最优解;(3)原问题可以划分出多个拥有关联的子问题[3]。
2 模型的建立
厂商向校园超市运输商品的问题:已知厂商共有N件商品,每件商品拥有固定的Id号,Id=i的商品重量为Wi,产生的经济效益为Vi,货车的最大载重量为N。现假设一个n维向量Xi=(X1,X2,...Xn)∈{0,1}n,当Xi=1时表明相应Id的商品装入车中;当Xi=0时表明商品未装入车中。最终得出的结果为[maxi=1nViXi],即最大效益值,约束条件为[maxi=1nWiXi]≤N。货车的载重量是有限的,在这个上限内尽可能装下商品使经济效益越高越好。通过以上分析,此问题恰好可以抽象为一个重量集合、经济效益集合与货车载重量分别是Wi={W1,W2,...Wn},Vi={V1,V2,...Vn}和N的0-1KP问题。
在0-1背包问题中,物品价值与体积不随背包容量的变化而变化[4]。举例说明:假设有N=3个物品,总容量为10,体积V[i]={2,4,6}分别对应价值P[i]={3,7,4},设数组B[i][j],表示在背包容量为j的条件下,放入第i个物品后的最大价值。如下表1所示:
动态规划算法易于编程的实现,虽然需要一定的空间存储其产生的结果,但是它的高效性能在测试中体现出来。
4 测试数据
假设厂商货车载重量为上述的1534,他们所建Commodity表中总共有50件商品,其Id、weight、value的数据分别如下所示:
最终得出经济效益最大值为1904,如图3所示。
5 结束语
本文从实际出发,给出厂商向校园超市运输商品时的装载问题,结合一个有效的算法――动态规划算法,利用JAVA语言得以实现。动态规划法有较好的效率和速度,不仅能用于解决装箱问题,而且能够运用于物流配载中的路径规划、资源分配等实际问题,优化了企业资源管理,提高经济效益,降低资源成本,能够应用于更多的科学领域中。
参考文献:
[1] 谢天保,雷西玲,席文玲.物流配送中心配载车辆调度问题研究[J].计算机工程与应用,2010,36:237-240.
[2] 陈大伟,孙瑞志,向勇,史银雪.基于流程模式的工作流静态规划方法[J].计算机工程与设计,2011(1):129-132,137.
关键词:LINGO;动态规划; 最短路问题; 生产批量计划问题
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2014)04-0743-04
在交通专业课程如《交通运筹学》、《交通系统分析方法》等的教学过程中,大量涉及到可划分为多阶段的优化问题求解,这些问题的求解一般使用动态规划(dynamic programming)方法。动态规划将决策问题的全过程划分为若干个相互联系的子过程(每个子过程为一个阶段),然后按照一定的次序来求解。当划分的阶段个数较多时,手工求解动态规划问题相当麻烦。由于在实际的交通工程规划实践中,涉及到的动态规划优化问题规模往往较大,指导学生掌握相应的优化软件求解动态规划问题一方面能增进学生对动态规划法的理解掌握,另一方面能锻炼学生的编程能力,是一项十分有意义的教学工作。
美国LINDO系统公司开发的LINGO由其求解问题的高效性和稳定性,成为目前广泛使用的优化软件。LINGO是一套专门用于求解最优化问题的软件包,其内置了一种建立最优化模型的的语言,可以简便表达出问题,同时利用LINGO高效的求解器可快速求解并分析结果。LINGO在处理含有大量变量和约束条件的优化问题时,一般使用数组和矩阵的输入方法:LINGO程序首先定义集合段,确定需要的集合及其属性,然后定义数据段,用于输入已知原始数据,最后使用函数对集合进行操作。在通常介绍LINGO使用的文献中[1][2],一般着重于叙述其如何求解线性规划和非线性规划等具有明确目标函数的优化问题,很少关注如何用LINGO求解复杂的动态规划问题,该文通过分析交通运输中常见的最短路问题和生产批量计划问题,给出用动态规划方法求解的LINGO代码,指出LINGO可以在不需要目标函数的情况同样很好地求解多阶段优化问题。
1 动态规划法求解实例
实例1 最短路问题
在纵横交错的公路网中(图1所示),货车司机希望找到一条从一个城市到另一个城市的最短路。图中节点1—8代表货车可以停靠的城市,弧旁的数字表示两个城市之间的距离(百公里)。若货车要从城市1出发到达城市8,问如何选择行驶路线使所经过的路程最短。
问题分析:该最短路问题满足动态规划的最优性原理,即“从节点1到节点8的最短路的子路径仍然是相应节点间的最短路”,用[D(i,j)]表示从节点[i]和[j]有弧相连时相应的距离,[L(i)]表示从节点1到节点i的最短路程数。则不难得到以下的动态规划由前向后递推方程:
根据式(1),再进一步定义当节点[i]在从节点1到节点[j]的最短路径上时,[P(i,j)=1],否则[P(i,j)=0],编写如下LINGO求解代码:
运行LINGO得到如图1所示的最优解报告。
从报告中可以看到,最短路径找到,由[L(8)]的值可以得出,从城市1到城市8的最短路程数为14,由各个[P(i,j)]的值分析可知,从城市1到城市8的最短路线为[1258]。
实例2(生产批量计划问题)
某企业生产某种产品用以满足市场需求。通过统计,该产品今后[T]4周的外部需求(订货量)分别是[d1]千件、[d2]千件、[d3]千件和[d4]千件。如果第[t]周要开工生产,则第[t]周开工所需的生产准备费为[st]千元(与生产的数量无关),每件产品的生产费为[ct]千元。如果在满足需求后周末有产品剩余,每千件产品的存储费为[ht]千元。设第[t]周末的库存量为[It],假设开始没有库存,记为[I0=0]且不考虑生产能力限制,问工厂应如何安排生产,在按时满足需求的条件下,使总费用最小?
问题分析:对于生产批量计划问题,分析可知有如下两条性质成立:
由于以上两个性质,只有当上一时段库存[It-1=0]时,本时段才考虑进行生产,且一旦生产,其生产量一定为某些后续时段需求量的总和,即[xt∈{dt,dt+dt+1,…,dt+dt+1+…+dT}]。这样如用[ft]表示当[t]时段初始库存为0时,从[t]时段到[T]时段的子问题的最优费用值,可以建立如下的递推关系:
运行LINGO得到如下最优解报告:
从报告可以看到,[F(1)=561],即从第1周到第4周末的最优费用为561(千元),分析其它[F]值得到,最优的生产批量计划为第1周生产2(千件),第2周生产5(千件),第3周不生产,第4周生产4(千件)。
2 结束语
本文针对用动态规划方法手工求解多阶段优化决策问题十分繁琐的特点,利用LINGO软件将各个动态规划递推方程简洁明确地编程实现,帮助学生更好的理解了各阶段决策变量之间相互递进的关系,同时更重要的是交通专业学生熟练地掌握了软件的使用,才能解决实际工程规划中的大规模复杂优化问题,LINGO软件的教学实践促进了《交通运筹学》、《交通系统分析方法》与《交通规划》等课程的融合。
参考文献:
[1] 李晓川,朱晓敏,赵乃东. 基于Lingo的运输优化系统设计与开发[J]. 物流技术,2010(Z1).
关键词:最短路径;动态规划;C 语言编程
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)09-2191-03
1 概述
数学源于生活,又服务于生活.它是一门研究现实世界中的数量关系与空间形式的学科.当今社会,随着物质水平的不断提高,生活需求的不断扩大,自然资源的不断开发利用.像天然气管道铺设问题,厂区布局问题,旅行费用最小问题等都已成为我们平时经济生活中的普遍问题.它们其实都可以化归为最短路线问题,而最短路问题实质上是一个组合优化问题[1]。
动态规划方法主要是研究与解决多阶段决策过程的最优化问题,它将求解分成多阶段进行,不但求出了全过程的解,还能求出后部子过程的一组解,在求解一些生活实际问题时,更显其优越性。为了快速、简单的计算最短路径,节约运输时间与成本,该文利用动态规划的思想编写了C语言程序,解决物流运输过程中多地点的最短路径的选择问题。
2 最短路径问题
2.1 最短路径问题算法的基本思想
在求解网络图上节点间最短路径的方法中,目前国内外一致公认的较好算法有迪杰斯特拉(Dijkstra)及弗罗伊德(Floyd)算法。这两种算法中,网络被抽象为一个图论中定义的有向或无向图,并利用图的节点邻接矩阵记录点间的关联信息。在进行图的遍历以搜索最短路径时,以该矩阵为基础不断进行目标值的最小性判别,直到获得最后的优化路径[2]。
Dijkstra算法是图论中确定最短路的基本方法,也是其它算法的基础。为了求出赋权图中任意两结点之间的最短路径,通常采用两种方法。一种方法是每次以一个结点为源点,重复执行Dijkstra算法n次。另一种方法是由Floyd于1962年提出的Floyd算法,其时间复杂度为[On3],虽然与重复执行Dijkstra算法n次的时间复杂度相同,但其形式上略为简单,且实际运算效果要好于前者。
2.2 最短路径问题算法的基本步骤[3]
这样经过有限次迭代则可以求出[v1]到[vn]的最短路线。
(2)Floyd算法的基本步骤
(3)动态规划算法基本步骤
我们将具有明显的阶段划分和状态转移方程的规划称为动态规划[1]。在解决多个阶段决策问题时采用动态规划法是一个很有效的措施,同时易于实现。
根据动态规划的基本概念,可以得到动态规划的基本步骤:1)确定问题的决策对象。2)对决策过程划分阶段。3)对各阶段确定状态变量。4)根据状态变量确定费用函数和目标函数。5)建立各阶段状态变量的转移过程,确定状态转移方程。
根据动态规划的基本模型,确定用动态规划方法解题的基本思路,是将一个[n]阶段决策问题转化为一次求解[n]个具有递推关系的单阶段的决策问题,以此来简化计算过程.其一般步骤如下:
用于衡量所选决策优劣的函数称为指标函数.指标函数有有阶段的指标函数和过程的指标函数之分.阶段的指标函数是对应某一阶段状态和从该状态出发的一个阶段的某种效益度量,用[vkxk,uk]表示。在本文里用[dkxk,uk]来表示某一阶段的决策的最短路径。过程的指标函数是指从状态[xn(k=1,2,...,n)]出发至过程最终,当采取某种子策略时,按预定的标准得到的效益值。这个值既与[xk]本身的状态值有关,又与[xk]以后所选取的策略有关,它是两者的函数值,记作[dk,nxk,uk,xk+1,uk+1,…xn,un]。过程的指标函数又是它所包含的各阶段指标函数的函数。本文研究的过程的的指标函数是其各阶段指标函数的和的形式.当[xk]的值确定后,指标函数的值就只同k阶段起的子策略有关。对应于从状态[xk]出发的最优子策略的效益值记作[fkxk],于是在最短路问题中,有[fkxk=mindk,n]。动态规划求解最短路径程序流程图如图2所示。
3 最短路径态规划实际应用举例
设某物流配送网络图由12个配送点组成,点1为配送中心起点,12为终点,试求自终点到图中任何配送点的最短距离。图中相邻两点的连线上标有两点间的距离[4]。
首先用动态规划法来讨论图3的最短路径,由图可知:
1)集合[ξ4]中有点9、10、11,它们在一步之内可到达点12;
2)集合[ξ3]中有点6,7,8,它们不超过两步就可达到点12;
3)集合[ξ2]中包括点 2、3、4、5,不超过三步就可到达点12;
4)集合[ξ1]中包括点1,不超过四步可到达点12;
按照动态规划法类推,得到最优路径长为16,径路通过点为1,2,7,10,12和1,3,6,10,12。
根据动态规划算法编写C语言计算程序[5] [6],计算得到实验结果如下图4所示:
由图4可以看出程序得到的结果与本文推出的结果一样。证明了本文编写的C语言程序是正确的。
4 结束语
综上所述,用动态规划解决多阶段决策问题效率高,而且思路清晰简便,同时易于实现.我们可以看到,动态规划方法的应用很广泛,已成功解决了许多实际问题,具有一定的实用性。此种算法我们用动态规划思想来编程,并解决相应的问题,其在 VC 环境下实现,能方便快速的计算出到达目的地的最短距离及路径,节省更多的运输时间与成本。不过,该文只考虑了动态规划算法在生活中的简单运用,在实际生活中可能存在多个目的地或者更复杂的情况.因此我们可以考虑将其进行改进或者结合启发式算法,使之更好的运用在实际生活中,这有待于以后的继续研究。
参考文献:
[1] 杜彦娟.利用动态规划数学模型求解最短路径[J].煤炭技术,2005(1):94-95.
论文关键词:背包问题,动态规划法,回溯法
10/1背包问题
0-1背包问题:给定n种物品和一背包。物品i的重量是Wi,其价值为Vi,背包的容量为C。问应如何选择装入背包中物品,使得装入背包中物品的总价值最大?
对于一个实例:物品种类N=4,背包容量C=10,物品重量数组W={3,5,2,1},相应价值数组V={9,10,7,4}。找一个n元0-1向量(x1,x2,x3….xn)xi∈{0,1},1≤i≤n.使得,达到最大。下面分别以动态规划法和回溯法来解决这个实例。
2动态规划法
动态规划法的基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。用一个表来保存记录所有已解决的子问题的答案,在需要的时候再找出已求得的答案,避免重复的计算。
动态规划法适用于解最优化问题。通常可按以下4个步骤:
(1)找出最优解的性质并刻画其结构特征。
(2)递归的定义最优解。
(3)以自底向上的方式计算出最优值。
(4)根据计算最优值时到得的信息,构造最优解。
对于所给0-1背包问题的子问题:
,
的最优值为m(i,j),即m(i,j)是背包容量为j,可悬着物品为i,i+1,….,n时0-1背包问题的最优值。由于0-1背包问题的最优子结构性质,可以建立计算m(i,j)的如下递归式:
(1.1)
(1.2)
从上面算法的执行过程中可以看出假设有Q(n)个子问题,每一个子问题最多需要m次决策,则计算的频率为nm,回溯的频率为n,那么整个过程的算法的时间复杂度为T(n)=nm+n,即为Q(nm)。
3回溯法。
回溯法在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。回溯算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索遍才结束。简单地说就是确定解空间,建立解空间树,用深度优先搜索算法递归搜索解空间树,并同时注意剪枝。
用回溯法解题的步骤:
(1)针对所给问题定义问题的解空间;
(2)确定易于搜索的解空间结构;
(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效的搜索。
根据上述0-1背包问题的数学描述解向量可以表示成X={X,X,...X|X=0或=1}若X=0,表示第i个物品不装入背包,X=1,表示将第i个物品装入背包。
可以用树的形式将解空间表达出来。树中从第i层到第i+1层的边上的值表示解向量中X的取值,并假定第i层的左子树描述第i个物品被装入背包的情况,右子树描述第i个物品被拒绝的情况。则该0-1背包问题的状态空间树就表示为一棵高度为n的完全二叉树。若n=3时则此0-1背包问题的解空间的结构如图1-1所示。从根结点到叶子结点的任一路径就对应解空间中的一个解向量
图1-1n=3时,0-1背包问题的解空间树
用回溯法求解0-1背包问题时,可以按照物品的单位价值从大到小排序。计算当前节点的上界,搜索左子树。只有当右子树包含可行解时才搜索右子树。剪去右子树的条件是当前价值加上剩余物品的总价值小于当前的最优总价值时,不需搜索右子树,可将右子树剪去。回溯法用一定的剪枝进行优化,算法的时间复杂度为O(n*2n),n为物品个数。
4总结
动态规划算法:动态规划可以把困难得多阶段决策变换为一系列相互联系比较容易的单阶段问题。对于背包问题可以对子过程用枚举法求解,而且约束条件越多,决策的搜索范围越小,求解也越容易。但是对于规模较大的问题它并不是一个理想的算法。最重要的原因就是它的维数障碍。即计算和存储量的需要对于状态空间和决策空间的维数的增长呈指数增长关系,这样惊人的增长速度是计算机难以承受的。这就使得直接的动态规划方法求解规划较大的背包问题发生了困难,且目前尚没有好的解决办法。
回溯法:回溯法需要为问题定义一个解空间,这个解空间必须至少包含问题的一个解(可能是最优的)。使用递归回溯法解决背包问题的优点在于它算法思想简单,而且它能完全遍历搜索空间,肯定能找到问题的最优解。但是由于此问题解的总组合数有2个,因此,随着物件数n的增大,其解的空间将以2级增长,当n大到一定程度上,用此算法解决背包问题将是不现实的。
用此两种方法都能得到问题的最优解,从其时间复杂度来看,两者的速度都较慢。
参考文献
1 王晓东.算法设计与分析[M] .北京 清华大学出版社 2003.
2 王红梅.算法设计与分析[M] .北京 清华大学出版社 2006.
关键词:人才培养模式;工业工程;动态规划
中图分类号:G640 文献标识码:A 文章编号:1002-4107(2013)02-0058-02
一、动态规划与人才培养
(一)动态规划
动态规划是运筹学的一个分支,是求解决策过程最优化的数学方法。在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联系的阶段,在它的每一阶段都需要做出决策,从而使整个过程达到最好的活动效果。当然,各个阶段决策的选取不是任意确定的,它依赖于当前面临的状态,又影响以后的发展,当各个阶段决策确定后,就组成一个决策序列,因而也就确定了整个过程的一条活动路线。
这种把一个问题看作是一个前后关联具有链状结构的多阶段过程就称为多阶段决策过程。在多阶段决策过程中,动态规划法的基本思路是从终点逐段向始点方向寻找最短路线,既把当前一段和未来各段分开,又把当前效益和未来效益结合起来考虑,从而得到整个问题的最优解[1]。
(二)动态规划思想融入工业工程专业人才培养
动态规划法的基本思想告诉我们,每段决策的选取是从全局来考虑的,与该段选择的最优答案一般是不同的,这对专业人才培养有很大的启发。如果把人的整个成长过程看成全局问题,在学校阶段取得最好成绩只是该段决策最优,能否在学生今后的就业及成长过程中发挥最大作用,实现成才的最终目标即达到全局最优,还取决于学生未来从事岗位和工作领域的选择。这对工业工程人才培养格外重要。
现代工业工程是技术与管理相结合的交叉学科,它既有鲜明的工程属性,也有明显的管理特征[2]。由于这门学科技术与管理交叉的特点,使得工业工程专业人才的就业方向非常广泛,既可以进行技术类的工程设计,也可以从事管理类的企业管理与决策,还可以继续深造进行科研攻关,每个方向的工作岗位对人才素质的要求各不相同[3-5]。多元化的选择使得学生毕业求职时看似什么岗位都适合,但事实上什么技能也不完全具备,只能临时抱佛脚或者遭到社会的淘汰。因此,要想较好地完成个人成长及成才,依据动态规划法的基本思想应从终点逐段向始点方向寻找最短路线,在进行人才培养时也应该进行逆序求解,首先帮助学生确立成才目标及个人定位,然后自后向前寻找,从而帮助每个学生对当前大学阶段的努力方向和培养过程进行决策。
二、启发式的人才培养模式
基于上述理念,南京工业大学工业工程专业结合自身办学条件和课程设置提出了开放性、启发式的人才培养新思路。在引导学生对未来职业定位和自身特点进行分析思考的基础上明确就业目标,利用课堂教学和课余时间对学生进行专项能力培训,最后集中进行学业成果展示,如图1所示。
(一)启发式的人才测评和职业倾向测试
首先,在入学时的专业介绍中让学生明确工业工程目前的发展状况以及未来发展趋势,有意识地引导学生思考自身目标,进行自我认知。在大二阶段设置的组织行为学课程实验中,运用斯坦福―比纳量表对学生进行智商测试,该量表不仅测试成人智商水平,而且显示被测试者在语言、数学、空间、理解等方面的智商特点,帮助他们了解自己的智商水平与智力特点。运用卡特尔16相人格测试量表和明尼苏达多相人格测试对学生进行人格特征测试,帮助他们了解自己的人格、能力特质。在智商、人格测试的基础上,运用霍兰德职业倾向测试,帮助学生了解自己的职业兴趣以及适合从事的职业类型。对有创业愿望的大学生运用南加州大学创造力测验,帮助学生了解自己是否适合创业,启发学生对未来职业定位、自身特点和兴趣进行思考。
图1 工业工程人才培养模式
(二)针对不同类型职业倾向的学生进行专项能力培训
在对学生进行人才测评和职业倾向测试的基础上,在大三大四专业课学习阶段针对不同类型职业倾向的学生进行专项能力培训与强化,设立成长性、开放性的课程体系,使每个学生都可以自主选择参与其中一种或几种培养计划。
1.对工程设计能力相对突出的学生,进行工业工程设计能力强化培训。在学生已掌握的工业工程领域先进工程设计软件的基础上,进行企业实地调研,综合运用Flexsim、Proplanner、AutoCAD、Matlab、动作分析软件、流水线等软硬件进行工程设计与改善,并在培训结束后对设计作品和数据资料进行汇总刻盘,最终得到可以向用人单位展示的设计成果。
针对此类学生的培养,在大三大四每学期期末开设为期3周的课程设计进行强化培训,开放性实验也可为学生提供设计与实验的平台。此外,加强校企联合,尝试在毕业设计过程中组成团队深入企业(如沙钢集团)生产第一线进行团队毕业设计。在进行实地调研两个月的基础上,每个学生针对企业实际存在的问题进行分析解决,最后形成毕业设计。这样较长时间的让学生深入企业进行课题研究,让学生能够持续性地、效果可检验地深入企业第一线进行毕业设计,并联合各个教师的研究特长对学生进行全程指导,能够切实提高学生的工程设计能力,加强团队合作精神,打造适应市场需求的高素质人才,最终的团队设计成果以总报告的方式提交给企业,深受企业赞许,多名团队成员毕业后直接进入该企业工作。
2.对管理能力相对突出的学生,进行管理实践能力强化培训。每年全国都会召开工业工程应用案例大赛及现代物流技能大赛,利用此契机让每个学生都参与其中,综合课程所学的相关知识,对大赛中提出的案例进行分析解决,让每个学生都撰写相应的案例解决报告。这样每个同学都有可以参与全国大赛的机会,报告也可以作为学生就业时的独特成果向用人单位展示。
对自主创业意识和能力相对突出的学生,进行创业实战能力培训。通过参加学院每年举办的企业生产运营BOSS大奖赛和商道管理决策竞赛,组织参与听取学校创业讲座,增强其创业意识和决策能力,并结合市场情况指导其撰写详细的创业计划书。
在该模式的引导下,南京工业大学在校生多次获得全国商科院校技能大赛、大学生管理决策模拟大赛、IE亮剑等国内竞赛奖项,毕业生中也有多个创业团队出现。
3.对科研能力突出的同学,在课程中引入研究型教学[6]。教师以课程内容和学生的学识积累为基础,引导学生创造性地运用知识和能力,自主地观察问题、提出问题、分析问题和解决问题,在研讨中积累知识、培养能力和锻炼思维。
目前,我们选取“质量管理与可靠性”课程进行研究型教学试点,教师提出问题,引起学生思考,并牵头成立该课题的研究小组,引导他们在课后开展科研活动。目前课题组已经产生了丰硕的研究成果,以这些科研成果为基础,教师与本科生合作在《工业工程与管理》等核心期刊上发表了学术论文4篇。
三、开放性的学业成果全过程立体化展示
在以上培训的基础上,每个学生都具备了可以向用人单位展示的各种成果。我们建设开放性的“工业工程学生学业成果展示”网站,将每个学生本科四年期间的各种学业成果进行集中展示,包括工程设计作品、创新创业作品、案例设计成果、各类竞赛成绩等,以学生个人为标签,为全系学生建立个人网页,全过程、立体化地反映学生本科四年的学习成果。
成果主要将以各种可视化的方式进行有效展示,包括:个性化自我介绍(视频)、发表的论文成果、各种奖励证书、工业工程三大实习(认识实习、金工实习与生产实习)的现场多媒体展示、专业主干课程实验及课程设计作品、参与竞赛获奖、创新设计作品等,可以让学生亲自参与到网页内容编辑及页面设计中,充分利用各种多媒体工具和网络平台,将每个学生的比较优势展现出来。这种方式不仅能够提高学生的学习积极性、实践能力、创新能力,而且能够使企业快速、全面、立体地了解本专业每一个学生的独特能力,而不是仅靠一纸简历来平面地了解学生的情况。这种信息沟通方式既能有效促进本专业学生的就业,又加强了学校与用人单位的联系,双方可充分利用网络这个平台进行实时的动态交互。不仅企业通过这个平台了解到学生的能力,我们也可以通过这个平台随时了解用人单位的需求,进而调整改进教学活动和实践安排。
实践表明,自该方法实行以来,学校培养了一批特点突出、素质高的优秀毕业生,获得了学生及用人单位的一致好评。可以说,启发式、开放性、因材施教的培养方式无论在提高人才培养质量方面,还是在高等教育教学理论应用和人才培养方法方面都取得了一定成果,迈开了教学改革坚实的一步。
参考文献:
[1]吴祈宗.运筹学:第2版[M].北京:机械工业出版社,
2006.
[2]马如宏.工业工程专业课程设置探讨[J].教育与职业,
2006,(35).
[3]郭绚霞.提高我国高校大学生就业力的途径[J].改革与
开放,2009,(7).
[4]张忠,杨蕾.基于当前就业形势的工业工程专业教学改
革探析[J].装备制造技术,2009,(3).
[5]杨振刚,陈建国.基于港式思路的IE专业人才培养新模
式[J].工业工程,2010,(6).
关键词:可重构制造系统;柔性测度;动态规划;柔性值
一、引言
可重构制造系统(Reconfigurable Manufacturing System,RMS)是一种能够根据产品功能和生产能力的需求及市场需求变化做出快速响应,以应对不可预测的全球性市场激烈竞争的制造系统。在当今全球经济一体化的时代背景下,制造企业面临着提高产品质量、降低产品成本及对市场需求做出快速响应的多重压力。在这一严峻形势下,提升制造系统的柔性对企业提高竞争优势有着非常重要的意义。RMS是一种可重新构形的现代制造系统,它不仅具有刚性制造系统较高的生产制造效率,还具有柔性制造系统自动化程度高的优势,从而它是满足大批定制要求的最佳制造系统。制造企业在构建可重构制造系统时,需要综合考虑柔性与成本两个因素,合理地确定RMS柔性的大小才能使企业获得最大化的利益。因此,准确地测度RMS的柔性具有重要的实践意义。
针对生产制造系统的柔性研究,早期学者的研究侧重于针对柔性制造系统的柔性进行评价。杨思远、刘细兵在讨论柔性制造系统柔性衡量标准的基础上建立了柔性的净现值指标评价模型;李岩、张晓坤和徐跃飞等在针对影响柔性制造系统的柔性因素进行深入分析的基础上提出了用模糊评价方法对制造系统柔性进行评价。随后,学者们逐渐将柔性作为制造系统的一个特征,研究柔性的概念并针对影响制造系统柔性的各种因素进行分析,并且给出了具体的柔性评价的方法。近年来,梁福军、宁汝新及姜晓鹏、王润孝、库祥臣分别对RMS的柔性进行了定义并系统阐述了柔性的分类,但是都没有针对RMS柔性的测度方面进行研究。
在已有的制造系统柔性测度研究中,学者们从不同的角度对制造系统柔性的测度进行了研究。Mandalbaum用制造系统的柔性在环境变化发生时造成的损失或者带来的收益来对柔性进行测度;Gustavsson认为制造系统的柔性可以用制造系统的投资剩余值与投资原值之比来表示;Kumar则根据生产制造系统处理不确定性环境的能力以反映该系统的柔性,建立了基于信息理论的柔性测度方法;Slack认为制造系统的柔性应该在由状态范围维度、状态转移费用维度和状态转移时间维度构成的三维空间中进行度量;Barad认为制造系统运行柔性可以用系统适应变化所需的时间来度量并采用时间Petri网描述柔性。以上为学者从四个不同的角度对柔性的主要特征进行了描述并提出了相应的柔性测度方法。
综上所述,目前对于制造系统柔性的测度主要是基于经济效果、信息论、Petri网和多维度的柔性度量方法,但这些柔性度量方法存在着不同程度的缺陷。虽然目前制造系统柔性度量研究存在一定程度的缺陷,但是针对制造系统“柔性”这一特征的研究已经十分丰富。但是,目前针对可重构制造系统柔性的研究还很贫乏,还仅限于柔性的概念和分类。针对现有研究的不足,本文选用随机动态规划的方法,针对制造系统的一个生产制造周期构造了RMS中柔性的随机动态规划定量评价模型,通过求解模型得到最优收益值,本文用RMS和刚性制造系统最优收益值之差来定义柔性,既可避免由于运行环境、制造系统自身等因素的变化对制造系统柔性测度的准确性的影响,又可以直观地反映出可重构制造系统对顾客需求发生变化的响应程度。
二、RMS的柔性及测度原理
(一)RMS的柔性
RMS的柔性是指RMS整体通过系统本身的构件之间的重新构形从而实现的对加工任务或加工工作的适应性。RMS由七个柔性因素构成,即设备柔性、产品柔性、工艺柔性、工序柔性、运行柔性、批量柔性和重构柔性。RMS具有柔性决定了其在生产制造过程中的优势:RMS具有刚性制造系统和柔性制造系统的特性,其生产能力和生产功能介于刚性制造系统和柔性制造系统之间;RMS是基于多个工件族来进行设计的,对工件族中的所有工件提供定制柔性;另外,其构形能够根据产品生产的变化而进行调整,在一定程度上适应了以多品种、中小批量、短的产品生命周期等为特征的以顾客需求为导向的生产模式。因此,可重构制造系统的柔性对企业适应快速变化的市场需求具有重要的意义。
(二)RMS柔性测度原理
本文设定了一个生产制造周期,即从上一种产品生产制造完成时刻开始到因顾客需求改变而转入下一种能够满足顾客需求的产品的生产制造完成时刻为止。针对这一生产制造周期建立随机动态规划模型,求解出该条件下的最优收益值,即可重构制造在面临需求改变的情况下对自身进行调整以适应这种变化这一过程中的获得的最优收益。由于刚性制造系统不具有柔性,在相同的假设条件下求得的刚性制造系统的最优收益值即制造系统不具备柔性值时的最优收益。RMS的最优收益值和刚性制造系统的最优收益值之差为可重构制造系统仅考虑柔性作用下制造系统的最优收益即可表示RMS的柔性值。
三、RMS柔性测度模型
RMS因其内在的柔性使得企业能够更好地适应外界环境的变化,对各种不确定性因素做出相应的反应,从而增强企业自身的市场竞争力。与此同时,可重构制造系统要素随时间变化的特征使得系统的定量评价更加困难,因此必须建立能够反映其内涵的动态随机模型。由于影响系统的不确定性因素很多,本文主要讨论由于顾客需求发生变化对RMS造成的不确定性,而这里所指的顾客需求变化指的是顾客对产品组合、需求数量及对新产品的需求等。
(一)可重构制造系统柔性定量评价的假设条件
1.假设该机械制造企业一个生产周期为上一批工件加工完毕的时刻开始至下一批工件加工完毕的时刻为止,且生产制造的两种产品种类不同。
2.假设制造系统在第一种产品生产完成至第二种产品开始生产之前自身已完成调整可以进行转产,因为本文主要研究可重构制造系统对顾客需求变化的响应程度。
3.制造系统在整个生产周期内不受到除顾客需求发生变化之外的其他外界因素影响。
(二)评价RMS柔性的随机动态规划模型
1.确定阶段
在此阶段企业将要进行个阶段的生产加工。
2.状态变量和决策变量的设定
在t阶段末,第t阶段的生产制造过程结束并开始第t+1阶段的生产制造。若在第t阶段末,已知顾客需求第i种产品的产量为di(t),即Ni(t)=di(t);假设生产制造完第j种产品的产量为xj(t),则有:状态变量St=(xi(t),di(t)),可达到的状态集合St={xj(t),dt(t)},其中i,j=1,2,...,n,xj(t)=1,2,...,Mj,di(t)=1,2,...,Dj。
第t阶段末需要对第t+1阶段的生产进行决策,允许集合为:Dt(St)={xi(t+1)},其中,i=1,2,...,n,xi=1,2,...,D。
若决策变量Ut(St)=xi(t+1),则有所做的决策为:第t+1阶段生产制造第种产品的产量为xi(t+1)。其中,Mi为每个阶段各种工件的产量上限数,Mi取整数;Di为每个阶段对各种产品的需求上限,Di取整数,且Di≤Mi;xi(t)为第i种工件的产量;dj(t)为顾客对第j种产品的需求产量;Nj(t)为第t阶段末顾客对第i种产品的需求量,Nj(t)=1,2,...,Di;di(t)∈[1,Di],di(t)取整数,i=1,2,...,n。
(三)决策过程
由于上文中构建的模型假定初始状态已给定,因此选用逆序解法求得结果:F(0,xi(0),dj(0))={EF(1,xi(1),dj(1))}。此时,F值为该可重构制造系统在整个加工阶段的最优收益值。
通过利用上文构建的随机动态规划模型并对其求解,可以得到RMS在需求等外界条件处于经常性变动的情况下整个加工阶段的最优收益值F。同时,也可以计算出该制造系统的刚性最优收益值F,即假设顾客需求等外界条件不变的情况下制造系统生产制造同一种产品的最优收益值Vf。最后,计算两者之差即可定义为RMS的柔性值,即
Vf=F-F′
以Vf,即可重构制造系统与刚性制造系统最优收益值之差来定义可重构制造系统的柔性值更具有准确性和客观性
四、结论
本文在可重构制造系统柔性的相关理论研究的基础上,通过随机动态规划的方法建立模型并通过模型求解分别得到可重构制造系统与刚性制造系统的最优收益值,最后可重构制造系与刚性制造系统的最优收益值之差即可重构制造系统的柔性值。
本文尚存在如下不足:一是只考虑顾客需求发生变化时RMS对这一外界变化的反应能力,而没有考虑其他外界因素发生变化对RMS柔性的影响;二是建立模型时假设了一个理想状态即设备处于无故障状态、原材料供应充足等条件完全具备,但在实际生产制造过程中这种理想状态并不总是存在。因此,今后需要针对以上不足之处进行系统和深入研究。
参考文献:
[1]杨思远,刘细兵.柔性制造系统的经济评价[J].上海交通大学学报,1994(02).
[2]李言,张晓坤,徐跃飞等.FMS柔性的评价[J].机械科学与技术,1994(02).
[3]梁福军,宁汝新.可重构制造系统系统理论研究[J].机械工程学报,2003(39).
[4]姜晓鹏,王润孝,库祥臣.可重构制造系统研究进展[J].机床与液压,2007(35).
[5]Mandalbaum M. Flexibility in Decision Making: an Exploration and Unification[D].Univ. of Toronto,1978.
[6]Kumar Vinod. Entropic measures of manufacturing flexibility [J].International Journal of Production Research,1987(07).
[7]Slack N. The Flexibility of Manufacturing Systems. Int. J. of Oper.&Prod.mauagement,1978(04).
关键词: 动态三角网格; AD*算法; 路径规划; 模拟仿真
中图分类号: TN911.1?34; TM417 文献标识码: A 文章编号: 1004?373X(2017)11?0103?04
Research on path planning based on dynamic triangular mesh
and heuristic search algorithm
WANG Wenxia
(Department of Computer Science and Technology, Yuncheng University, Yuncheng 044000, China)
Abstract: The dynamic triangular network map algorithm was designed and implemented on the basis of static triangular mesh to change the grid node cost value in the obstacle changing process of the triangular mesh map. The related algorithm was designed to acquire the updata information of the generated grid map in real time to realize the dynamic change effect. The search algorithm Anytime Replanning A*(ARA*) and D* Lite are combined to realize the path planning method A*(AD*) in dynamic environmet. The extended information in grid map is saved, and the expansion factor is reduced constantly in the finite time to find the node with minimum cost value in the grid map, and obtain the optimul path of dynamic planning. The dynamic scene graph is simulated in dynamic environment. The dynamic planning method is used to establish the corresponding data search structure and method to analyze and contrast the simulation results.
Keywords: dynamic triangular mesh; AD* algorithm; path planning; analog simulation
随着社会经济的发展,找到合适、优化而且适用于各种额外条件如动态环境、大规模人群、任意宽度路径等一系列需求成为路径规划算法的研究方向[1]。本文研究在动态地图网格中通过动态搜索算法,实时更新地图信息的同时采用更加高效的搜索算法记录当前群体信息并反馈出动态环境中的环境变化情况,如人群规模、路径宽度等相关信息,以便在较短时间内避免碰撞和到达目的地。
1 动态环境地图网格构建及生成
1.1 动态三角网格设计实现
在构建动态网格(Dynamic Local Clearance Triangulation,DLCT)[2]的过程中需要保持原有的LCT三角网格[3]中对路径宽度的要求,在动态化的过程中添加和删除障碍物时通过多边形障碍物ID进行操作,在添加算法中把所有障碍物的限制条件遍历直至找到需要添加障碍物的ID;在之后的删除算法中会把与找到的障碍物ID相关的限制条件同时删除。由于在地图中障碍物之间可以相互覆盖,因此每个ID可能关联相互覆盖的限制条件。
1.1.1 障碍物插入模块
该模块在原有LCT(S)的存储单元中插入新的多边形障碍物,在插入过程中,给障碍物设置新的ID。S设置为现在LCT(S)已存在的限制规划,O是将插入的新多边形障碍物。插入过程如下:
(1) 将多边形障碍物O中的k条线段插入CDT中,对于需要修改的顶点和限制边界分别存储在两个List中。List V中存储所有已修改边的邻接顶点(其中包括因CDT交换的边);List C中存υ诓迦胝习物过程中受限制的边界。
(2) 对于List C中的限制边界,通过搜索算法判断S是否被阻塞。对于每个被阻塞的遍历找到后,相关联顶点加入List V。如图1所示,通过搜索加入顶点两边可能因S引起阻隔。对每次遍历来说,相关联的阻隔顶点v被加入到List V中。
图1 寻找被阻断过程
(3) 在遍历过程所有被List V中顶点影响的顶点将重新测试其属性,判断在当前情况是否需要被限制, Local_Ref函数定义和遍历了在变化过程中与V相邻的顶点。对于每一个所有与相邻的三角形都要被访问。设为当前与临近被访问的三角形,此时需要调用函数检测是否有遍历过的节点需要重新定义;函数查看的后继节点是否被影响,当找到被影响的路径时,顶点和若不在List V中则系统自动进行添加,然后重新测试所有在V中的顶点。
1.1.2 障碍物删除模块
该模块将把现有地图中的多边形障碍物移除,移除过程中通过在插入中设置的ID找到该障碍物。由于障碍物之间可以发生覆盖,故对于每一个障碍物来说可能同时具有多个ID。删除过程如下:
(1) 将已存储的障碍物O从CDT中删除,并把所有已修改与边相关的顶c信息存储在List V1中;
(2) 将与List V1被限制顶点的周围临近顶点找到后存入List V2;
(3) 把List V1中相关的顶点信息从CDT中删除;
(4) 对于所有在执行过程中需要限制的顶点,通过调用Local_Ref函数再次遍历与其临近的顶点信息,并对发生变化的进行改变。
1.1.3 动态三角网格构建过程
基于动态三角网格地图的动态环境构建步骤如下:
(1) 获取三角网格发生变化后的地图信息。
(2) 获取地图中障碍物变化信息。
(3) 地图网格中障碍物节点信息发生改变时,若有新节点加入,则添加后更新相邻节点;若有节点删除,则删除后更新相邻节点信息。
(4) 反复执行步骤(3),直至所有的更新信息都处理完毕。
(5) 更新地图中三角网格节点信息。
1.2 动态地图构建实现
动态三角网格地图构建过程如图2所示,其中第一幅图展示了在原始地图中通过添加障碍物实现了地图中存在若干个障碍物的情况,然后通过改变地图网格中障碍物的个数、重新划分三角网格以及移动障碍物和删除算法等方法,实现了仿真过程中对真实地图情况的模拟和地图网格的构建过程。
图2 动态地图实现效果
2 启发式搜索动态路径规划方法
2.1 启发式动态路径规划方法(AD*)
Anytime Dynamic A*(AD*)算法是在原有的动态环境下将D* Lite和ARA*结合,解决了在动态环境下高效率的路径规划问题[4]。在AD*算法中利用ARA*中膨胀因子不断递减的过程进行一系列路径搜索。当三角网格地图环境发生改变并影响到边的代价值时,在D*算法的OPEN表中对应节点的Key值发生相应改变。AD*算法具体执行过程如下:
(1) 程序初始化。将OPEN,CLOSED和INCONS表清空,膨胀因子初始值为
(2) 计算最短路径。计算最短路径的过程中节点的扩展顺序为从目标点goal到起始点start进行扩展,寻找出从源点到目标点的最短路径。
(3) 个体从start开始沿路径向goal前进。
(4) 在扩展过程中,将已扩展过的节点存储在INCONS表中。
(5) 判断前进过程中网格代价值是否发生变化,如果发生变化,则以当前节点为新的起始点,并减小膨胀因子的值。
(6) 在下一次扩展过程中,用作为启发函数,在扩展OPEN表中剩余的点之前,把上一轮INCONS表中的点插入OPEN表中,在原来OPEN表的基础上修改所有与变化节点相关的rhs,key的值,清空CLOSE表。
(7) 以新的start点为起始点,goal为目标点,运行步骤(3)直至到达目标点。
2.2 地图网格密度计算
基于三角网格密度的改进方法[5],模拟人群仿真的过程在不同时间内每个三角网格参数值因agents数量的不同而发生变化,因此把密度信息添加到Key值的计算中,可以估算每一个OPEN表中节点的优先权从而得到最优路径。density(n)表示第个节点所在三角网格的密度值;是通过节点和距离信息来估算到目标点的路径长度[6]。此时OPEN中扩展节点的优先权的计算公式如下:
(1)
式中:膨胀因子要满足条件
将agents标记在不同三角形网格中,通过计算当前三角网格的密度信息决定不同节点在OPEN表中的优先权,此时Key的值计算公式(2)如下所示:
(2)
通过不断减小在搜索路径过程中膨胀因子的值找到最优路径。
3 动态路径规划算法设计与实现
3.1 搜索节点数据结构
在动态环境中,以DLCT三角网格[7]作为地图的划分方法,将地图网格中的动态变化信息和移动个体动态搜索路径方法相关联,构造如下数据结构,在Map_Node中存储动态网格中障碍物发生变化后节点的构建网格信息;Agent_Node中记录移动个体在寻路过程所扩展的三角网格边。规划路径时根据当前Open_Node节点中存放的信息计算最优路径。
3.2 动态搜索算法实现
在动态搜索算法中,当动态环境发生变化时更新三角网格地图信息,通过在OPEN表中扩展边,更新变化的顶点信息与其邻接节点,判断当前移动个体路径是否受到影响,未受影响的个体按原路径移动;由于网格变化需要重新寻路时,计算节点代价值如下所示:
(3)
通过计算新添加节点(添加障碍物)或位置变更节点(移动障碍物)的代价值得到当前三角网格地图的节点序列,在OPEN中节点进行扩展时根据代价值的排序重新规划路径,通过执行RecomputeShortestPath()得到从当前位置为起始点到目标点的路径规划方法[8]。例如,个体Agent移动到节点所连接的边edge时,移动障碍物模块至三角网格edge边移动方向的前方,此时动态规划域与个体移动域有交集,在此区域里由于顶点变化三角网格地图重新划分,若划分后节点不存在,通过不断执行Pred(s)找到前驱节点至此节点在更新后的网格地图中存在,同理,后继节点通过执行Succ(s)不断向后查找直至找到的后继节点与新生成的网格地图中匹配的节点(未找到则重新规划此区域的路径),在前驱节点和后继节点之间的区域D中根据式(3)计算得到网格地图变化后Agent个体从当前位置到目标点移动的规划路径。
4 基于动态环境的动态规划仿真与实现
4.1 地图规模变化策略
为了验证动态搜索算法在不同规模三角网格地图上的适用性和模拟仿真场景中复杂逼真程度,同时证明DLCT网格划分方法对不同地图的划分结果的差异。本实验应用动态搜索算法AD*实现在不同规模地图上个体规划路径过程。如图3所示,图中地图网格的复杂程度由简到繁分别采用5×5,10×10,20×20,40×40的网格拓扑结构,通过不断增大迷宫场景图的复杂程度,在地图中选择起始点和目标点后通过启发式动态路径搜索算法,AD*在不断变化的三角网格中进行路径规划,最终找到当前状态下的最优路径。
通过采用不同规模地图对单一移动个体规划路径,不同的搜索算法寻路过程与地图的复杂程度正相关,随着地图复杂程度的增加,搜索路径的过程在地图网格中与扩展的三角边总数呈正相关的趋势增长。因此,在复杂多变的环境中模拟真实场景时,采用高效的地图网格剖分方法能够使路径规划效率得到提高。
4.2 群w移动策略
4.2.1 碰撞检测方法
采用的规避方法是随机处理方式和球体处理方法相结合,在Agents碰撞发生后进行处理,设置两个移动个体之间距离的最小值,若小于最小值时则认为碰撞发生。在碰撞发生后,若个体所在三角网格密度信息较大,则重新规划路径进行移动直至目标点;若个体所在三角网格在密度范围内则个体延时等待一段时间后,通过避让的方法绕过障碍物继续前行到达目标点。
4.2.2 个体规避策略方法实现
在动态三角网格地图环境中,当障碍物发生移动时,移动个体会根据当前规划路径是否受到影响决定移动策略,根据对方向进行判断,若在移动过程中碰撞发生,记录当前位置信息CurPosition,判断当前三角网格密度值density,在密度满足阈值条件时应用规避方法重新规划路径继续移动;其他情况下,需改变移动方向,密度满足要求时进行重新规划。
模拟仿真过程截图如图4~图7所示,在图4和图5中,障碍物的移动没有对个体移动的路径产生影响,仍按照原规划路径前行;在图6中,当动态地图网格中障碍物变化导致网格布局发生改变,从而对个体原路径产生影响时,个体重新规划路径;在图7中,当地图网格发生动态改变时,若同时存在的若干移动个体发生碰撞,此时应用个体移动的规避策略对路径进行重新规划。
4.3 群体动态路径规划方法
4.3.1 群体动态路径方法
群体路径规划方法是在单独个体基础上对每个移动物体进行路径规划的过程。为了模拟大规模人群仿真技术提出群行为模拟方法,移动个体对不同的Agent的影响有很大差异,主要问题有如下几个方面:
(1) 如在此移动个体之前有另一个体相向而行,则其中一个物体应该改变速度方向避免碰撞发生。
(2) 若两个移动个体同向时,其中较慢的个体应在人群密度较小的情况下改变速度方向超过前方遮挡个体;而在人群密度较大时,跟在前方物体之后行走。
综合以上问题描述,本文通过碰撞类型分类对优先级进行划分。按照优先级原则对仿真环境中的Agents个体进行优先级排序(模拟真实场景中的出场顺序或根据重要程度排序等),根据优先级递减划分成不同的组别,对于中的每个Agent个体,保存其start,goal,position,DesSpeed,velDir变量信息。
在规划群体路径过程中,根据Agents的优先级大小对速度方向进行修改,若在中Agents和中的移动个体移动方向相同则需要在判断优先级的条件下重新规划其余组别的路径方向。在采用以上方法避免碰撞发生的条件下,若碰撞发生,记录当前碰撞发生时移动个体的位置信息position,计算当前三角网格的密度density和相邻节点构造网格密度值,根据Agents的优先级以及已得到的密度信息进行重新排序,若此时的移动个体满足优先级条件,则重新计算地图网格的代价值并重新规划由当前位置position到目标点的路径;若此时碰撞个体优先级较低,则处于等待状态至下一次重新规划。
4.3.2 群体规划路径实现
为了验证本文的群体动态路径规划方法,对在地图网格中可能发生碰撞的Agents个体采用碰撞规避策略对每个Agents个体进行路径规划,在仿真的过程中不断增加Agents规模,分别对Agents=50,Agents=100,Agents=150,Agents=200在不同时刻的寻路情况仿真模拟,实现结果截图如图8所示,图中不同颜色的小方格分别代表不同的Agents移动个体,每个移动个体从初始点出发到目标点规划出各自的路径,当有Agents个体之间发生相互碰撞时(此时原规划路径移动方向被阻挡),则Agent个体根据本文中采用的碰撞规避原则,采用AD*算法绕过对方后重新规划路径。
图8 群体规划路径实现
由仿真效果可知,随着网格地图中Agents个体数的不断增加,发生碰撞的几率明显增大,因此在动态环境中,在采用高效的动态路径搜索算法的同时,需要针对群体中发生碰撞的规避策略来避免碰撞发生。
4.4 仿真实验结果分析
通过对动态环境中的动态网格效果、动态路径规划算法进行验证,将二者结合实现本文关于动态环境中的路径规划方法的研究。在动态网格地图中分别移动和增添障碍物后,实现了地图网格发生变化情况的模拟。在动态搜索算法中,通过将D*Lite和ARA*算法结合实现了动态路径规划方法的优化AD*算法,通过将二者结合,定义新的数据结构存储移动个体移动过程中的变量值,对群体路径规划和碰撞规避策略的应用计算达到了动态环境路径规划的模拟仿真效果。
5 结 论
本文的主要研究内容包括基于动态环境的网格地图方法和动态路径规划方法的研究,在此基础上实现动态环境中的路径规划。在动态路径规划的过程中需要对网格构建和搜索算法进行研究,对地图网格划分方法在LCT静态三角网格的基础上,通过障碍物的移动、添加和删除实现了动态网格规划方法(DLCT);在路径搜索算法方面,将基于A*算法实现的ARA*算法和动态搜索算法D*Lite相结合,实现了在动态环境中的路径规划算法AD*。
参考文献
[1] 孙俊,戴国骏,张怀相.裁剪优化的Anytime算法[J].杭州电子科技大学学报,2010,30(2):41?44.
[2] 张胜.一种基于状态空间的启发式搜索算法及其实现[J].现代电子技术,2008,31(16):79?80.
[3] 孙兰会,成锋,陆愈实.基于GIS的路径规划算法研究与实现[J].现代电子技术,2016,39(5):101?104.
[4] 思磊.距离网格地图动态更新及基于距离网格地图路径规划的研究[D].西安:西安电子科技大学,2013.
[5] 朱大奇,颜明重.移动机器人路径规划技术综述[J].控制与决策,2010,25(7):961?967.
[6] 席裕庚,张纯刚.一类动态不确定环境下机器人的滚动路径规划[J].自动化学报,2002,28(2):161?175.