logo资料库

MATLAB遗传算法工具箱_GAOT_在水资源优化计算中的应用.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
第 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
分享到:
收藏