动态规划思想范例6篇

前言:中文期刊网精心挑选了动态规划思想范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。

动态规划思想

动态规划思想范文1

关键词:物流产业;动态规划;资源优化

中图分类号:F259.22 文献标识码:A

Abstract: Dynamic programming is the way to improve the allocation of logistics resources. The theory and method should be regarded as the key to solve the optimization problem of logistics resources for the industry supply chain and enterprise cost and efficiency. This paper classified the research on the dynamic programming of the logistics industry in China into several types and did an overall analysis of the relative research results in this area from two perspectives: one is the macro logistics industry, and the other is the designated link in the process. In addition, an review was given on the research contents, methods and characteristics after consulting a large quantity of related literature with the hope to facilitate the future studies.

Key words: logistics industry; dynamic programming; resource optimization

0 引 言

现代物流业是支撑国民经济发展的基础性、战略性产业[1],具有巨大的市场空间和发展潜力。物流业是融合仓储、配送、运输、货代、信息等的复合型服务业,随着国家“一带一路”战略的实施,物流业也迎来重大的发展机遇。动态规划是运筹学中一种研究多阶段决策问题的理论和方法[2],无论是对于物流行业中供应链的优化,还是对于企业内部物流成本和效率的优化,这种理论和方法都为企业的管理决策提供了不同层面的支持。因此,动态规划理论和应用研究成为当前物流领域解决供应链效率低下、保障资源有效配置的热点。本文通过对相关文献的研究,分析了动态规划在我国物流产业的应用研究现状,为学者的进一步研究探索提供便利。

1 国内外动态规划在物流产业的研究概况

近年来,动态规划在物流产业的研究呈现上升趋势,本文采用文献检索的方法对国内外公开发表的动态规划在物流产业研究的相关文献进行统计整理。

通过ELSEVIER公司的Science Direct数据库,使用“Dynamic programming of goods”、“Logistics dynamic programming”和“Transportation dynamic programming”三个检索词进行检索,检索情况见表1。

使用清华同方数据库和万方数据库,利用“物流动态规划”、“运输动态规划”、“货物动态规划”、“物流资源优化”、“交通运输优化”和“货物仓储优化”六个关键词进行检索,检索情况见表2。

由表1、表2统计的结果可以看出,国内对动态规划在物流产业的研究要多于国外,这与当前国内物流业的快速发展是分不开的。从以上的研究文献来看,主要可以将研究分为两个主要部分,一是动态规划在宏观物流产业的研究;二是针对物流过程中某个环节,如库存采购、物流配送、仓库选址过程中的物流资源进行配置优化研究。

2 动态规划在宏观物流产业的应用研究

针对动态规划在宏观物流产业的问题进行研究主要分为:企业物流资源研究、行业物流资源研究、特定背景物流资源研究三个方面。

(1)企业物流资源研究。天津大学的赵双记[3]以宝硕化工供应链系统为研究对象,从采购、库存、生产三个方面入手,解决宝硕化工现存生产与库存之间的矛盾问题。无锡商业职业技术学院的潘珩[4]对企业生产物流进行了研究,运用动态规划的方法,针对企业的生产物流和多种产品,提供了优化的分析和运算方法。哈尔滨理工大学的刘虹等人[5]根据企业的物流优化模型,提出一种新的矩阵运算的动态规划算法,更好地解决了企业对单个用户的供应链优化。

(2)行业物流资源研究。大连海事大学的边展[6]通过分析海运行业港口集装箱堆场的相关操作事宜,以提高装卸效率为目标优化了集装箱的装船顺序。黄冈职业技术学院的张孝忠、周慧兰,北京交通大学的董祥俊等[7]针对铁路行业的物资管理的特点,提出通过建立动态规划模型来变更存储设施选址的方法,降低了铁路施工企业物资运输和其他相关成本。华中科技大学的马士华等[8]通过考察公路运输行业中供应链物流运作能力的多项指标,对达到最优物流能力的最小物流成本进行了研究。

(3)特定背景物流资源研究。物流行业的特定背景非常多样,本文针对其中的应急物流、回收物流和不同生命周期物流进行简要总结。

北京交通大学的英升贺等人[9]针对应急物流的物资配送特征,建立了受灾地区接收点和非受灾地区发送点之间的配送网络。武汉理工大学的余浩然[10]利用多周期动态规划理论对再制造物流的设施选址和流量分配进行了着重研究,实现了节约和环保的生产理念。上海交通大学的佘小川等人[11]分析了产品在不同生命周期情况下采取的不同市场战略,并在此基础上利用动态规划方法对物流成本最小化问题进行了研究。

从这些角度进行研究的文献来看,对于动态规划在宏观物流产业的研究呈现了以下特征:一是研究侧重于定性分析,对物流产业进行理论研究探索;二是侧重于定量分析,运用运筹学中的动态规划方法和计算机模拟仿真技术来建立优化模型。随着计算机和物联网技术的快速发展,第二个特征日益突出。

3 动态规划在物流环节的应用研究

对物流过程中某个环节的动态规划研究主要是通过库存采购环节、物流配送环节和仓库选址环节三个方面进行了研究。

(1)库存采购环节。长春理工大学的王景恒[12]建立了配送中心的货物装卸搬运模型,利用动态规划方法求解,并通过实例证明了模型的可行性及实用性。常州轻工职业技术学院的施新平[13]通过分析汽车动态库存服务方法,构造了以时间为函数的动态物流库存管理模型,促进了企业库存管理能力和创新服务能力。曲阜师范大学的徐健腾[14]利用组合最优化理论分别对单一产品多断点、单断点和易腐产品的经济批量问题进行研究。

(2)物流配送环节。对外经济贸易大学的周森[15]利用自然数序列来编码,以遗传算法为依托来解决车辆的路径优化问题,得到了低于案例成本的方案。山东经济学院的袁杰[16]提出了先分配车辆后指派车辆的处理思路,利用动态规划方法和蚁群算法为目标分配车辆,实现了将最短车辆路径问题向最优客户问题的转化。重庆大学的陶波[17]通过研究B2C电子商务企业的物流配送,建立整数规划的最短路径模型,并利用动态规划法为理论求解并得到质量较高的解。重庆邮电大学的任志霞[18]利用运筹学方法和计算机技术分别对0-1规划问题、背包问题和路线优化问题进行研究,为配送环节提供帮助。

