目录
1 概述
科学的渠系配水决策可以减少渠系输水过程中的渗水损失和无效弃水,提高灌溉水利用率。国内外学者对渠系优化配水决策方法进行了许多研究,Suryavanshi等(1986)最早在假定上级配水渠道是由一组等流量流管组成,流管流量等于下级渠道流量的基础上,以减小渠道工程投资为目标,确定上级渠道流管数的1992)将其用于渠系优化配水研究中,提出了基于0一线性规划配水模型及算法["。基于上述思想﹐王智等(l规划法的下级渠道等流量时优化配水模型并编制了计算机程序2。Reddy等(1999) [3'、Anwar等(2001)对文献[1]、[2]的配水模型进行了改进,加入了各下级渠道在用户预定的配水时间窗内配水的要求,解决了轮期内下级渠道配水时间与实际需求配水时间差异而造成的作物减产问题。而吕宏兴等(2000)改进了文献[2]模型的目标函数,提出了各下级渠道配水时间均一化处理方法,使上级渠道可在同一时间关闭.减少了配水闸门调节次数IS'。骆莉等(2000)、宋松柏等(2004)分别研究了文献[2]、[5]模型的遗传算法求解方法,显著提高了模型的求解速度﹐解决了在下级渠道较多时模型求解困难的问题5.1。马孝义等(2005)以渠系输水损失最小为目标,提出了以灌水组数最大和最长灌水组配水时问最小的二级目标优化配水模型及遗传算法求解方法,并在对复杂渠系抽象概化的基础上﹐研制了一种易于快速搭建、通用性强的渠系配水软件[3]。但上述研究都是基于流管假定下的改进,只能解决下级渠道流量相等条件下的渠系优化配水编组问题。而在大多数情况下﹐由于地形、作物种植类型的变化等,下级渠道设计流量变化较大,现有方法存在明显缺陷。为此,需进一步研究下级渠道流量不等时的渠系优化配水模型及其求解算法。
2 Matlab代码实现
function offspring=Mutate(population,state)
% 本函数完成变异操作
global T Qmax Qmin
N=length(population);
if state<0.5
offspring1 = population;
for i=1:N
pop1 = population(i);
pop2 = population(randperm(N,1));
% 随机挑选1-2个位置进行交叉操作
pos = randperm(11,randi([1,3],1));
pop1.tstart(pos) = pop2.tstart(pos);
pop1.tend(pos) = pop2.tend(pos);
pop1.q(pos) = pop2.q(pos);
offspring1(i) = pop1;
end
offspring2 = population;
for i=1:N
pop1 = population(i);
% 开始时间
pos = randperm(11,randi([1,2],1));
pop1.tstart(pos) = pop1.tstart(pos) + randi([-2,2],size(pos));
pop1.tstart(pos) = max(pop1.tstart(pos),1);
pop1.tstart(pos) = min(pop1.tstart(pos),T*24/4-1); %修复上下界
pop1.tend(pos) = max(pop1.tstart(pos),pop1.tend(pos));
offspring2(i) = pop1;
end
offspring3 = population;
for i=1:N
pop1 = population(i);
% 结束时间
pos = randperm(11,randi([1,2],1));
pop1.tend(pos) = pop1.tend(pos) + randi([-2,2],size(pos));
pop1.tend(pos) = max(pop1.tstart(pos),pop1.tend(pos));
pop1.tend(pos) = min(pop1.tstart(pos),T*24/4); %修复上下界
offspring3(i) = pop1;
end
offspring = CalObj([offspring1,offspring2,offspring3]);
else
offspring4 = population;
for i=1:N
pop1 = population(i);
% 供水量
pos = randperm(11,randi([1,2],1));
pop1.q(pos) = pop1.q(pos) + 0.2.*rands(1,length(pos));
pop1.q = max(Qmin,pop1.q);
pop1.q = min(Qmax,pop1.q); %修复上下界
offspring4(i) = pop1;
end
offspring = CalObj(offspring4);
end
3 运行结果
👨🎓博主课外兴趣:中西方哲学,送予读者:
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。在我这个专栏记录我有空时的一些哲学思考和科研笔记:科研和哲思。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“真理”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
4 参考文献
参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]赵小强,何智娥.基于改进混沌遗传算法的水资源优化调度[J].兰州理工大学学报. 2015,41(04)
5 写在最后
部分理论引用网络文献,如有侵权请联系删除。