遗传算法建模
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问题描述
目标函数
E max Ntt
t 1
12
水位约束
Z死 Zt Z正
水电站出力 限制
Np Nt Ny
q min qd q max
Vi Vi 1 (qin Qi qsi )T
发电流量限 制
水量平衡
应用实例
龙滩水电站是红水河梯级开发的骨干工程 、巨型电站和 大型水库,坝址位于广西天峨县境内,是红水河综合利用规 划的第四个梯级电站,其装机容量占红水河可开发容量的35-
遗传算法求解
选择算子:采用轮盘赌选择。
for (int i = 0; i < q_in.length; i++) { Sum = Sum + E_SYZhi[i]; //当前代种群所有个体适应度之和 } qujian[0] = E_SYZhi[0] / Sum; for (int i = 1; i < q_in.length; i++) { qujian[i] = qujian[i - 1] + E_SYZhi[i] / Sum; //截止到第i个个体,累积适应度 的和占总适应度的分数,并存入一个数组 } int[] child_xiabiao = new int[myga.M]; for (int i = 0; i < myga.M; i++) { double rand = Math.random(); //随机生成0-1的数,看落入哪两个数组元素 之间,以确定进入下一部的下标,进行M次 if (rand <= qujian[0]) child_xiabiao[i] = 0; for (int j = 1; j < myga.M; j++) { if (rand > qujian[j - 1] && rand <= qujian[j]) child_xiabiao[i] = j; } }
遗传算法求解
求适应度: 1由于本例中目标函数为正,所以可作为适应度函数(发 电量)。 2采用惩罚函数:适应度函数值=发电量-惩罚项 adapt = ChuLi[i][j] * 30 * 24 * Math.pow(10, 4) -a* Math.pow(t,b)* Math.pow(N_Maxzhji - ChuLi[i][j],(double) 2); a,b调整惩罚的参数 3确定边界条件:若出力大于装机容量,则出力等于装机 容量;若出力小于保证出力,则出力等于保证出力。
40%,其死水位为330m,正常高水位为375m,校核洪水位
为381.84m,装机容量4900MW 。龙滩水电站的建成,有利 于推进华中与华南电网联网,实现更大范围内的资源优化配 置,有利于全国电网的安全经济稳定运行。
应用实例
应用实例
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 起始水位/m 370.00
遗传算法求解
初始化种群: 1以水位作为控制变量,离散成m份,精度N=0.1 m = (int) ( (zmax - zmin) / N); 2生成0到m之间的随机数n, Z=Zmin+n*N;Z即为该时 段基因值. 3对每个时段生成1个n,并将每个时段的Z顺序放入一 个数组,即为一条染色体。 4 初始种群是一个二维数组 fatherGroup[M][q_in.length+1] M:种群规模,q_in是入库 流量的数组。 5 考虑水量平衡方程,不符合流量约束的舍弃。
0
上限 库水位限制 下限
375
375
375
375
375
359.3
359.3
369.2
375
375
375
780
330
330
330
330
ቤተ መጻሕፍቲ ባይዱ
330
330
330
330
330
330
375
375
上限 出库流量约束 下限
10000
10000
10000
10000
10000
10000
10000
10000
10000
10000
期末水位/m 370.00 入库流量/ m3/s 637 532 590 688 1381 2977 2821 2831 1849 1194 1171 767
上限 发电流量限制 下限
4970
4970
4970
4970
4970
4970
4970
4970
4970
4970
4970
4970
0
0
0
0
0
0
0
0
0
0
0
遗传算法建模
遗传算法建模
问题描述 应用实例
遗传算法求解
有待改进的地方
问题描述
水电站水库优化调度是水电站长期经济运行的中心内容,是管 理和控制水库安全可靠性,合理利用水资源、发挥水库综合效益的 重要措施,是水电站及其水库长期运行计划的制定和实施的核心问 题。它是在难以准确预知未来径流的情况下,避免工作上的差错, 制定水库调度图或优化调度软件作为指导水电站水库运行的工具, 以满足水电站可靠性和经济性的要求,达到最大效益。由于在较长 时期内气象和水文条件的剧烈变化,水电站水库的天然来水在时间 上分布极不均匀,借助水库对流量进行调节,蓄丰补枯,以适应发 电等用水的需求,提高水资源利用程度,增加发电及其它用水的经 济效益。从这个意义上说,水库调度计划即为水库蓄、供水计划。 另一方面,水库蓄水可以抬高上游水位,提高水头,增发电能,因 此可以说水库调度在提高水量利用程度和增加发电效益方面具有重 要作用。
10000
10000
0
0
0
0
0
0
0
0
0
0
0
0
上限 出力约束 下限
4900
4900
4900
4900
4900
4900
4900
4900
4900
4900
4900
4900
0
0
0
0
0
0
0
0
0
0
0
0
遗传算法求解
大体步骤: 1以时段为序(月),将水位作为基因值编码。(浮 点数编码) 2 通过水量平衡方程,用时段初、末水位所对应的库 容及时段来水计算出水库的下泄流量。 3 通过下泄流量计算出相应的下游水位,并根据时段 初末的上游水位计算出时段的平均水头。 4 计算N=KQH 5 记录下截止到当前代最好的个体及其对应的出力、 水位、库容等情况。 6 选择、交叉、变异 新群体 7 重复2---6,直到代数T(将2-6放入一个方法中, 并使用while(t<T)循环)
遗传算法求解
交叉算子:采用单点交叉。
for (int i = 0; i < myga.M - 1; i++) { int Location = 0; Location = new Random().nextInt(q_in.length); //随机数确定交叉 位置 if (Math.random() < myga.Pc) { for (int j = 0; j < q_in.length + 1; j++) { if (j >= Location) { double[][] Mjie_change = new double[myga.M][q_in.length +1]; Mjie_change[i][j] = childGroup[i][j]; childGroup[i][j] = childGroup[i + 1][j]; childGroup[i + 1][j] = Mjie_change[i][j];