摘要:遗传算法是一种有效的解决最优化问题的方法,在解决复杂的全局优化问题方面,遗传算法已得到了成功的应用。对遗传算法的基本步骤进行总结,通过最优化问题求解实例描述了遗传算法的具体运行过程,包括产生初始染色体、染色体评价、选择、交叉、变异等。分别应用VC和VB两种语言进行编程实现,结果表明,VC语言在运算效率和结果优度方面均比VB语言要好。

关键词:遗传算法;最优化问题;最优解;求解步骤;运算效率

中图分类号:TP312 文献标识码:A文章编号:1009-3044(2011)19-4654-02

Solving Optimization Problems Based on Genetic Algorithm

SONG Jie-peng1,2

(1. China University of Mining and Techonlogy, Xuzhou 221116, China;2. Xuzhou Normal University, Xuzhou 221116, China)

Abstract: Genetic algorithm is a kind of effective method to solve optimization problems, and in solving complex global optimization problem, it has been successfully used. The basic steps of genetic algorithm are summarized, and through a real example, the detailed operation steps of genetic algorithm are described, which includes initial chromosomes generation, chromosomes evaluation, selection, crossover and mutation. VC and VB programming languages are applied for realizing the above steps, and the results show that VC is better than VB in operation efficiency optimality.

Key words: genetic algorithm; optimization problem; optimal solution; solving steps; operation efficiency

遗传算法是一种通过模拟自然进化过程搜索最优解的方法[1]。遗传算法本身并不要求对优化问题的性质作一些深入的数学分析,从而对那些不太熟悉数学理论和算法的使用者来说,无疑是方便的[2]。本文结合实例探讨了遗传算法求解最优化问题的具体步骤,并同时应用VC和VB进行编程,对其运算结果进行比较。

1 遗传算法的求解过程

生物遗传物质的主要的载体称为染色体,在遗传算法中,染色体通常是一串数据(或数组),它用来作为优化问题的解的代码,但它本身并不一定是解[3]。应用遗传算法求解一般要经过这样的几个过程[4]:首先,随机产生一定数目的初始染色体,由这些染色体组成一个种群,其中,种群中染色体的数目被称为种群的大小或规模。然后,用评价函数来评价得到的每个染色体的优劣,即染色体对环境的适应程度(称为适应度),用来作为以后遗传操作的依据。接着,进行选择过程,选择过程的目的是为了从当前种群中选出优良的染色体,使它们成为新一代的染色体,判断染色体是否优良的标准就是它们各自的适应度,也就是染色体的适应度越高,它被选择的机会就越多。通过选择过程,产生新的种群。再对这个新的种群进行一定概率的交叉操作,这个操作是遗传算法中的主要操作之一,类似于生物的杂交。然后进行变异操作,以挖掘种群中不同个体的多样性,克服其有可能陷入局部解的问题[5]。这样,经过上边的各种运算后产生的新的染色体称为后代。然后再对产生的后代重复进行选择、交叉和变异这几个操作,在迭代到设定的次数后,把生成的最好的染色体拿来作为优化问题的最优解。

2 用遗传算法求解最优化问题实例

应用遗传算法求解极大化问题:

2.1 初始产生pop_size个染色体