(3)仓库选址环节。南昌大学的胡章云[19]通过考虑供应商的供应量、客户的需求量及配送时间等因素,建立了不确定环境下配送中心的动态选址模型,利用动态规划思想来支持长期的动态选址决策。武汉理工大学的徐利民等人[20]针对不考虑时间因素的静态选址,提出了运用动态规划求解的思想,并结合实例分析了加入时间变量后企业如何做出选址决策。东北大学的陈冰冰[21]利用一个企业的数据进行实例分析,建立了双层规划和动态规划相结合的物流中心选址模型。浙江师范大学的卓婧婧等人[22]基于树型动态规划来简化配送网络,提出较之传统动态规划、层次分析法等更有优势的选址算法。

以上三个研究方向的研究成果各有特点:库存采购环节的研究主要集中在库存管理能力、装卸搬运方法和经济批量等问题的优化;物流配送环节的研究主要是针对最短路径的优化和计算;仓库选址环节的研究则集中于在考虑不同因素情况下对最佳选址模型的建立。这些研究主要采用动态规划和其他辅助方法来建立模型或者求解,部分利用计算机技术进行仿真或者以实例验证。理论指导性较强,但实践指导性较弱。

4 国内动态规划在物流产业的研究展望

通过以上对国内动态规划在物流产业研究的相关文献综述可以看出,研究既有理论方法的探索、配置模型的构建,也有与特定背景结合的探讨,研究态势多元化。本文认为,动态规划在物流产业的研究可以重点从以下几个方面进一步展开:

(1)结合我国供应链体系,将动态规划运用到生产、仓储、销售、配送等整个供应链中,以供应链整体优化为目标,促进物流资源的整合优化。

(2)结合我国信息技术的发展情况,研究物联网、云计算、大数据、移动互联网等先进的信息技术在物流领域的应用,利用信息技术手段进行动态规划整合。

(3)结合我国“一带一路”的发展战略,按照我国物流业的发展状况、物流基础设施水平以及市场需求等,在战略层面对我国物流环境进行规划研究。

5 结束语

综上所述,动态规划在物流产业的应用是现代物流管理研究的重点,对该问题的研究具有理论价值和现实意义。希望本文对动态规划在我国物流产业应用研究的相关文献的总结分析,能够为我国物流行业和物流企业提供帮助,为相关研究人员提供参考。

参考文献:

[1] 国务院. 物流业发展中长期规划(2014―2020年)[Z]. 2014.

[2] 黄立君. 动态规划在企业运输物流中的应用研究[J]. 赤峰学院学报,2009(3):98-100.

[3] 赵双记. 基于动态供应链管理的宝硕化工流程分析与研究[D]. 天津:天津大学(硕士学位论文),2005.

[4] 潘珩. 动态规划方法在企业生产物流控制中的应用研究[J]. 物流技术,2004(4):72-73.

[5] 刘虹,孙金梅,陈德运. 一种基于供应链的动态规划算法[J]. 哈尔滨理工大学学报,2003(2):122-124.

[6] 边展. 基于混合动态规划的集装箱装船顺序优化[D]. 大连:大连海事大学(硕士学位论文),2012.

[7] 张孝忠,周慧兰,董祥俊,等. 动态选址在铁路施工企业物资管理中的应用[J]. 经营管理,2007(7):49-51.

[8] 马士华,申文. 供应链物流运作能力计划模型与分析[J]. 中国管理科学,2007(8):83-88.

[9] 英升贺,李毅鑫. 动态规划和整数规划在应急物流物资配送优化中的应用研究[J]. 物流技术,2009(8):80-83.

[10] 余浩然. 再制造物流网络多周期动态规划模型研究[D]. 武汉:武汉理工大学(硕士学位论文),2012.

[11] 佘小川,季建华. 基于产品生命周期的物流系统动态规划研究[J]. 科技进步与对策,2006(5):102-104.

[12] 王景恒. 物流中心货物最优配装问题的动态规划解法[J]. 长春理工大学学报,2004(3):9-11.

[13] 施新平. 基于动态汽车库存管理的物流企业创新服务分析[J]. 物流技术,2014(5):316-318.

[14] 徐健腾. 组合最优化在库存管理中的应用[D]. 曲阜:曲阜师范大学(硕士学位论文),2007.

[15] 周森. 基于遗传算法的物流运输中的车辆路径研究[D]. 北京:对外经济贸易大学(硕士学位论文),2006.

[16] 袁杰. 基于蚁群算法的多车场车辆路径问题研究[D]. 济南:山东经济学院(硕士学位论文),2010.

[17] 陶波. 基于最短路径算法的物流配送车辆优化调度的研究[D]. 重庆:重庆大学(硕士学位论文),2009.

[18] 任志霞. 物流配送系统中的运筹学问题及方法研究[J]. 物流科技,2007(3):10-12.

[19] 胡章云. 不确定环境下的城市配送中心动态选址研究[D]. 南昌:南昌大学(硕士学位论文),2013.

[20] 徐利民,马良成,方芳. 仓储中心的动态规划选址及应用[J]. 武汉理工大学学报,2003(4):256-259.

动态规划思想范文2

关键词:动态规划;编程;技巧

中图分类号:J954 文献标识码:A 文章编号:1007-9599 (2012) 16-0000-02

首先,第一类动态规划的题目。这类问题往往直接采用递推的方式从前往后一步步记录下每一步的结果,最后得出问题的解就可以了。我们来看一个例子:

“数字三角形问题”。问题的大意是:给定一个由n行数字组成的数字三角形,如下面所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。

5(行数)

7

3 8

8 1 0

2 7 4 4

4 5 2 6 5

这道题很明显要用动态规划算法求解。假设我们要求第i行的最大值,怎么求呢?可能有的人会找每一行最大的数,但这样是行不通的,因为我们要找到一条路径,也就是上一行与下一行选的数必须不能隔数字。那怎么办呢?我们如果要找第i行的最大值,可以从第i-1行来找。对于第i行的每一个数字,通过选第i-1行中符合题目要求的数字,求出到该数的路径的最大值。我们最后求出的第n行的最大值中求出最大的即可。

附上代码(c语言):

#include

int main()

