✅作者简介热爱科研的Matlab仿真开发者擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。完整代码获取 定制创新 论文复现点击Matlab科研工作室 关注我领取海量matlab电子书和数学建模资料个人信条做科研博学之、审问之、慎思之、明辨之、笃行之是为博学慎思明辨笃行。 内容介绍一、优化问题陈述一研究背景城市排水系统是指收集和排放污水和雨水的管渠及其附属设施所组成的系统。其中分流制排水系统是将生活污水和雨水分别在两个或两个以上各自独立的管道内排除的系统。排除生活污水的系统称为污水系统排除雨水的系统称为雨水系统。本题仅考虑雨水系统。清华大学校园作为一座小“城市”也有一套独立的雨水系统。相信大家都经历过大雨时六教前斜坡积水的情况严重影响了同学的正常出行。因此一套好的雨水系统在我们实际生活中发挥不可或缺的重要作用。而如何设计一套好的雨水系统是一个十分值得研究的问题。在雨水系统设计中最重要的部分为定线即确定管道铺设的位置。我们的任务是在清华校园现有的条件下设计一套最优的雨水系统定线方案。以雨水系统的管道铺设成本最小为目标为清华校园设计一套的雨水系统的管道定线方案。二设计条件1地块划分清华校园土地利用情况及道路网可利用百度地图、google地图等工具识别范围示意图如图1所示。其中为雨水的设计流量L/s为径流系数所有地块可直接取0.6为汇水面积; 为设计暴雨强度 ()本题中统一考虑降雨量q 84 的设计暴雨强度。要求沿道路铺设雨水管道。各地块产生的径流排入该地块四周道路下的某一根指定雨水管道。每一根管道的设计流量等于来自上游所有地块的地表径流量之和。3雨水出流雨水系统的最终出水口应设置于校河边或排入校园周边已有的市政雨水管网本题中出水口数量以5~10个为宜。校河及校园周边的市政雨水管网如图2所示。4设计规范根据《室外排水设计规范》雨水系统设计时还需要遵循以下几条原则①所有的地块周边至少有一条道路下方设有雨水管道。②所有雨水管道均须最终连接至某一个出水口。③管道的路径不能出现空间上的重叠即一条道路下至多只设一条管道。5管径确定根据《室外排水设计规范》管径的确定需要经过水力设计计算并且管径只能选取特定的值。为简化考虑本题只考虑设计流量和管径的对应关系即选取某管径的管道时其设计流量须在一定范围以内。其对应关系见表1。表1设计流量范围与管径的对应关系设计流量范围L/s管道直径mm23以下15023~5220052~9530095~145400145~290500210~350600290~600700395~875800500~1250900600~14001050670~17001100740~23001250900~270013001100~300013501300~360014501500~400015001700~550016002000~70001800三成本核算为简化问题本题不考虑管道的坡度和埋深影响的施工成本也不考虑雨水检查井、入水口、出水口设施的成本。本题仅考虑管道本身的材料费用。考虑管道的成本正比于管道长度、管道直径管道的成本计算可采用如下公式。表2管径的费用系数对应关系管道直径mm费用系数m-1150320043006400950012600167002280030900361050401100431250601300871350931450100150011016001431800192算法流程采用遗传算法Genetic Algorithm, GA和粒子群算法Particle Swarm Optimization, PSO求解。遗传算法的基本步骤1初始化群体2计算群体上每个个体的适应度值3选择操作遵循个体适应度值所决定的某个规则4交叉操作5突变操作6判断是否满足停止条件不满足则进入第二步否则进入第七步程序的停止条件一般有两种达到预先设定的最大代数种群中最优个体在连续若干代没有改进或平均适应度在连续若干代基本没有改进时停止7输出种群中适应度值最优的染色体作为问题的最优解。粒子群算法的基本步骤为1初始化粒子群即给每个粒子赋予随机的初始位置和速度2根据适应度函数计算每个粒子的适应值3求个体最佳适应值对每一个粒子将其当前位置的适应值与其历史最佳位置pbest对应的适应值比较如果当前位置的适应值更高则用当前位置更新历史最佳位置4求群体最佳适应值对每一个粒子将其当前位置的适应值与其全局最佳位置gbest对应的适应值比较如果当前位置的适应值更高则用当前位置更新全局最佳位置5更新每个粒子的速度与位置6判断算法是否结束若未满足结束条件则返回第二步若满足结束条件则算法结束全局最佳位置gbest即全局最优解。因此利用算法处理本优化问题的基本流程为首先在case1case4不同情景的约束条件下生成初始方案每个方案都是当前出水口位置和数量下的最小子图。其次迭代不同出水口位置和数量迭代后仍需化为最小子图。评价适应度并更新最终d并生成对应的可视化图像。⛳️ 运行结果 部分代码function drawPc(result, option, data, str)% 绘制出水口和节点匹配关系figurehold onplot(data.node(:,4),data.node(:,5),o,MarkerFaceColor,b)for i1:length(data.net(:,1))pathdata.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 i1:length(result.recording(:,1))pathresult.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 i1:length(result.net0(:,1))pathresult.net0(i,1:2);presult.net0(i,5);if p~0;ZJdata.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 参考文献更多免费数学建模和仿真教程关注领取