石头:2229 - 371 x
Kulvinder辛格1,雷卡·拉尼* 2西玛·拉尼3.,韦德帕尔·辛格4 印度库鲁克谢特拉大学CSE系 |
通讯作者:瑞卡王妃,电子邮件:(电子邮件保护) |
有关文章载于Pubmed,谷歌学者 |
更多相关文章请访问全球计算机科学研究杂志。
本文简要介绍了软件工程及其方法。本文还描述了如何在软件工程中使用遗传算法。遗传算法的优点是使用简单,需要最少的问题特定信息,并且能够有效地适应动态变化的环境。
关键字 |
软件工程,遗传算法。 |
介绍 |
软件工程:软件工程这个术语第一次出现在1968年的北约软件工程会议上,是为了引起人们对当时“软件危机”的思考。软件工程的目标是生产高质量的软件,按时、在预算范围内交付并满足用户需求的软件。软件工程是科学和数学的应用,通过计算机程序、程序和相关文档,使计算机设备的功能对人类有用。IEEE计算机学会的软件工程知识体系将“软件工程”定义为对软件的开发、操作和维护应用系统的、有纪律的、可量化的方法,以及对这些方法的研究;即工程在[2]软件上的应用。 |
即工程在[2]软件上的应用。软件开发生命周期:多处理器中的任务调度[1][2]是一个术语,可以表示为要在多处理器系统上执行的一般任务图找到一个调度,以便使调度长度最小化。多处理器调度[3]问题可以根据要调度的程序和任务的特征、多处理器系统和信息的可用性分为许多不同的类别。多处理器调度[2]问题可以分为两类:静态任务调度和动态任务调度。静态或确定性任务调度是预先知道优先约束和任务之间关系的任务调度,而非确定性或动态调度是事先不知道这些信息或直到运行时才知道这些信息的任务调度。有效利用多处理器系统的一个重要因素是计算任务在处理器之间的正确分配和调度。问题可以有许多变化:(i)调度算法可以是确定性的——也称为静态的——或非确定性的。 在确定性任务调度问题中,与任务相关的知识、任务之间的关系、时间和所使用的处理器数量都是先验知识。另一方面,在非确定性问题中,所有或部分这些因素可能依赖于输入,并根据运行时条件而变化。 |
(ii)任务可以是抢占式或非抢占式。 |
抢占式任务调度问题允许任务从执行中被切断,而另一个任务开始或继续其执行周期[操作系统示例]。一种非抢占问题,在此问题中,任务执行必须在另一个任务控制处理器之前完全完成。 |
处理器可以是同质的,也可以是异质的。 |
处理器的异构性意味着处理器具有不同的速度或处理能力。另一方面,在同质环境中,假定所有处理器都具有相同的能力。应用程序任务的高效调度是并行多处理器[9]系统实现高性能的关键。调度的目标是将任务映射到处理器上并对其执行进行排序。以满足任务优先级需求和最小的计划长度(或Make跨度)。最常用的启发式方法是列表启发式,如最早任务优先(ETF)算法、关键路径/最直接后继优先(CPMISF)算法、动态关键路径(DCP)算法等。另一种启发式方法是遗传算法。遗传算法[7]是一种域无关的全局搜索技术,其中给定解集(称为总体)中的元素(称为个体)随机组合,直到达到某个终止条件。 |
遗传算法[10]和其他搜索技术:遗传算法[10][11]作为功能强大且应用广泛的随机搜索和优化技术,是目前最广为人知的进化计算[16][11]方法。最初的遗传算法之父是John Holland[13],他在20世纪70年代早期发明了它。 |
有各种各样的搜索技术,遗传算法是其中一种。遗传算法用于搜索和优化。这些技术如图1所示。这些都是: |
i)数值技术:a).直接方法b).间接方法 |
ii)引导随机搜索技术:a)模拟退火,b)进化算法 |
iii)枚举技术:a)动态规划 |
![]() |
方法论-遗传算法(ga) |
遗传算法(Goldberg, 1989)在20世纪70年代初通过John Holland[3]的工作,特别是他的书《适应自然和人工系统》(1975)变得流行起来。 |
遗传算法的进化流程 |
遗传算法(GAs)是一种自适应启发式搜索算法,基于自然选择的进化[16]思想和遗传学[11]。因此,它们代表了用于解决优化[17]问题的随机搜索的智能开发。尽管ga是随机的,但它绝不是随机的,相反,它们利用历史信息将搜索引导到搜索空间[14]中性能更好的区域。图为遗传算法演化流程。 |
![]() |
遗传算法的基本术语:基因,染色体,参数,基因数,群体大小,搜索空间,代。基本原理:简单遗传算法的工作原理[30]如图所示。主要步骤是生成解的总体[26],找到目标函数和适应度函数,并应用遗传算子[26]。下面将简要介绍这些方面。它们在遗传算子中有详细的描述。 |
![]() |
遗传算法[27][26]的一个重要特点是对描述问题的变量进行编码。最常见的编码方法是将变量转换为二进制字符串或向量;当解向量为二进制[11]时,GAs性能最佳 |
遗传算法的特点 |
1.随机-来自不同运行的不同结果 |
2.最常用于解决难题 |
3.维护解决方案的总体 |
4.溶液在染色体上编码 |
5.繁殖产生新的种群成员 |
6.在繁殖过程中发生突变和重组 |
7.适者生存:优秀的个体有更好的繁殖机会。 |
GAs的优势是什么?以下是遗传算法的优点: |
(i)并行算法 |
首先也是最重要的一点是遗传算法[11]本质上是并行的。大多数其他算法都是串行的,每次只能在一个方向上探索问题的解决方案空间,如果他们发现的解决方案不是最优的,那就只能放弃之前完成的所有工作,重新开始。然而,由于ga有多个子代[17],因此它们可以同时在多个方向上探索解空间。如果一条路径被证明是死胡同,他们可以很容易地消除它,并继续在更有前途的途径上工作,每次运行都有更大的机会找到最佳解决方案 |
(ii)同时出现多个模式 |
由于并行性允许它们同时隐式地评估许多模式,遗传算法[28]特别适合解决所有潜在解决方案的空间非常大的问题——太大了以至于在任何合理的时间内都无法彻底搜索。大多数属于这一类的问题都被称为“非线性”问题。在线性问题中,每个组成部分的适应度[29]是独立的,因此对任何一个部分的改进都会导致整个系统的改进。不用说,现实世界中很少有这样的问题。非线性是常态,其中改变一个组件可能会对整个系统产生涟漪效应,而单独有害的多个变化结合在一起可能会导致更大的适应度改进。 |
(iii)全局最优解 |
遗传算法[19]的另一个显著优势是,它们在适应度景观[23]复杂的问题中表现良好——其中适应度函数是不连续的,有噪声的,随时间变化的,或有许多局部最优值。大多数实际问题都有很大的解决空间,不可能穷尽地搜索;接下来的挑战是如何避免局部最优解[23],它比所有与它们相似的其他解都好,但却不如解空间中其他不同的解好。许多搜索算法[25]可能会被局部最优所困:如果它们到达适合度景观上的山顶,它们会发现附近没有更好的解决方案,并得出结论说它们已经达到了最佳解决方案。另一方面,进化算法[16]已被证明是有效的,即使在非常崎岖和复杂的适应度环境中,也能逃脱局部最优并发现全局最优[23]。(值得注意的是,在现实中,通常没有办法判断一个问题的给定解决方案是一个全局最优还是一个非常高的局部最优。然而,即使遗传算法并不总是为问题提供一个可证明的完美解决方案,它几乎总是至少可以提供一个非常好的解决方案。 |
(iv)多参数问题 |
遗传算法[23]擅长的另一个领域是它们同时操纵许多参数的能力。许多现实世界的问题不能用一个要最小化或最大化的单一价值来表述,而必须用多个目标来表达,通常涉及权衡:一个目标的改善只能以牺牲另一个目标为代价。ga非常擅长解决这类问题:特别是,它们对并行性的使用使它们能够对同一个问题产生多个同样好的解决方案,可能用一个候选解决方案优化一个参数[26],而另一个候选解决方案优化另一个参数,然后人类监督者可以从中选择一个候选解决方案来使用。 |
(v)不需要知识 |
最后,遗传算法[23]的一个特性乍一看可能是一种缺陷,但实际上却是它们的优点之一:即遗传算法对它们要解决的问题一无所知。他们不像人类设计师那样,使用先前已知的领域特定信息来指导每一步,并以特定的眼光进行改进,而是“盲目的制表师”;他们对候选解决方案[11]进行随机更改,然后使用适应度函数[14]来确定这些更改是否会产生改进。 |
GAs的局限性是什么?以下是遗传算法的局限性:尽管遗传算法已被证明是一种高效而强大的问题解决策略,但它们并不是万能的。GAs[23]确实有一定的局限性;然而,所有这些都是可以克服的,没有一个与生物进化的有效性有关。 |
(i)问题的表述 |
在创建GA时,第一个也是最重要的考虑是为问题定义一个表示[11]。用于指定候选解决方案的语言必须是健壮的;也就是说,它必须能够容忍随机变化,这样就不会始终产生致命错误或无意义的结果。实现这一目标有两种主要方法。第一种是大多数遗传算法使用的,它将个体[23]定义为数字列表——二进制值、整数值或实值——其中每个数字代表候选解决方案的某个方面。如果单个[23]是二进制字符串,0或1可以代表给定特征的存在或不存在。如果它们是数字列表,这些数字可以代表许多不同的东西:神经网络中链接的权重,在给定的旅行中访问的城市的顺序,电子元件的空间位置,输入控制器的值,蛋白质中肽键的扭转角度,等等。 |
(ii)适应度函数表示 |
如何编写适应度函数[11]的问题必须仔细考虑,这样才能获得更高的适应度,并且实际上等于给定问题的更好解决方案。如果适应度函数[23]选择不佳或定义不精确,遗传算法可能无法找到问题的解决方案,或者可能最终解决错误的问题。(后一种情况有时被描述为GA的“欺骗”倾向,尽管在现实中所发生的一切只是GA[28]正在做它被告知要做的事情,而不是它的创造者想要它做的事情。)这方面的一个例子可以在Graham-Rowe 2002中找到,其中研究人员使用进化算法[17]与可重新编程硬件阵列相结合,设置适应度函数以奖励进化电路输出振荡信号。在实验结束时,确实产生了振荡信号——但电路本身并没有像研究人员预期的那样充当振荡器,他们发现它已经变成了一个无线电接收器,从附近的电子设备上接收并转发振荡信号。 |
(iii)种群规模、变异和交叉率等参数的选择问题,选择方案 |
除了选择好适应度函数[23]外,GA的其他参数——种群的大小[26],突变和交叉的速率[25],选择的类型和强度——也必须谨慎选择。如果种群规模太小,遗传算法可能无法探索足够的解空间来持续找到好的解。 |
(iv)欺骗适应度函数 |
遗传算法[23]难以处理的一类问题是具有“欺骗性”适应度函数的问题,在这些问题中,改进点的位置提供了关于可能在哪里找到全局最优的误导性信息。 |
(v)早熟收敛 |
GA[24]可能出现的一个众所周知的问题是过早收敛[23]。如果一个比大多数竞争对手更适合的个体在跑步过程的早期出现,它可能会大量繁殖,从而过早地降低种群的多样性,导致算法收敛于该个体所代表的局部最优[17],而不是彻底搜索适应度视图以找到全局最优。 |
遗传算法的应用 |
应用程序 |
在计算和人工智能[3]中使用的启发式搜索技术,使用进化[16]生物学启发的技术来寻找问题的优化解决方案:突变,选择,繁殖[遗传]和重组。 |
(i)工程设计 |
![]() |
最大限度地利用一系列材料来优化建筑物、工厂、机器等的结构和操作设计是GA[10]的一个迅速扩展的应用。这些技术被用于优化热交换器的设计、机器人抓臂、卫星臂、建筑桁架、飞轮、涡轮机,以及几乎任何其他计算机辅助工程设计应用。 |
(2)机器人 |
![]() |
机器人技术涉及人类设计师和工程师尝试各种各样的东西,以创造出有用的机器,可以为人类工作。 |
(iii)优化电信路由 |
你是否发现自己被缓慢的局域网性能,不稳定的互联网接入,一台有时只发送传真的传真机,你的固定电话每个月的“幽灵”电话数量所困扰?嗯,GAs[10]正在开发中,这将允许为电信网络的动态和预期路由电路。 |
(iv)生物特征发明 |
![]() |
仿生学或仿生学是受自然界设计启发而发展的技术。由于GAs[11]是受到生物进化机制的启发,因此它们也可以用于发明过程。 |
行程、交通和装运路线 |
GA[21]的新应用被称为“旅行推销员问题”或TSP,可用于为旅行策划者、交通路由器甚至航运公司规划最有效的路线和调度。 |
(vi)电脑游戏 |
那些花一些时间玩电脑模拟人生游戏(创造自己的文明并发展它们)的人经常会发现自己是在和复杂的人工智能GAs[10]玩游戏,而不是在网上和其他人类玩家玩。 |
(vii)加密和密码破解 |
![]() |
在安全方面,GAs[23]既可用于为敏感数据创建加密,也可用于破解这些代码。自从计算机出现以来,加密数据、保护版权和破解竞争对手的代码在计算机世界中一直很重要,因此竞争非常激烈。 |
(viii)基因表达谱 |
![]() |
微阵列技术的发展为一个细胞或一组细胞中表达的基因拍摄“快照”,这对医学研究来说是一个福音。GAs[11]已经和正在开发中,以使[23]基因表达谱的分析更快更容易。 |
财务和投资战略 |
在当前前所未有的世界经济危机中,人们可能会合理地怀疑,其中一些人是否。 |
(x)销售和销售 |
我们可以像梅尔·布鲁克斯(Mel Brooks)在电影《太空球》(Space Balls)中所说的那样思考“营销”这个词。太空球卫生纸。太空球是午餐盒。太空球火焰喷射器(孩子们喜欢这个)。笑是因为它很接近现实,很有趣。 |
xi)化学工程多目标优化问题求解 |
![]() |
任何现实世界的优化[10][13]问题都涉及几个目标。化工[46]也不例外。化学过程,如蒸馏(如图所示),精炼操作,聚合等,涉及许多过程参数,这些参数是为了在最终产品中获得某些性能而设置的。 |
(十二)高分子科学与工程中的遗传算法 |
多目标[23]函数同时优化。一个例子是最小化反应器中的反应时间(降低成本),同时最小化副产物的浓度(对产品性能产生不利影响)。 |
(十三)股票市场数据挖掘优化中的遗传算法 |
在股票市场中,技术交易规则[59]是分析师和用户进行研究并决定买卖股票的流行工具。交易规则成功的关键问题是为所有参数及其组合选择值。 |
(十四)聚类分析的遗传算法 |
使用了一种简单的编码方案,可以产生恒定长度的染色体。目标函数[58]最大化了每个聚类内的同质性和聚类间的异质性。 |
结论 |
在多处理器系统上执行任务的调度问题是计算界最具挑战性的问题之一。遗传算法很好地适应于多处理器调度问题。随着GA可用资源的增加,它能够找到更好的解决方案。与其他传统方法相比,遗传算法具有更好的性能。总的来说,对于使用多处理器的问题,遗传算法似乎是最灵活的算法。这也表明遗传算法能够自动适应待解决问题的变化。 |
参考文献 |
|