{

int n,i,j,max;

int num[120][120];

int sum[120][120];

scanf("%d",&n);

for(i=1;i

{

for(j=1;j

{

scanf("%d",&num[i][j]);

}

}

sum[1][1]=num[1][1];

for(i=2;i

{

for(j=1;j

{

if(j==1)

{

sum[i][j]=sum[i-1][j]+num[i][j];

}

else if(j==i)

{

sum[i][j]=sum[i-1][j-1]+num[i][j];

}

else

{

if(sum[i-1][j-1]>sum[i-1][j])

{

sum[i][j]=sum[i-1][j-1]+num[i][j];

}

else

{

sum[i][j]=sum[i-1][j]+num[i][j];

}

}

}

}

max=0;

for(i=1;i

{

if(sum[n][i]>max)

{

max=sum[n][i];

}

}

printf("%d\n",max);

return 0;

}

其次,第二类动态规划算法。这类动态规划算法往往不像第一种那么直接往后递推就可以了。这类问题往往要借助于前面求解过的子问题,而且不一定是刚刚求解过的子问题。其实这类问题有点分治法的意思,但是可以记录下已经求解过的子问题的结果,不必再在后面的问题中求解一遍。我们来看一个典型的例子——“0-1背包问题”:

题目大意是,有一个背包容量为v,还有若干个宝物,第i个宝物的价值为v[i],容量为w[i]。试设计一个算法,在背包容量范围内,把总价值最大的宝物总和加入到背包内。数据输入实例:

4(宝物个数) 6(背包容量)

1 4 (第一个宝物的容量和价值,下同)

2 6

3 12

2 7

这个问题怎么分析呢?我们假设已经装到第i个宝物了,容量为m时最大价值为f[m]。那么这时最大的价值为多少呢?如果第i个宝物装到了背包中,那么这时价值为f[m—w[i]]+v[i],如果不装呢,价值仍为f[m]。取其中最大值。这里求数组f的各个元素时,我们可能需要前面求过的子问题。

附上代码(c语言):

#include

int main()

{

int dp[13000],n,m;

int w[3500],d[3500],i,j;

scanf("%d%d",&n,&m);

for(i=1;i

{

scanf("%d%d",&w[i],&d[i]);

}

memset(dp,0,sizeof(dp));

for(i=1;i

{

for(j=m;j>=w[i];j--)

{

if(dp[j]

{

dp[j]=dp[j-w[i]]+d[i];

}

}

}

printf("%d\n",dp[m]);

return 0;

}

最后,我们来看第3类动态规划问题。这类动态规划牵涉到了数据结构的内容,对我们这部分的学习以及抽象出算法模型的能力有比较大的要求。我们必须先对这部分的数据结构有自己的理解和体会,然后才能用算法的知识求解这类问题。我们来看一个问题:

“加分2叉树”。 设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整数),记第j个节点的分数为di,tree及它的每个子树都有一个加分,任一棵子树subtree(也包含tree本身)的加分计算方法如下:

subtree的左子树的加分× subtree的右子树的加分+subtree的根的分数

若某个子树为主,规定其加分为1,叶子的加分就是叶节点本身的分数。不考虑它的空子树。

试求一棵符合中序遍历为(1,2,3,…,n)且加分最高的二叉树tree。要求输出;

(1)tree的最高加分

(2)tree的前序遍历

【输入格式】

多组测试数组,对于每组:

第1行:一个整数n(n

第2行:n个用空格隔开的整数,为每个节点的分数(分数

【输出格式】

第1行:一个整数,为最高加分(结果不会超过4,000,000,000)。

第2行:n个用空格隔开的整数,为该树的前序遍历。

【输入样例】

5

5 7 1 2 10

【输出样例】

145

3 1 2 4 5

这个问题就用到了2叉树的知识。我们首先得对树有一定的了解,必须了解树的各种遍历方式,先序遍历,中序遍历,后序遍历。

先序遍历,也叫先根遍历,遍历的顺序是,根,左子树,右子树

中序遍历,也叫中根遍历,遍历的顺序是,左子树,根,右子树

后序遍历,也叫后跟遍历,遍历的顺序是,左子树,右子树,根

然后我们来分析这道题。

设节点d为最优的根节点,那么可以把这棵树分成[1,d-1]和[d+1,n],这颗树的加分为子树[1,d-1]的加分与子树[d+1,n]加分的乘积与d的加分的和,而[1,d-1]和[d+1,n]的加分也可也一定是最优加分,所以这个题具有最优子结构,那么可以用动态规划。

设f[k,j]为子树k到j的最高加分,求f[k,j]的最优值,就要求f[1,d-1]和f[d+1,n]的最优加分,那么枚举根节点p,则有

f[k,j]的最优值=f[k,p-1]*f[p+1,j]+v[p](k

规划方程为f[k,j]=max{f[k,p-1]*f[p+1,j]+v[p]}(k

动态规划思想范文3

关键词:管理运筹学; 生产管理; 战略规划; 利润最大化

The Application of Management and Operations Research

In Enterprise Management of Business Operators

Abstract: With the development of enterprises and the extensive application of computers, management and operations research is playing an important role in production management and strategic planning of enterprise. The implementation of management and operations research in enterprise can reasonably arrange the allocation of human resources, material resources, capital resources and achieve the maximum profit for enterprise.

Key words: management and operations research; production management; strategic planning; maximum profit

1 管理运筹学概述

运筹学的思想在古代就已经产生了。敌我双方交战,要克敌制胜就要在了解双方情况的基础上,做出最优的对付敌人的方法,这就是“运筹帷幄之中,决胜千里之外”的说法。

运筹学主要研究经济活动和军事活动中能用数量来表达的有关策划、管理方面的问题。当然,随着客观实际的发展,运筹学的许多内容不但研究经济和军事活动,有些已经深入到日常生活当中去了。运筹学可以根据问题的要求,通过数学上的分析、运算,得出各种各样的结果,最后提出综合性的合理安排,已达到最好的效果[1]。

随着科学技术和生产的发展,运筹学已渗入很多领域里,发挥了越来越重要的作用。运筹学本身也在不断发展,现在已经是一个包括好几个分支的数学部门了。比如:数学规划(又包含线性规划;非线性规划;整数规划;组合规划等)、图论、网络流、决策分析、排队论、可靠性数学理论、库存论、对策论、搜索论、模拟等等[2]。

按照我过的学科分类,管理学下面分管理科学、工商管理学和宏观管理与政策,而运筹学归于管理科学里面。但是按照国际学界的观点,有人认为运筹学是管理科学的一个分支,也有人则认为管理科学是运筹学的一个分支。按照大多数学者的观点,我们这里将两者作对等的概念来看待。但是为了不与工商管理混淆和简便起见,我们用管理运筹学一词代替管理科学和运筹学[3]。

在企业管理的领域中,运筹学发挥了其重要的作用,可以说,管理运筹学的产生,为企业实现其最终目标提供了最直观可行的数学模型和理论指导。管理运筹学的主要研究内容包括:线性规划的图解法、线性规划的计算机求解、线性规划在工商管理中的应用、单纯形法、单纯形法的灵敏度分析与对偶、运输问题、整数规划、动态规划、图与网络模型、排序与统筹方法、存储论、排队论、决策分析、预测等[4]。

运筹学的思想贯穿了企业管理的始终,它在企业战略管理、生产计划、市场营销、运输问题、库存管理、人事管理、财务会计等各个方面都具有重要的作用[5]。

2 管理运筹学的研究方法

运筹学的研究方法有:1.从现实生活场合抽出本质的要素来构造数学模型,因而可寻求一个跟决策者的目标有关的解;2.探索求解的结构并导出系统的求解过程;3.从可行方案中寻求系统的最优解法。

传统的管理运筹学解决问题的方法一般可分为以下几个步骤:确定目标、制定方案、建立模型、制定解法[6]。而现代管理运筹学的内容讨论可以从以下几个步骤着手:问题产生背景的分析―决策者的目标分析―确定决策目标―决策者可控要素分析―确定决策变量―决策者所受环境的限制(不可控要素分析)约束条件研究―建立运筹学模型[7]。

运筹学发展到今天,内容已相当丰富,研究方面也相当深入。其研究问题主要有以下特点[8]:

面向实际,从全局追求总体效益最优;

借助于模型,用定量分析的方法,合理解决实际问题;

多学科专家集体协作研究;

计算机技术的发展为管理运筹学提供了新的契机,运筹学与计算机技术相结合,在现代管理信息系统的开发和应用中发挥着重要的作用,而管理信息系统是现代化管理不可或缺的组成部分。因此,运筹学在现代管理中具有相当重要的地位和作用,它是企业及公共事业机构管理者应当了界和掌握的一门科学[9]。在计算机参与的管理运筹学中,决策的过程可以分为:发现问题、分析问题、找出问题的关键点;罗列可供选择的方案;确定解决问题的方案;建立模型,确定目标函数及约束条件;把所有数据转换成计算机可识别的符号,输入计算机;对答案进行修正;得到需要的符合实际的最优解[4]。

在进行决策的分析时,可以运用两种基本的分析方式:定性分析和定量分析。定性分析主要依赖于管理者的主管判断和经验,靠的是管理者的直觉,这种分析与其说是科学不如说是艺术。在进行决策时,如果管理者有相似的经历,或遇到的问题比较简单,也许应该首推这种分析方法。但是,如果管理者缺乏经验或问题很复杂,定量分析方式就显得非常重要,所以管理者在进行决策时应该予以充分重视。在运用定量分析的方法时,分析员应首先从问题中提取量化资料和数据,对其进行分析,再运用数学表达式的形式把问题的目标、约束条件和其他关系表达出来。最后,分析员依靠一种或多种定量的方法,提出建议,这种建议应该是建立在定量分析的基础上的[10]。

3 多阶段决策-动态规划法阐述

经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。 为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。这种方法主要研究计划管理工作中有关有限资源的分配的问题,一般可以归纳为在满足即定条件限制下,按某一衡量指标来寻求最优方案的问题[11]。

在实际应用中,许多问题的阶段划分并不明显,这时如果刻意地划分阶段法反而麻烦。一般来说,只要该问题可以划分成规模更小的子问题,并且原问题的最优解中包含了子问题的最优解(即满足最优子化原理),则可以考虑用动态规划解决。动态规划的实质是分治思想和解决冗余,因此,动态规划是一种将问题实例分解为更小的、相似的子问题,并存储子问题的解而避免计算重复的子问题,以解决最优化问题的算法策略。由此可知,动态规划法与分治法和贪心法类似,它们都是将问题实例归纳为更小的、相似的子问题,并通过求解子问题产生一个全局最优解。其中贪心法的当前选择可能要依赖已经作出的所有选择,但不依赖于有待于做出的选择和子问题。因此贪心法自顶向下,一步一步地作出贪心选择;而分治法中的各个子问题是独立的(即不包含公共的子子问题),因此一旦递归地求出各子问题的解后,便可自下而上地将子问题的解合并成问题的解。但不足的是,如果当前选择可能要依赖子问题的解时,则难以通过局部的贪心策略达到全局最优解;如果各子问题是不独立的,则分治法要做许多不必要的工作,重复地解公共的子问题。解决上述问题的办法是利用动态规划。该方法主要应用于最优化问题,这类问题会有多种可能的解,每个解都有一个值,而动态规划找出其中最优(最大或最小)值的解。若存在若干个取最优值的解的话,它只取其中的一个。在求解过程中,该方法也是通过求解局部子问题的解达到全局最优解,但与分治法和贪心法不同的是,动态规划允许这些子问题不独立,(亦即各子问题可包含公共的子子问题)也允许其通过自身子问题的解作出选择,该方法对每一个子问题只解一次,并将结果保存起来,避免每次碰到时都要重复计算。因此,动态规划法所针对的问题有一个显著的特征,即它所对应的子问题树中的子问题呈现大量的重复。动态规划法的关键就在于,对于重复出现的子问题,只在第一次遇到时加以求解,并把答案保存起来,让以后再遇到时直接引用,不必重新求解。

4 管理运筹学的实际应用举例

在本例中,主要针对企业管理中的资源分配问题进行讨论和研究,目标为实现企业资源分配的合理化和最优化,为企业节省资源的同时,创造企业利润的最大化。

4.1 模型知识点介绍

本例中的建立的模型属于多阶段决策,所采用的研究方法为动态规划法。首先,对多阶段决策所涉及到的理论知识作以介绍[12]。

① 阶段:若干相互独立的可排列的部分,一般用变量K来表示(K=1、2、3、4、5……….)。

② 状态:在K阶段初始时刻可能出现的客观情况,用变量来表示。

③ 决策与策略:策略指单阶段的策略集。若次阶段为第K阶段,那么第K阶段的决策用V()来表示。

④ 状态转移律:=T[,V()] (其中,T是一个函数)。一般用表格、公式、函数(传递函数)来表示。

指标函数:(第K个阶段的指标函数,一般可以指距离、效益等指标),=(,)。

过程指标函数:从第K个阶段开始,一直到最终产生的结果(叠加),。

全过程指标函数:是最优的。

过程指标函数的类型: 或

基本方程:,其中,或为min或为max

4.2 模型建立与求解

某公司下设有甲、乙、丙三个生产车间,现为完成一个特定目标,在一定的期限内生产出尽可能多的产品,争创最大利润,特新进5台同样的生产设备。现在要将这5台生产设备根据各车间的生产情况进行分配,若将一台分配给甲车间,可创造利润3万元,将一台分配给乙车间,可创造利润5万元,将一台分配给丙车间,可创造利润4万元;若将两台设备分配给甲车间,可创造利润7万元,将一台分配给乙车间,可创造利润10万元,将一台分配给丙车间,可创造利润6万元......依次类推,现将设备分配和相应所创造的利润情况制成下表:

表1 设备分配及利润表

从表中可以看出以下信息:

阶段:3个

状态变量:=5, 0<≤5, 0<≤5

策略和决策变量: ,

指标函数:(指结果,这里就是利润)

状态转移:

基本方程具体求解步骤如下:

本算法遵循的原则是:算的时候倒着算,分的时候正着分。

由此,我们可以得出该资源分配模型的分配结果为:

第一种分配方法,给甲车间0台设备,乙车间2台设备,丙车间3台设备,共为公司创造利润为21万元;

第二种分配方法,给甲车间2台设备,乙车间2台设备,丙车间1台设备,共为公司创造利润为21万元。

5 结论

从以上的具体模型举例可以看出,管理运筹学在企业管理中发挥着很大的作用,为企业的管理时间分配、人力资源分配、资金分配、资源分配等制定最合理的分配方式,从而企业可以根据这些计算出来的数据,并结合企业自身的实际情况制定企业管理战略和生产规划,以及对企业的市场营销策划都具有一定的指导作用。

动态规划思想范文4

【关键词】算法分析与设计 比较教学法 课程教学

【中图分类号】G642 【文献标识码】A 【文章编号】2095-3089(2016)11-0111-02

一、引言

“算法分析与设计”是计算机科学与技术、软件工程、信息管理与信息系统、医学信息工程等计算机相关专业一门重要的专业课[1],是计算机科学和计算机应用的核心课程之一。“算法分析与设计”是一门兼具理论性和实践性的课程,其中部分教学内容具有一定的难度,需要在教学过程中适当引入一些先进和高效的教学方法。

比较教学法是一种对具有可比性的教学内容通过横向和纵向比较,找出它们具有的相同点和不同点,让学生在对比分析中学习和掌握所学内容的教学方法,它通过在教学活动中比较两个或两个以上的认识对象,分析它们存在异同,达到辨识、了解和把握认识对象的目的[2-3]。比较教学法有助于加深学生对知识的理解,建立相关知识之间的联系,培养学生知识迁移应用和自主学习的能力。比较教学法在计算机类专业课程的教学中得到了较为广泛的应用[4-5]。通过多年的教学实践,我们发现比较教学法也可以很好地应用到“算法分析与设计”课程的教学过程中。

二、比较教学法的应用

在“算法分析与设计”课程中,可以从多个角度对教学内容进行比较,下面介绍几种较为典型的应用情况。

1.同一算法求解不同问题的比较

对于某一种算法通常会有大量的应用实例,例如我们在动态规划算法的教学过程中主要讲解五个实例,包括最长公共子序列、矩阵链连乘、01背包问题、数字三角形和最长递增子序列,通过使用动态规划法求解这些问题,对比分析这几个问题的解决步骤,很容易归纳总结出动态规划求解问题的基本步骤,即分析最优解结构、建立递归关系、计算最优值和构造最优解。动态规划算法在求解问题时通常需要采用表格来保存子问题的解,不同的问题其表格的构造存在不同,但是都蕴含了自底向上求解问题的思想,通过对比分析不同问题的递归关系和算法结构,便于总结和整理动态规划的特点,有助于学生更好地理解动态规划算法。同时,通过比较教学法,可以更加深入理解动态规划算法的基本步骤和原理,在比较分析的同时寻找这些问题的共同之处,更好地理解最优子结构和重叠子问题这两个动态规划的基本要素。

在开展“算法分析与设计”教学时,我们还发现对于一些具体问题,使用同一种算法思想从不同的角度考虑可以设计出不同的算法,例如在讲解分治算法时,快速排序和归并排序都基于递归和分治思想,但是这两种算法的实现过程完全不同,可以将二者结合一些经典的排序算法,例如冒泡排序、选择排序和插入排序等进行比较,对比项包括时间复杂度、空间复杂度、排序的稳定性等。通过比较,学生可以理解每一种排序算法的优缺点,便于根据待解决问题的特点选择合适的算法进行求解。

2.不同算法求解同一问题的比较

对于某些实际问题,有时候可以使用多种算法来求解,例如对于最长公共子序列问题,可以采用穷举搜索法、备忘录法、动态规划法等多种方法,且不同的方法具有不同的特点,其实现过程也不尽相同。因此,针对某一问题,在教学过程中对比分析不同算法的特点,有助于学生更好地理解和掌握相关算法的原理。

在“算法分析与设计”课程教学中,主要讲解分治算法、动态规划算法、贪心算法、回溯法和分支限界法这五大算法。对于某些具体问题而言,可以采用这些算法中的两种或多种来求解。以经典的背包问题为例,可以使用多种算法来求解背包问题,但是不同的算法在求解问题时存在较大的区别。例如采用最简单的不考虑跳跃点的动态规划法求解01背包问题时,要求物品的重量为整数,其适用性不强,可以通过跳跃点来改进;如果采用贪心算法,则不能求解01背包问题,因为得到的不一定是最优解,贪心算法可以用于处理连续背包问题,对于01背包问题而言不适用;采用回溯法来求解虽然时间复杂度不及动态规划,但是它是一种万能解题法;也可以使用分支限界法来求解01背包问题,与回溯法的相同点在于都需要使用剪枝函数来删除部分子树,区别在于分支限界法采用广度优先搜索来搜索问题的解空间,而回溯法采用的是深度优先搜索,因此在算法实现时回溯法和分支限界法需要使用不同的数据结构和代码结构。

3.同一算法求解同一问题中不同实现方式的比较

有时候针对某一问题采用同一算法有不同的具体实现方案,例如在讲解使用回溯法求解01背包问题时,重点在于教学生如何高效剪枝,在设计剪枝函数时引导学生主动思考,首先利用约束函数剪去左子树,但时间复杂度仍然很高,然后设计限界函数剪去右子树,最简单的限界函数是直接将剩余物品的总价值与当前获得的价值相加再与当前最优值比较,如果小于当前最优值,则剪去右子树,更好的限界函数是计算得到右子树的上界,如果将当前获得的价值与右子树价值的上界相加小于当前最优值,则剪去右子树,通过计算可以得到右子树的精确上界,进一步对算法进行优化。此外,在讲解回溯法时,通过比较教学法,在分析具体实例时可以让学生理解两种典型的解空间树的异同,遇到新的问题时根据问题的性质来确定是排列数还是子集树,对于不同的解空间树,有不同的算法框架。使用回溯法对解空间进行深度优先搜索时,可以采用递归回溯,也可以采用迭代回溯,通过对代码实例进行比较让学生更好地理解和掌握两种回溯方法的异同。

对于分支限界法,根据从活结点表中选择下一个扩展结点的不同方式也存在不同的分支界限法的实现方式,最常见的有队列式分支限界法和优先队列式分支限界法。在讲解装载问题等具体实例时,通过比较两种不同的实现方法可以加深对这两种实现方式的理解。

三、结语

比较教学法通过对比分析,寻找事物之间的联系,分析待比较对象之间存在的异同,采用求同比较、求异比较、相似比较等形式,让教学内容更加系统化、综合化和条理化。在“算法分析与设计”课程教学过程中,通过对某些教学内容采用比较教学法,有助于培养学生整理和总结所学知识的能力,让学生在面对新知识的学习时摆脱陌生感,增加学习的主动性,提高学习效率,优化学习效果。正确运用比较教学法可以让学生更为深刻、更为全面地理解和掌握所学知识,从而获得更好的教学效果。

参考文献:

[1] 王晓东. 算法分析与设计(第3版)[M]. 北京:清华大学出版社, 2014.

[2] 李运模. 比较教学法论略[J]. 中南民族学院学报:人文社会科学版,2000,20(3):125-127.

[3] 肖敏. 比较教学法在现代设计方法课程教学中的应用[J]. 高教论坛,2006(6):120-121.

动态规划思想范文5

文章在介绍了传统的基于遍历树的方法的基础上重点讨论了基于路径分解的查询处理算法,并对选择连接顺序算法提出了基于动态规划思想的改进。

关键词:XPath;XML;查询优化;动态规划

中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)28-0020-04

XML Query Optimization Based on XPath

XU Yi

(School of Software Engineering,Tongji University,Shanghai 201804,China)

Abstract: With the advent of XML as a standard for data representation and exchange on the Internet, querying XML data becomes more and more important. Several XML query Language have been proposed, and the common feature of the languages is the use of regular path expression based on XPath Data Model to query XML data. Research shows that the current relational database technology often inefficient when deal with the regular path expression.

This paper first introduce the traditional traversing tree algorithm, and then discuss the query parse algorithm which based on regular path expression, and optimize the structural join order by dynamic programming.

Key words: XPath; XML; query optimization; dynamic programming

1 引言

XML是由W3C开发的,主要目的是为了克服HTML缺乏结构和元数据信息的缺点,为Web信息的集成、交换建立一种新的灵活的机制。

它在以下几个领域正改变着Web:

1) 简化了数据交换。使用XML,每个实体可以创建单一的实用程序,该实用程序将该实体的内部数据格式转换成XML,反之亦然。

2) XML支持智能代码。因为可以使XML文档结构化以标识每个非常重要的信息片段以及这些片段之间的关系,所以可以编写无需人工干预就能处理这些XML文档的代码。

3)XML支持智能搜索。尽管搜索引擎这些年在稳步改进,但从搜索中得到错误的结果仍很常见。搜索 XML文档会给一个好得多的结果集。

随着XML数据的增多,如何对其进行高效的查询时非常重要的,本文从XML的基本概念入手,着重对当前XML数据查询的处理方法进行分析研究,并加以改进和优化,来进一步提高查询处理效率。

2 XPath

谈及XML数据查询,就不得不谈到XPath。作为XML数据查询语言的核心部分,XPath用来对XML文档的内容进行定位、检索。XQuery和XPath公用的数据模型提供了XML文档的树形表示―节点树。节点有七类,包括根节点、元素节点、属性节点、文本节点、命名空间节点、处理指令节点、注释节点。XPath的最主要构件路径表达式就是通过这样的节点树来跟踪路径,识别出所有被路径表达式检索的节点。下面给出的是一个简单的定位表达式:

/pub/book/author

定位路径有两种,分别是相对定位路径和绝对定位路径。每个定位路径表达式都由一个或者多个定位步组成,每个定位步之间用正斜杠分开。绝对路径以正斜杠开始,它从文档的根节点开始定位路径;而相对路径则直接从某个定位步开始定位路径。

XPath中用上下文节点集来描述定位路径的求值过程是如何进行的。上下文节点集定义为:表达式中给定集确定的当前节点集。上下文定义为:正在处理的当前节点。

定位路径表达式是求值过程是由定位步骤决定。定位步骤按顺序(从左到右)一次一个地求值。每一个定位步骤都是对照上下文节点集中的节点进行求值的。第一个定位步骤是把上下文节点集中的每个节点当作上下文节点进行求值。 然后结果节点集被合并为新的节点集,这个节点集成为下一步操作的上下文节点集。这样的处理在路径的每一个定位步骤中持续进行。最后的定位步骤产生的节点集就是这个表达式的结果。

定位步包含三部分:

一个轴,它指定了定位步选择节点与上下文节点之间的树状关系。XPath定义了13个轴。每个轴都有个方向,向前或者向后。

一个节点测试,它指定了定位步选择的节点类型或者节点名。如果给定点的节点测试为真,则它保留在结果节点集中,否则将它从结果节点集中删除。

零个或多个谓词,它使用专有的谓词表达式来进一步筛选定位步选择的节点集合。

3 XML数据查询处理方法

利用路径表达式导航XML查询是XML查询语言的共同特点.目前对XML路径表达式的计算有两种方法:一种是基于树遍历的方法,另外一种是路径连接方法。

3.1 基于遍历树的方法

基于遍历树的方法有两种次序:top-down和bottom-up。下面以查询表达式Q1:/city/school/class/student[@name=”Tom”]为例来说明。按top-down的次序来处理时,要顺着所有开始于city节点的路径,去查找是否有school的节点作为后代,这一步要对XML数据库中的所有的city节点来执行, 这就意味着在XML树中要遍历从city节点到叶节点的每一条可能的路径,如果city节点是根节点,那么整棵XML树都必须被遍历。按bottom-up的次序来遍历可以降低遍历的成本,对于同样的查询Q1来讲,所有带有属性name值为”Tom”的student节点都要被搜索,从每一个这样的student节点开始向上遍历来确定是否存在class节点,然后再从每一个这样的class节点向上遍历来确定是否存在school节点作为祖先, 依次类推… 这种向上遍历的方法在一般情况下较简单、耗时较小,但对于符合条件的student节点数目很大,而class节点、school节点或city节点数目较小的情况,这种遍历方式的成本可能会高于top-down方式。

一种折衷的处理方法是同时按照top-down 和bottom-up的次序进行遍历,最终会在路径的某个中间位置相遇,从而得出查询结果。这种方法结合了top-down和bottom-up的优点,但它的高效性并不总能得到保证,下面改进的方法中采用了路径分解和连接算法来处理,避免了多次遍历树。

3.2 基于路径分解的查询处理算法

Quanzhongli和Bongki Moon将规则路径查询表达式分解为以下五种基本表达式的组合。

1) 只由单一元素或单一属性组成的表达式,如author、@year;

2) 由一个元素和一个属性组成的表达式,如book[@year=2007];

3) 由两个元素组成的的表达式,如chapter//title、book/@isbn;book[descendant::section]、book[chapter];

4) 一个子表达式的kleene闭包

5) 两个子表达式的并集

对第1种情况可利用元素或属性的索引直接得到结果,对第2、3、4种情况需分别需要采用EA-Join、EE-Join和KC-Join三个算法来进行中间结果的连接合并;第5 种情况可通过组合两个中间结果或直接按文件分组来处理。

三个算法如下:

1) EA-Join算法 ( 用于元素集合和属性集合的合并,对应于由一个元素和一个属性组成的子表达式) :

输入:{E1,…,Em}, Ei表示拥有相同文件标示符(did)的元素集

{A1,…,An}, Aj表示拥有相同文件标示符(did)的元素集

输出:元素为(e,a)的集合,要求满足a是e的属性

//据文件标示符来分类合并集合{Ei} 和{Aj}

l :for each Ei and Aj with the same did do

//据孩子父母关系分类合并Ei和Aj

2 : for each e∈Ei and a∈Aj do

3 : if(e is a parent of a) then output(e,a)

end

end

2) EE-Join算法 ( 用于元素集合和属性集合的合并,对应于由一个元素和一个属性组成的子表达式):

