维普资讯
第21卷第 1期 大 学 数 学 Vo1.21,№ .1
2月 CoLLEGE M ATHEMATICS Feb.
遗传算法求解约束非线性规划及 Matlab实现
倪金林
(合肥工业大学理学院 应用数学系,合肥 230009)
[摘 要]对于约束非线性规划 问题 ,传统的方法 :可行方 向法、惩罚函数法计算烦琐且精度不高.用新
兴的遗传算法来解决约束非线性规划 ,核心是惩罚函数的构造.以前的惩罚函数遗传算法有的精度较低 ,有
的过于复杂.本文在两个定义的基础上构造了新 的惩罚函数,并在新的惩罚函数的基础上.提 出了一种解决
约束非线性最优化问题的方法,通过两个例子应用 Matlab说明了这个算法的可行性.
[关键词]遗传算法;约束非线性规划 ;惩罚函数;交叉;变异
[中图分类号]0221.2 [文献标识码]A [文章编号]1672—1454()O1—0091-05
1 引 言
约束非线性规划问题是运筹学中的一个重要分支,现实生活中许多实际问题都不能表达为容易解
决的线性模型,如地下水调整系统和地下水污染来源识别问题中就不可避免非线性规划问题.解决约束
非线性问题的方法也很多.一般方法,如可行方向法,惩罚函数法I】都计算复杂且精度不高.遗传算法是
一 个新兴的方法,1975年 Holland在他的著作 《AdaptationinNaturalandArtificalSystems》中首次提
出遗传算法,很快就用遗传算法来解决非线性最优问题.而用遗传算法解决非线性等式与不等式约束最
优化问题的核心问题是如何满足约束问题.如今用遗传算法解决非线性等式与不等式约束最优化有几
种满足约束的策略:拒绝策略、改进策略、算子策略和惩罚策略_l2].前三种策略不会产生不可行解,无法
考虑可行域外的解 ,对于约束严的问题不可行解在种群中占的比例很大,因此将搜索限制在可行域内就
很难找到可行解.惩罚策略不拒绝每代中的不可行解,其中一些个体可能提供关于最优解的更有用的信
息,通过对不可行解的惩罚来将约束问题转换为无约束问题,任何对约束的违反都要在 目标函数中添加
惩罚项.因此,允许在搜索空间里的不可行域中进行搜索能实现更快更好的最终解.惩罚函数就是在遗
传搜索中考虑不可行解的技术,给不可行解根据具体情况给予惩罚.如何设计一个好的惩罚函数就是关
键.设计惩罚函数没有一般的指导性原则.Homaifar,Qi和Lai方法构造的惩罚函数简单,但不够精确.
Joines和 Houck设计的惩罚函数对参数太敏感.本文在两个定义基础上构造一个新 的惩罚函数,并用
两个例子说明该方法是有效可行的.
2 遗传算法
遗传算法是一种从适者生存概念和 自然中抽象出来的基因运算 ,是基于 自然选择机制和 自然基因
的相对较新的联合搜索方法.基因算法与其他的最优化方法相比有4点不同:
1)遗传算法运算的是解集的编码,而不是解集本身.
[收稿 日期]—01—25
[基金项 目]安徽省重点教学研究项 目(2001011)
维普资讯
92 大 学 数 学 第21卷
2)遗传算法的搜索始于解的一种群,而不是单个解.
3)遗传算法用的是 目标函数本身,而不使用 目标函数和约束函数的导数.
4)遗传算法采用概率的,而不是确定的状态转移规则.
遗传算法第一次是由Holland提出,自从提出以后,由于遗传算法不同于传统 的最优化方法,有其
灵活性和易变性.在基本的遗传算法中,许多文学中的变异,选择,交叉,平行计算被改进发展来加速方
法的收敛和方法的有效性 ].遗传操作主要有三种 :
1)选择算子(Selection/reproduction):选择算子从群体中按某一概率成对选择个体,某个体 被
选择的概率 P