用染色体V=(x1, x2, x3)来作为解的代码。解的可行性由下面的检验函数检验:如果(x1

这样,可以从这个超几何体中抽取初始染色体 x1=u(0,1),x2= u(0,1),x3= u(0,1)

其中u(0,1)表示服从区间[0,1]上的均匀分布的随机数。如果生成的染色体不可行,则拒绝接受,再重新生成一个新的染色体,如果可行,则接受它作为种群的一名成员。经过有限次抽样后,得到30个(设定种群的规模为30,即pop_size=30)可行的染色体。

2.2 计算每个染色体的评价函数值

计算产生的30个染色体的的函数值,并按照由高到低的顺序排序,记函数值最大的染色体编号为V1,其余的顺次为V2,V3,…,V30。

定义基于序的评价函数为[6]

其中,a为给定的一个介于0到1之间的数据,例如a=0.05,当i=1时,意味着染色体是最好的,i=30时是最差的。

2.3 选择过程

选择过程可以通过如下四步给出[7]:

步骤1对每个染色体Vi,计算累积概率qi:

步骤2从区间(0,q30]中产生一个随机数r。

步骤3若qi-1

步骤4重复步骤2和步骤3共30次,得到30个复制的染色体。

2.4 交叉操作

定义参数Pc作为交叉操作的概率,从i=1到30重复执行如下步骤:产生一个[0,1]之间的随机数r,若r

c为在(0,1)区间中产生的一个随机数,如果产生的两个新的后代X和Y均可行,则用它们代替父代,否则再一次产生随机数c,再进行染色体的交叉,直到得到的X和Y均可行或循环到给定的次数后结束。

2.5 变异操作

定义参数Pm作为遗传系统中的变异概率,从i=1到30重复执行如下步骤:产生一个[0,1]之间的随机数r,若r

用V=(x1,x2,…,xn)表示上面的过程中生成的父代,再按照以下方法对生成的父代进行变异[8]。设M为在初始化的过程中任意定义的一个较大的数,在n维欧氏空间中任意产生一个d作为变异的方向,计算染色体V+M・d的值并将其代入约束条件中,如果判断后是不可行的,那么将M调整为0和M之间的任意一个随机数,再重新计算新染色体V+M・d的值,然后再判断它的可行性,重复上述过程直到得到的新染色体通过检验为止。若在设定的迭代次数内未能得到新的可行解,那么将M赋值为0。上述操作结束后,用X=V+M・d这个新得到的染色体替换原先的染色体V。重复进行选择、交叉、变异操作,直到给定的迭代次数为止。

2.6 结果

将上边的步骤用C语言写成程序,并在VC++6.0下运行,当设定交叉概率为0.3,变异概率为0.2,迭代1000次时,求得的最好解是(0.5767,0.5768,0.5786),函数值是2.2795。当设定交叉概率为0.3,变异概率为0.05,迭代3000次时,求得的最好解为(0.5817,0.5732,0.5771),函数值是2.2795。由此,可以看出,最优解并不唯一。

为了验证结果是否为最好,又将上述算法在VB6.0下编程运行,同样设定交叉概率为0.3,变异概率为0.2,迭代次数为1000,经过很长时间的运行后,显示的结果为(0.577,0.507,0.635),函数值为2.269。而且在用VB运行时,若在用生成随机数Rnd()函数前加上初始化种子数语句Randomize,则每次运行的结果都有一点差别。所以在编写涉及大量计算的程序时,还是选用执行效率高且结果更优的C语言为好。

3 结论

本文给出了遗传算法的基本原理与步骤。将其应用于最优化问题,结合实例给出了详尽求解过程,并同时采用VC和VB编程。结果表明,在应用遗传算法求解最优化问题时,选用C语言编程求解,结果更加接近最优解,其求解效率也比VB语言要高。

参考文献:

[1] 王小平,曹立明.遗传算法――理论、应用与软件实现[M].西安:西安交通大学出版社,2002.

[2] 唐焕文,秦学志.实用最优化方法[M].大连:大连理工大学出版社,2004.

[3] 王凌.智能优化算法及其应用[M].北京:清华大学出版社,2001.

[4] 黄少荣.遗传算法及其应用[J].电脑知识与技术,2008,4(7):1874-1876.

[5] 岳,冯珊.遗传算法的计算性能的统计分析[J].计算机学报,2009,32(12):2389-2392.

[6] 刘宝碇,赵瑞清,王纲.不确定规划及应用[M].北京:清华大学出版社,2003.

[7] 周丽,张智顺.遗传算法求解函数极值的应用[J].电脑知识与技术,2007,4(21): 802-803.

[8] 黄竞伟,朱福喜,康立山.计算机智能[M].北京:科学出版社,2010.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

c语言最优化问题,基于遗传算法的最优化问题求解相关推荐

  1. 基于遗传算法的TSP问题求解(python实现)

    问题描述 假设有一个旅行商人要拜访N个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市.路径的选择目标是要求得的路径路程为所有路径之中的最小值 要求:参考遗 ...

  2. 二次优化问题dfp_BFGS和DFP法的最优化问题求解及在MATLAB中的实现

    第26卷第5期2012年9月长沙大学学报 JOURNALOFCHANGSHAUNIVERSITYVol.26No.5Sep.2012 BFGS和DFP法的最优化问题求解 及在MATLAB中的实现 * ...

  3. 基于遗传算法的高校排课系统研究

    基于遗传算法的高校排课系统研究 沈丽容  陈明磊 (南京林业大学信息学院计算机科学与工程系  南京 210037)     摘  要   提出并实现了一种高校自动排课算法,利用遗传算法建立数据模型,定 ...

  4. [转载]基于遗传算法的高校排课系统研究

    [---  资料是从免费网站上获取的,上载在这里,只为交流学习目的,文章原作者保留所有权力, 如本博客的内容侵犯了你的权益,请与以下地址联系,本人获知后,马上删除.同时本人深表歉意,并致以崇高的谢意! ...

  5. R语言基于遗传算法(Genetic Algorithm)进行特征筛选(feature selection)

    R语言基于遗传算法(Genetic Algorithm)进行特征筛选(feature selection) 特征选择的目的 1.简化模型,使模型更易于理解:去除不相关的特征会降低学习任务的难度.并且可 ...

  6. 流水调度问题c语言,基于遗传算法的流水车间调度问题汇总.doc

    基于遗传算法的流水车间调度问题汇总,车间调度及其遗传算法,遗传算法车间调度,流水车间调度问题,置换流水车间调度问题,流水车间调度,流水车间调度问题代码,流水车间调度算法,任务调度遗传算法源码,遗传算法 ...

  7. 基于遗传算法求解TSP问题(旅游路径规划,Python实现,超详细,可视化,结果分析)

    ps:作者是很用心写的,如果觉得不错,请给作者一点鼓励噢!(点赞收藏评论噢) 基于遗传算法求解TSP问题 摘要 巡回旅行商问题(TSP)是组合优化中的经典问题.常见的TSP问题求解算法例如穷举法.贪心 ...

  8. matlab 功率分配,一种基于遗传算法的NOMA功率分配方法与流程

    本发明涉及一种基于遗传算法的NOMA功率分配方法,属于无线通信技术领域. 背景技术: 随着移动互联网应用的发展,移动数据流量和终端连接数也呈爆炸式增长,未来全球移动通信网络连接的设备总量将达到千亿规模 ...

  9. 如何避免调参来自动选择神经网络结构?基于遗传算法的NAS最新进展

    神经结构搜索简要介绍 神经结构搜索最近发展迅猛,涌现出了大量的研究成果.总的来说,其主要分为四类:基于强化学习的神经结构搜索,基于遗传算法的神经结构搜索,基于梯度下降的方法与其他一些方法. 1.1 基 ...

最新文章

  1. C# 线程知识--使用Task执行异步操作(转)
  2. java 加减乘除 工具类_Java数学工具类MathUtil详解
  3. linux realvnc教程,Linux下RealVNC Enterprise 的安装和使用
  4. WordPress 自定义插件初始化及卸载
  5. 自己使用的一个.NET轻量开发结构
  6. BootStrap笔记-badge的使用
  7. CentOS7升级内核kernel5.0
  8. Linux 线程控制
  9. Baxter实战 (四)ubuntu14.04安装kinect V2
  10. 《码出高效:Java开发手册
  11. golang操作sqlite3
  12. 禁止用户修改计算机的桌面背景,win10系统禁止用户修改桌面壁纸的设置方法
  13. ES07--性能调优03(全面考量)
  14. 木兰编程语言,当事人最新回复来了
  15. 记一次悲催的软件异常崩溃调试解决历程,错误0xc0000417,无效参数,_set_invalid_parameter_handler
  16. 数学英语不好能学php吗,英语和数学基础不好,还能学好编程吗?
  17. QT调用IE浏览器COM插件完成网页浏览
  18. Proxycap对打印的影响
  19. java工具类@Autowired注入失败
  20. 虚拟机数据恢复案例(en Server虚拟机不可用)

热门文章

  1. 半导体器件-----短沟道效应
  2. 基于MATLAB电动机调速系统设计,电气工程课程设计——基于Matlab异步电动机调速系统设计...
  3. 输入nvidia-smi 显示NVIDIA-SMI has failed because it couldn‘t communicate wi
  4. 阿里开源EasyExcel数字转换问题
  5. 游戏3D建模培训机构口中的“保障就业”到底是什么套路?
  6. PDF编辑器如何拆分PDF文件
  7. 卸载HP笔记本Conexant Flow
  8. java程序通过modbusTCP协议直连三菱PLC机FX5U型号采集数据
  9. 软件项目管理系统-外包管理-外包验收申请
  10. 《单身狗重复文件清理软件v1》使用说明 和 软件下载