输入:{E1,…,Em}和{F1,…,Fn}, Ei和Fj表示拥有相同文件标示符(did)的元素集

输出:元素为(e,f)的集合,要求满足e是f的属性

//据文件标示符来分类合并集合{Ei} 和{Fj}

l :for each Ei and Fj with the same did do

//据孩子父母关系分类合并Ei和Fj

2 : for each e∈Ei and f∈Fj do

3 : if(e is an ancestor of f) then output(e,f)

end

end

3) kleene closure算法 ( 对应于求一个子表达式的kleene闭包) :

输入:{E1,…,Em}, Ei表示一个XML文档的一组元素

输出: {E1,…,Em}的kleene闭包

//重复执行EE-Join算法

1:set i=1

2:set Kci ={E1,…,Em};

3:repeat

4:set I =i+1

5:set Kci=EE-Join(Kci-1, Kc1)

until (Kci is empty)

6:output union of Kc1 ,Kc2, ……, Kci-1;

4 XML数据查询处理优化

路径分解算法(见3.2节)在合并中间结果集时,由于各个集合中元素的个数不同,在采用不同的连接合并的次序的情况下,执行的开销有很大不同。如果能够选择恰当的结构连接顺序,将使原算法得到进一步的优化。因此如何应用动态规划算法,使得在尽量小的搜寻空间里找到最好的方案是本节的主题。

