第 13 卷第 2 期
2007 年 2 月
水利科技与经济
Water Conservancy Science and Technology and Economy
Vol
13 No
,2007
Feb
2
MATLAB 遗传算法工具箱 ( GAOT)
在水资源优化计算中的应用
杜 东1 ,马 震2 ,孙晓明2
(1. 长安大学 环境科学与工程学院 ,西安 710054 ; 2. 天津地质矿产研究所 ,天津 300170)
[摘 要 ] 阐述了遗传算法的基本原理 ,对 MATLAB 遗传算法工具箱 ( GAOT) 的参数使用进行
了详细介绍 ,探讨了 MATLAB 遗传算法工具箱 ( GAOT) 在水资源非线性规划和多目标规划时的
应用 ,并用简单实例证明了这种应用具有良好的通用性 、可行性和简便性 ,可以得到较满意的
优化计算结果 。
[关键词 ] 遗传算法 ;MATLAB ;非线性规划 ;多目标规划 ;水资源
[中图分类号 ] TV21 [文献标识码 ] A [文章编号 ] 1006 - 7175 (2007) 02 - 0073 - 03
Application of MATLAB Genetic Algorithms Toolbox to
Optimization Calculation of Water Resource
DU Dong1 ,MA Zhen2 ,SUN Xiao - ming2
(1. College of Environment Science and Engineering , Chang’an University , Xi ’an 710054 , China ;
2. Tianjin Institute of Geology and Mineral Resources , Tianjin 300170 ,China)
Abstract : This paper expounds the principle of genetic algorithm ( GA) and introduces the parameters of MATLAB Genetic
Algorithms Toolbox ( GAOT) and discusses the application of the GAOT to unlinear programming and multi - objective pro
gramming of water resource through two simple examples , it is of great currency , availability and simplicity. Besides , the
results of optimization calculation can be acquired contently.
Key words : genetic algorithms ; MATLAB ; unlinear programming ; multi - objective programming ; water resource
遗传算法 ( Genetic Algorithm ,简称 GA) 是美国 Michigan
大学 Holland 教授于 1926 年首先提出来的 ,是一种基于自
然选择和基因遗传学原理的优化搜索方法。与传统的优
化算法相比 ,遗传算法具有如下特点[1 ] : ①它不是从单个
点 ,而是从多个点构成的群体开始搜索 ; ②在搜索最优解
过程中 ,只需要由目标函数值转换得来的适应信息值 ,而
不需要导数、连续等其它辅助信息 ; ③搜索过程不易陷入
局部最优点。目前该算法已渗透到许多领域 ,并成为解决
各领域复杂问题的有力工具。而采用 MATLAB 语言编制的
遗传算法工具箱 ( GAOT) 在遗传操作方面非常灵活 ,程序移
植性较好 ,在水资源优化计算方面具有广泛地应用前景。
本文重点介绍水资源在非线性规划和多目标规划时 ,利用
MATLAB 语言编制的遗传算法工具箱的求解过程。
1 遗传算法 ( GA) 基本原理
GA 用数学方法模拟生物进化过程 ,将问题的求解转
化为对一群“染色体”的一系列操作 。我们知道 ,生物遗
传物质的主要载体是染色体 ,在遗传算法中染色体通常
是一串数据 (或数组) ,用来作为优化问题的解的代码 。
其本 身 不 一 定 是 解 。遗 传 算 法 一 般 经 过 这 样 几 个 过
程[2 ] : ①随机产生一定数目的初始染色体 (假设解) ,这些
染色体组成一个种群 ,染色体的树木称为种群的大小或
[收稿日期 ] 2006 - 08 - 24
[作者简介 ] 杜 东 (1981 - ) ,男 ,云南镇雄人 ,在读硕士研究生 ,主要从事水资源合理开发利用研究工作 ;马 震 (1966
- ) ,男 ,山东德州人 ,高级工程师 ,主要从事水文地质 ,环境地质调查研究工作 ;孙晓明 (1960 - ) ,男 ,天津
人 ,教授级高级工程师 ,在读博士研究生 ,长期从事水文地质 ,环境地质调查工作.
—37—
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
3
3
3
3
水利科技与经济
3
3
3
3
3
第 13 卷第 2 期
2007 年 2 月
Water Conservancy Science and Technology and Economy
Vol
13 No
,2007
Feb
2
规模 ; ②用评价函数来评价每个染色体的优劣即染色体
对环境的使用程度 ,用来作为以后遗传操作的依据 ; ③进
行选择过程 ,即从当前种群中选出优良的染色体 ,使它们
成为新一代的染色体 ,判断染色体优良与否的标准就是
各自的适应度 ,即染色体的适应度越高 ,其被选择的机会
就越大 ; ④通过选择过程 ,产生一个新种群 ,对这个新种
群进行交叉操作和变异操作 。经过上述运算产生新一代
的染色体 ,然后对新的后代不断重复进行选择 、交叉和变
异操作 ,通过给定次数的迭代处理后最后的染色体作为
优化问题的最优解 。遗传算法的基本流程见图 1[3 ] 。
传算法的许多算子 (如选择 、杂交 、变异等) ,都是针对所
谓的染色体进行的 ,染色体实质是一个向量 ,可将其看成
一个 1 × n 的矩阵 ,从而这些算子实质上是一些矩阵运
算 ,而 MATLAB 的基本数据单元就是一个维数不加限制
的矩阵 。在这种环境下 ,用户无需考虑大量的有关矩阵
算法的底层问题[3 ] ,因而采用 MATLAB 语言编程可以节
省大量时间和精力 。遗传算法使用过程中必须要编制大
量的程序进行计算 ,我们都希望有一个现成的程序 ,而
MATLAB 遗传算法工具箱 ( GAOT) 正好满足这一要求 。其
主程序 ga. m 调用形式如下 ,参数定义见表 1[4 ] 。
[ x ,fval ,reason ,output ,population] = ga ( @fitnessfcn ,nvars ,op
tions)
3 遗传算法在非线性规划中的应用
3
1 非线性规划
非线性规划是在等式或不等式约束的前提下最优化
某目标函数的问题 ,一般非线性规划最优化问题可描述
如下 :
max(min) f ( x)
gi ( x) ≤0 , i = 1 ,2 , ……, m
hi ( x) = 0 , i = m + 1 , ……, n
xi ≥0 , i = 1 ,2 , ……, n
遗传算法对染色体做遗传操作通常会产生不可行的
后代 ,因而运用遗传算法解非线性规划的核心是如何满
足约束条件问题 ,所以约束条件的处理显得尤其重要 。
等式约束一般将其化简到不等式约束条件中 ,从而简化
约束条件 。
图 1 GA 的基本流程
2 MATLAB 遗传算法工具箱 ( GAOT)
MATLAB 语言简单 ,但功能强大 ,程序移植性较好 ,遗
输出参数
x
fval
reason
output
定义
最终值到达的点
适应度函数的最终值 (即运行
中最好的结果)
算法停止的原因 (可选项)
包含关于算法在每一代性能
的结构体 (可选项)
population 最后种群 ( 即最后一代染色
体) (可选项)
表 1 遗传算法工具箱 ( GAOT) 参数
输入参数
@fitnessfcn 适应度函数句柄 (即适应度函数的文件名 ,通常是. m 文件)
定义
nvars
适应度函数的独立变量个数
options
一个包含遗传算法选项参数的结构 (可选项) ,如果不传递选项参
数 ,则 GA 使用其本身的缺省选项值。该参数结构体包含种群规模 ,
默认值为[20] ,最大代数 ,默认值为[ 20 ] ,选择概率默认值为[ 0. 5 ] ,
交叉概率 ,默认值为 [ 0. 8 ] ,变异概率 ,默认值为 [ 0. 2 ] 。也可通过
gaoptimset 函数改变其默认值 ,达到使用者需要的值。
x2 + x1
x3
3. 2 实例分析
maxf ( x) = x1 ^2 + 2
s. t. . x1 ^2 + x2 ^2 + x3 ^2 ≤26
8 x1 + 14 x2 + 7 x3 ≤57
x1 , x2 , x3 ≥0
x2 ^2 + x3 ^2 + x1
采用 GAOT 编程计算步骤如下 :
(1) 编制目标函数文件 dd2007. m
x (3) - 57 ;
x (2) + 7
g(2) = 8
x (1) + 14
% 约束条件的处理 ;
if ( g (1) < = 0) &( g (2) < = 0) &( x > = 0)
z = f1 ;
else z = - 100 ;
end
z = - z ;
function z = dd2007 (x) ;
f1 = x (1) ^2 + 2
x (2) ^2 + x (3) ^2 + x (1)
x (3) ;
(2) 编程调用主程序 ga. m 如下 :
x (2) + x (1)
options = gaoptimset
( ’PopulationSize ’, 20 ,’Generations’,
100 ,’PlotFcns’, @gaplotbestf) ;
g(1) = x (1) ^2 + x (2) ^2 + x (3) ^2 - 26 ; % 约束条件
[ x ,z ,reason] = ga ( @dd2007 ,3 ,options)
—47—
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
3
3
3
3
3
3
3
3
3
3
3
第 2 期
杜 东 ,等 :MATLAB 遗传算法工具箱 ( GAOT) 在水资源优化计算中的应用
其中 @gaplotbestf 为工具箱内的画图函数句柄 ,其作
用是画出每一代适应度函数的最佳值和平均值 (图 2) 。
(3) 结果输出
x = 4. 1317 0. 2230 2. 9746
z = - 39. 2300
reason = Optimization terminated : maximum number of genera
tions exceeded.
图 2 每一代适应度函数的最佳值和平均值
即 x1 = 4. 1317 , x2 = 0. 2230 , x3 = 2. 9746 最终目标函
数值为 39. 23 (说明 :此值为输出结果的相反值) 显然最优
解满足约束条件 。
4 遗传算法在多目标规划中的应用
4. 1 多目标规划简述
在多目标规划中 ,常常含有多个目标函数和多个约束
条件的优化问题 ,而在实际应用中 , 目标之间一般都是相
互冲突的 ,不可能使每个目标函数都达到最佳理论值 , 这
时需要使多个目标函数在给定区域上都可能达到最优值 。
多目标优化问题的一般数学模型可描述为 [4 ]
max(min) z (x) = [ z1 ( x) , z2 ( x) , ……, zp ( x) ]
s. t. gi ( x) ≥= ≤ bi ( i = 1 ,2 , ……, m)
xj ≥0 ( j = 1 ,2 , ……, m)
式中 x 为决策向量 ,x = [ x1 , x2 , ……, xn ] ;z (x) 为 p 个独
立的目标组成的目标向量 。如果是极大化问题可在目标函
数前加负号转化为极小化问题 。遗传算法在求解这类问题
时有 5 种常用方法[5 ] : ①权重系数变换法 :对一个多目标
优化问题 ,给其每个子目标函数 zi ( x) ( i = 1 ,2 , ……, m)
赋予权重 wi ( i = 1 ,2 , ……, m) ,其中 wi 为相应的 zi ( x) 在
多目标优化问题中的重要程度 , 则各个子目标函数 zi ( x)
的线性加权和表示为
m
wi ·zi ( x)
max(min) u = Σ
i =1
将 u 作为多目标优化问题的评价函数 ,此时多目标优
化问题就转化为单目标优化问题 ,即可利用单目标优化的
遗传算法求解多目标优化问题 ; ②并列选择法 :先将群体
中的全部个体安子目标函数的数目均等地划分为一些子
群体 ,对每个子群体分配一个子目标函数 , 各个子目标函
数在相应的字群体中独立地进行选择运算 ,各自选择出一
些适应度高的个体组成一个新的子群体 ,然后再将所有这
些新生成的子群体合并成一个完整的群体 ,在这个群体中
进行“分割 ———并列选择 ———合并”操作 ,最终可求出多
目标优化问题的最佳权衡解 (Pareto 最优解) ; ③排列选择
法 :对群体中的各个个体进行排序 ,依据排序次序来进行
选择运算 ,从而使得排在前面的最优个体将有更多机会遗
传到下一代群体中 ,如此这样经过一定的代数循环后 ,最
终就可求出多目标优化问题的 Pareto 最优解 ; ④共享函数
法 :它是利用小生境遗传算法的技术 ,使所得到的解能够
尽可能地分散在整个 Pareto 最优解集合内 ,而不是集中在
某一个较小的区域上 。小生境数的计算方法定义为
mx = Σ
y ≤n
s[ d ( x , y) ]
式中 s ( d) 为共享函数 ,它是个体之间距离的单调减函数 ,
d ( x , y) 可定义为个体的 x , y 之间的距离 。在计算出各个
个体的小生境数之后 ,可以使小生境数较小的个体能够有
更多的机会被选中遗传到下一代中 ,这样就增加了群体的
多样性 ,也增加了解的多样性 ; ⑤混合法 :其基本思想是
选择算子的主体使用并列选择法 ,然后通过引入保留最佳
个体和共享函数的思想来弥补仅使用并列选择法的不足
之处 。
4
2 实例分析
目标函数 :maxf1 = 0. 3 x1 + 9 x2 + 30 x3 + 0. 7 x4
maxf2 = 6 x1 + 0. 2 x2 + 20 x3 + 0. 9 x4
约束条件 :0. 5 x1 + x3 + x4 ^2 ≤3
x2 + x3 ^2 - x4 ≤0. 8
x1 , x2 , x3 , x4 ≥0
对于此多目标规划一般采用权重系数变换法将多目
标问题转化为单目标问题 ,根据子目标函数的重要程度假
设取 f1 的权重系数为0. 4 ,f2 的权重系数为0. 6。采用 GAOT
的步骤如下 :
(1) 首 先 编 制 目 标 函 数 文 件 及 约 束 条 件 处 理 , 如
dd2005. m
function z = dd2005 ( x) ;
f1 = 0. 3
x (1) + 9
x (2) + 30
x (3) + 0. 7
x (4) ;
f2 = 6
x (1) + 0. 2
x (2) + 20
x (3) + 0. 9
x (4) ;
g1 = 0. 5
x (1) + x (3) + x (4) ^2 - 3 ; % 约束条件
g2 = x (2) + x (3) ^2 - x (4) - 0. 8 ;
%约束条件的处理
if (g1 < = 0) &(g2 < = 0) &(x > = 0)
z = 0. 4
f1 + 0. 6
f2 ;
else
end
z = - 100 ;
z = - z ;
(下转第 78 页)
—57—
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
第 13 卷第 2 期
2007 年 2 月
水利科技与经济
Water Conservancy Science and Technology and Economy
Vol
13 No
,2007
Feb
2
66. 8 ×104 t ,库区持续淤积 ,经 Q = 204 m3/ s低谷敞泄冲沙
6 h后纵剖面对比图 。可见经过中水年 、枯水年的冲淤 ,库
区已达到冲淤相对平衡 ,各个纵剖面形态在多次冲刷后已
基本保持不变 。
在水库达到冲淤相对平衡的情况下 , 总库容损 失
85. 9 ×104 m3 , 总 库 容 损 失 率 31. 6 % , 有 效 库 容 损 失
11. 3 ×104 m3 ,有效库容损失率12. 1 %。剩余的有效库容
82. 0 ×104 m3可长期使用 ,足以满足地洛水电站日调节所
需 。可长期保持的1 213. 0 m以下库容104. 0 ×104 m3 ,可保
证沉沙之用 。
4 结论与建议
(1) 水库按设计单位拟定的水库运用方式运行 ,取水
口含沙量可满足本工程过机含沙量的限制条件 ,能满足水
库设计所需长期有效的日调节库容的要求 。
(2) 建 议 水 库 运 行 方 式 为 : 汛 期 按 汛 期 排 沙 水 位
1 213. 0 m运 行 , 当 入 库 流 量 > 350 m3/ s 或 入 库 含 沙 量
> 10 kg/ m3时 ,全部闸孔敞泄排沙 ;建议每个月至少应有
一次避峰停机敞泄冲沙或低谷停机敞泄冲沙6 h ,并在汛
初与汛末在流量200 m3/ s左右时 ,各停机低谷敞泄冲沙
6 h ,非汛期水库水位在1 213. 0~1 217. 0 m间运行 。这样
的水库运行方式保证了 d > 0. 1 mm粗沙沉得下 ,淤积泥
沙冲得走 ,推移质不进入取水口 ,保证有效库容满足日调
节所需 。
(3) 试验结果表明 ,进水口前拦沙坎及冲沙闸前导墙
布置合理 ,可以确保电站进水口“门前清”,防止泥沙在电
站进水口处淤积 。从试验情况看 ,地洛水电站按拟定的水
库运用方式运行 ,坝前泥沙淤积量较少 ,坝前泥沙淤积面
高程 < 1 197. 0 m ,远低于拦沙坎及导墙顶部高程 ,建议进
水口前拦沙坎顶部高程降低1. 5 m ,冲沙闸前导墙顶部高
程降低2. 5 m。
(4) 综合分析以上试验结果 ,地洛水电站首部枢纽沉
沙池可以取消 ,以水库代替沉沙池进行沉沙和冲沙是可行
且有效的方案 。
[参考文献 ]
[1 ] 谢鉴衡. 河流模拟 [ M]. 北京 :中国水利水电出版社 ,
1993. 191 - 204.
[2 ] 张瑞瑾. 河流泥沙动力学 [M]. 北京 :中国水利水电出
版社 ,1998. 149 - 169.
[3 ] 谢鉴衡. 河床演变及整治 [M]. 北京 :中国水利水电出
版社 ,1997. 139 - 187.
[4 ] GB 50159 - 92 , 河流悬移质泥沙测验规范[ S].
(上接第 75 页)
(2) 编程调用主程序 ga. m 如下 :
options = gaoptimset
( ’PopulationSize ’, 50 ,’Generation ’,
即 x1 = 2. 4101 x2 = 0. 3229 x3 = 1. 1348 x4 = 0. 811
最终目标函数值为 38. 0671 (说明 :此值为输出结果的相反
值) 显然最优解满足约束条件 。
100 ,’PlotFcns’, @gaplotbestf) ;
[ x ,z ,reason] = ga ( @dd2005 ,4 ,options)
(3) 结果输出
x =
z =
2. 4101 0. 3229 1. 1348 0. 8110
- 38. 0671
reason =
Optimization terminated : maximum number of generations
exceeded.
图 3 每一代适应度函数的最佳值和平均值
—87—
5 结 语
通过两个简单实例的求解过程说明了 MATLAB 遗传
算法工具箱 ( GAOT) 具有使用简便 、灵活的优点 。它利用
了遗传算法的优点 ,而且不需要编写大量的遗传算法程
序 、只需要调用工具箱内的函数即可 ,易于学习和掌握 。
它是解决此类问题比较实用的数学工具 。
[参考文献 ]
[1 ] 刘国华 ,包 宏 ,李文超. 用 MATLAB 实现遗传算法程
序[J ]. 计算机应用研究 ,2001 ,16 (8) :80 - 82.
[2 ] 刘宝碇 ,赵瑞清. 随机规划与模糊规划 [ M]. 北京 :清
华大学出版社 ,1998. 15 - 36.
[3 ] 蒋云彩 ,万顷波. MATLAB 遗传算法工具箱 ( GAOT) 的
应用[J ]. 江西电力职业技术学院学报 ,2004 ,17 (3) :42
- 44.
[4 ] 翁文斌 ,王忠静 ,赵建世. 现代水资源规划 ———理论 、
方法和技术[M]. 北京 :清华大学出版社 ,2003. 131 -
133.
[5 ] 雷英杰 ,张善文 ,李续武 ,等. MATLAB 遗传算法工具
箱及应用[M]. 西安 :西安电子科技大学出版社 ,2005.
30 - 33 ,150 - 176.
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net