✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。
🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室
👇 关注我领取海量matlab电子书和数学建模资料
🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、笃行之,是为:博学慎思,明辨笃行。
🔥 内容介绍
一、优化问题陈述
(一)研究背景
城市排水系统是指收集和排放污水和雨水的管渠及其附属设施所组成的系统。其中,分流制排水系统是将生活污水和雨水分别在两个或两个以上各自独立的管道内排除的系统。排除生活污水的系统称为污水系统,排除雨水的系统称为雨水系统。本题仅考虑雨水系统。
清华大学校园作为一座小“城市”也有一套独立的雨水系统。相信大家都经历过大雨时六教前斜坡积水的情况,严重影响了同学的正常出行。因此一套好的雨水系统在我们实际生活中发挥不可或缺的重要作用。而如何设计一套好的雨水系统是一个十分值得研究的问题。
在雨水系统设计中,最重要的部分为定线,即确定管道铺设的位置。我们的任务是在清华校园现有的条件下设计一套最优的雨水系统定线方案。
以雨水系统的管道铺设成本最小为目标,为清华校园设计一套的雨水系统的管道定线方案。
(二)设计条件
(1)地块划分:清华校园土地利用情况及道路网可利用百度地图、google地图等工具识别,范围示意图如图1所示。
其中:为雨水的设计流量(L/s);为径流系数,所有地块可直接取0.6;为汇水面积(); 为设计暴雨强度 (),本题中统一考虑降雨量q = 84 的设计暴雨强度。
要求沿道路铺设雨水管道。各地块产生的径流排入该地块四周道路下的某一根指定雨水管道。每一根管道的设计流量等于来自上游所有地块的地表径流量之和。
(3)雨水出流:雨水系统的最终出水口应设置于校河边,或排入校园周边已有的市政雨水管网,本题中出水口数量以5~10个为宜。校河及校园周边的市政雨水管网如图2所示。
(4)设计规范:根据《室外排水设计规范》,雨水系统设计时还需要遵循以下几条原则:
①所有的地块周边至少有一条道路下方设有雨水管道。
②所有雨水管道均须最终连接至某一个出水口。
③管道的路径不能出现空间上的重叠,即一条道路下至多只设一条管道。
(5)管径确定:根据《室外排水设计规范》,管径的确定需要经过水力设计计算,并且管径只能选取特定的值。为简化考虑,本题只考虑设计流量和管径的对应关系,即选取某管径的管道时,其设计流量须在一定范围以内。其对应关系见表1。
表1:设计流量范围与管径的对应关系
设计流量范围(L/s) | 管道直径(mm) |
23以下 | 150 |
23~52 | 200 |
52~95 | 300 |
95~145 | 400 |
145~290 | 500 |
210~350 | 600 |
290~600 | 700 |
395~875 | 800 |
500~1250 | 900 |
600~1400 | 1050 |
670~1700 | 1100 |
740~2300 | 1250 |
900~2700 | 1300 |
1100~3000 | 1350 |
1300~3600 | 1450 |
1500~4000 | 1500 |
1700~5500 | 1600 |
2000~7000 | 1800 |
(三)成本核算
为简化问题,本题不考虑管道的坡度和埋深影响的施工成本,也不考虑雨水检查井、入水口、出水口设施的成本。本题仅考虑管道本身的材料费用。考虑管道的成本正比于管道长度、管道直径,管道的成本计算可采用如下公式。
表2:管径的费用系数对应关系
管道直径(mm) | 费用系数(m-1) |
150 | 3 |
200 | 4 |
300 | 6 |
400 | 9 |
500 | 12 |
600 | 16 |
700 | 22 |
800 | 30 |
900 | 36 |
1050 | 40 |
1100 | 43 |
1250 | 60 |
1300 | 87 |
1350 | 93 |
1450 | 100 |
1500 | 110 |
1600 | 143 |
1800 | 192 |
算法流程
采用遗传算法(Genetic Algorithm, GA)和粒子群算法(Particle Swarm Optimization, PSO)求解。
遗传算法的基本步骤:(1)初始化群体;(2)计算群体上每个个体的适应度值;(3)选择操作,遵循个体适应度值所决定的某个规则;(4)交叉操作;(5)突变操作;(6)判断是否满足停止条件,不满足则进入第二步,否则进入第七步;程序的停止条件一般有两种:达到预先设定的最大代数;种群中最优个体在连续若干代没有改进或平均适应度在连续若干代基本没有改进时停止;(7)输出种群中适应度值最优的染色体作为问题的最优解。
粒子群算法的基本步骤为:(1)初始化粒子群,即给每个粒子赋予随机的初始位置和速度;(2)根据适应度函数,计算每个粒子的适应值;(3)求个体最佳适应值:对每一个粒子,将其当前位置的适应值与其历史最佳位置(pbest)对应的适应值比较,如果当前位置的适应值更高,则用当前位置更新历史最佳位置;(4)求群体最佳适应值:对每一个粒子,将其当前位置的适应值与其全局最佳位置(gbest)对应的适应值比较,如果当前位置的适应值更高,则用当前位置更新全局最佳位置;(5)更新每个粒子的速度与位置;(6)判断算法是否结束:若未满足结束条件,则返回第二步,若满足结束条件则算法结束,全局最佳位置(gbest)即全局最优解。
因此,利用算法处理本优化问题的基本流程为:首先,在case1~case4不同情景的约束条件下,生成初始方案,每个方案都是当前出水口位置和数量下的最小子图。其次,迭代不同出水口位置和数量,迭代后仍需化为最小子图。评价适应度并更新,最终d,并生成对应的可视化图像。
⛳️ 运行结果
📣 部分代码
function drawPc(result, option, data, str)% 绘制出水口和节点匹配关系figurehold onplot(data.node(:,4),data.node(:,5),'o','MarkerFaceColor','b')for i=1:length(data.net(:,1))path=data.net(i,1:2);plot(data.node(path,4),data.node(path,5),'-k','LineWidth',1);endplot(data.node(result.noC,4),data.node(result.noC,5),'h','MarkerFaceColor','r','MarkerSize',15)plot(data.node(data.noN,4),data.node(data.noN,5),'o','MarkerSize',20)for i=1:length(result.recording(:,1))path=result.recording(i,1:2);plot(data.node(path,4),data.node(path,5),'--g','LineWidth',2)end% 排水管道管径figurehold onplot(data.node(:,4),data.node(:,5),'o','MarkerFaceColor','b')plot(data.node(data.noN,4),data.node(data.noN,5),'o','MarkerSize',20)for i=1:length(result.net0(:,1))path=result.net0(i,1:2);p=result.net0(i,5);if p~=0;ZJ=data.QL(p,3);plot(data.node(path,4),data.node(path,5),'-k','LineWidth',ZJ/100);endendplot(data.node(result.noC,4),data.node(result.noC,5),'h','MarkerFaceColor','r','MarkerSize',15)end