4.1 动态规划的基本思想

动态规划算法的基本思路是用一个表来记录所有已解决的子问题的答案,不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中,在需要时再找出,这样就可避免大量的重复计算。

动态规划算法通常用于求解具有某种最优性质的问题。这类问题中,可能会有许多可行解,每个解都对应一个值,我们希望找到最优值 ( 最大值或最小值)的那个解。设计一个动态规划算法,通常可按以下几个步骤进行:

1) 找出最优解的性质,并刻画其结构特征。

2) 递归地定义最优值。

3) 以自底向上的方式计算出最优值。

4) 根据计算最优值时得到的信息,构造一个最优解。

用动态规划算法通常只需要多项式时间,从而获得较高的解题效率。

4.2 动态规划算法的设计

一个XPath语句通常被建模成为一个树,这种查询也被称为树模式查询。一个查询的求解过程为:从初始查询数开始,每次处理树中的一条边,即将相连的两个节点进行连接,连接的结果用一个新的节点表示,并替代原树中的2个节点。每次连接的时候都会减少一个节点,产生一个新的树。当最后的树只包含一个节点的时候,整个求解过程便告结束。图1给出了一个查询树求解的例子。

图1 使用动态规划时的查询树求解图

查询数的求解图实际上是一个有向无环图。图中所有类似于AB的聚集点成为状态节点,每个查询数称为一个状态,从一个查询树变换到另一个查询树的过程称为移动。从初始状态开始经过k步移动后到达的状态被称为k层状态。只有当第k层所有状态产生后才能移动到第k+1层。因而查询树的求解过程就是从初始状态出发,经过n次移动到达结束状态的过程,n为初始查询树中边的数目。在这n次移动过程中经过的路径就给出了连接的计划即连接的顺序。比如:S00-S10-S24-S31表示连接的顺序为:先连接节点A和B,在将中间结果和D连接,最后与C连接。现在的问题是,要选择一条路径,使得按照该顺序连接的总体代价最小。

如果将每一步的连接代价作为状态树每个边的权,则这个问题上实际就是经典的求最小路径问题。把最短路径问题的动态规划算法应用到这里,就变成了连接顺序求解的动态规划策略。其过程为:从初始状态出发,每次进行一步移动。移动到第k层时,可能得到多个状态,而且每个状态又可能从多个路径转换而来。这些路径的代价不一样,只保留其中代价最小的那条路径。然后从第k层状态出发,移动到下一层,并按同样的方法选择最佳路径。这样到最后得到的路径便是最短路径,也是最优的连接顺序。

DijkstraShortestPathes算法:

输入:具有非负权值的简单无向加权图G,以及G的一个特殊顶点v:

输出:对于G中每个顶点u,输出标记D[u],满足D[u]是G中从v到u的距离

//初始化

1:set D[v]=0;

2:for G中每个顶点u ≠ v do

set D[u]=+ ∞;

//设优先队列Q包含G中所有的顶点,利用D标记作为关键字

3:while Q 非空 do

//把一个新顶点u从Q中加入到初始化为空集的集合C中

set u = Q.removeMin();

for u 的每个邻接顶点Z且Z在Q中 do

//对边(u,z)进行松弛过程

if D[u] + w(u,z) < D[z] then

set D[z] = D[u] + w(u,z);

改变Q中顶点Z的关键字

算法运行时间分析:

反复向Q中插入带有初始关键字的所有顶点,所需时间为O(nlogn),如果利用自底向上的构造堆,则所需时间为O(n)在while循环中,从顶点Q中删除顶点u所需时间为O(nlogn),对于依附于顶点u的边,执行松弛过程的时间为O(dev(v)logn)总时间为Σv∈G(1+dev(v))logn即:总运行时间为O((n+m)logn)

4.3 几种查询处理算法的比较

基于遍历树的处理方法比较直观,但祖先后代关系的判断需要多次对树进行遍历,特别对查询路径较长的情况将耗费较多时间,效率不高。路径分解法处理时将长的查询表达式分成五种基本子表达式,处理完每个子表达式后,再将中间结果集合按照具体算法进行合并,得出原查询表达式的结果,此方法节省了时间,提高了效率。在此基础上,动态规划算法对此路径分解法进一步优化,在进行合并中间结果集前先确定出合并的最优次序,减少了计算量,提高了效率。

5 小结

随着XML作为Internet上数据表示和交换的标准,如何高效地进行XML数据的查询己经变得越来越重要,本文对规则路径表示下XML数据的查询处理算法进行了分析研究,其中重点讨论了基于XPath的查询表达式的分解、中间结果集的合并算法等,主要工作如下:基于动态规划的思想,设计出具体算法,在进行中间结果集合并之前,先求出合并的最优次序,大大降低了合并结果集的计算量,提高了查询处理效率,实现了对路径分解算法的进一步优化。

事实上,对于一个复杂的查询来说,上述算法的搜索空间依然很大,还有进一步优化的空间,这也是后续的研究方向。

参考文献:

[1] Li Q,Moon B.Indexing and Querying XML Data for Regular Path Expression[A].In: Apers PMG et al Eds. Proceedings of the 27th VLDB International Conference on Very Large Database.[C] Rome, Italy. September 11-14,2001.San Francisco: Morgan Publishers,2001:361-370.

动态规划思想范文6

关键词:RNA二级结构预测; 假结; 最小自由能; 布谷鸟搜索

中图分类号: R857.3 文献标识码:A

1概述

假结结构是一类二级结构子结构,在两个或多个茎区出现交叉嵌套时形成,存在于多种RNA分子二级结构中。其中茎区是一种二级结构子结构,通过连续的三对或三对以上碱基配对形成。研究发现,假结结构对于RNA结构的作用具有重要的意义。

RNA分子结构对于其作用有重要影响,其测定可通过X光测定、核磁共振成像等物理方法进行。但物理方法存在耗时长、财力物力开销大等缺点,限制了其使用。

目前的研究主要通过软件计算方式预测RNA二级结构。早期的RNA结构预测算法主要是动态规划类型算法。这些算法具有不适用于较长的RNA序列、算法复杂预测计算耗时长等缺点。近期研究热点转向基于启发式算法的预测研究。

2 研究现状

目前主要预测算法采用最小自由能量模型作为建模基础。此模型认为在所有可能结构中自由能量最低的预测结构最有可能是给定序列的实际结构。通过实验及统计估算,可以指定出一系列自由能量计算规则,以计算出任何给定结构的自由能量。

目前的主要算法分为动态规划和启发式两种。动态规划算法能够在理论上保证搜索到具有全局最小自由能量的结构,但时间复杂度高。启发式算法收敛速度明显比动态规划算法快,但不能保证得到具有全局最小自由能的结构是其主要缺点。

目前主要的动态规划算法包括Reeder和Generics提出的pknotsRG-mfe算法 和Dirks和Pierce提出的NUPACK的算法。pknotsRG-mfe通过限制假结类型将时间复杂度低至 。

Van Batenburg等人通过引入遗传算法思想提出名为STAR的启发式算法,将问题转化为茎区组合优化进行搜索。Ren和Rastegari提出名为HotKnots的启发式算法,通过迭代添加可能的子结构建立候选结构。

3 CSRNA算法

布谷鸟搜索算法(Cuckoo Search, CS)是由Yang等于2009年提出的一种启发式优化算法,用以解决函数优化、最值搜索等问题。算法受布谷鸟在其他鸟类的巢中下蛋并由他人代为孵化这一繁殖行为启发。

3.1 目标函数

CSRNA算法定义RNA结构自由能量函数作为算法的目标函数,使用最邻近能量模型进行计算。

一个结构的自由能通过将非假结子结构、H假结、复杂假结三者能量求和得到。

非假结子结构包含茎区、发夹环、内环、凸环、多分支环、悬挂碱基和终端错配等二级结构子结构。CSRNA采用Mathews小组提出的能量参数计算上述子结构的能量。

针对H型假结能量,CSRNA引入由Gultyaev和Batenburg、Dirk和Pierce[3]以及Cao和Chen 提出的三组能量参数进行计算。针对复杂假结能量,CSRNA采用了将其拆分为多个非假结结构方式计算能量。

3.2 初始化处理

初始化处理包括构造茎区池、构造初始解并排序两个步骤。

首先定义两个茎区兼容指相互不包含重复的碱基位。

茎区池是一个存储给定RNA序列所有可能存在的茎区的线性表,表中每个茎区被赋予全局唯一的序号。每个解都是茎区池中相互兼容茎区的组合。

4 实验结果

定义TP表示预测结构碱基对中出现在实际结构中的碱基对个数,FP表示预测结构碱基对中未出现于实际结构中的碱基对个数,FN表示真实结构碱基对中未出现在预测结构中的碱基对的个数。

则可定义用于评价结果的敏感性指标为TP除以TP与FN的和,而确定性敏感性指标为TP除以TP与FP的和。

表2 确定性指标实验结果表

结语

在本文中,以解决带假结RNA二级结构预测问题,我们基于布谷鸟搜索提出了一种名为CSRNA的预测算法。通过与目前主要预测算法进行对比实验,证明了CSRNA算法的有用性和有效性。

在后续研究中,计划通过完善自由能量计算模型以提高预测准确率。此外,还计划针对构造领域解进行搜索和按比例淘汰部分解两项机制进行改造,以加强算法搜索能力,优化预测结果。

参考消息