用Matlab解决非线性规划问题天然气开采点S(0,0),需铺设管道分别向城市a(400km,400km),b(400km,600km),c(600km,400km)输送天然气(城市之间也可铺设管道),且知这三个城市的天然气日需量分
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/04 16:43:50
![用Matlab解决非线性规划问题天然气开采点S(0,0),需铺设管道分别向城市a(400km,400km),b(400km,600km),c(600km,400km)输送天然气(城市之间也可铺设管道),且知这三个城市的天然气日需量分](/uploads/image/z/2485508-68-8.jpg?t=%E7%94%A8Matlab%E8%A7%A3%E5%86%B3%E9%9D%9E%E7%BA%BF%E6%80%A7%E8%A7%84%E5%88%92%E9%97%AE%E9%A2%98%E5%A4%A9%E7%84%B6%E6%B0%94%E5%BC%80%E9%87%87%E7%82%B9S%EF%BC%880%2C0%EF%BC%89%2C%E9%9C%80%E9%93%BA%E8%AE%BE%E7%AE%A1%E9%81%93%E5%88%86%E5%88%AB%E5%90%91%E5%9F%8E%E5%B8%82a%EF%BC%88400km%2C400km%EF%BC%89%2Cb%EF%BC%88400km%2C600km%EF%BC%89%2Cc%EF%BC%88600km%2C400km%EF%BC%89%E8%BE%93%E9%80%81%E5%A4%A9%E7%84%B6%E6%B0%94%EF%BC%88%E5%9F%8E%E5%B8%82%E4%B9%8B%E9%97%B4%E4%B9%9F%E5%8F%AF%E9%93%BA%E8%AE%BE%E7%AE%A1%E9%81%93%EF%BC%89%2C%E4%B8%94%E7%9F%A5%E8%BF%99%E4%B8%89%E4%B8%AA%E5%9F%8E%E5%B8%82%E7%9A%84%E5%A4%A9%E7%84%B6%E6%B0%94%E6%97%A5%E9%9C%80%E9%87%8F%E5%88%86)
用Matlab解决非线性规划问题天然气开采点S(0,0),需铺设管道分别向城市a(400km,400km),b(400km,600km),c(600km,400km)输送天然气(城市之间也可铺设管道),且知这三个城市的天然气日需量分
用Matlab解决非线性规划问题
天然气开采点S(0,0),需铺设管道分别向城市a(400km,400km),b(400km,600km),c(600km,400km)输送天然气(城市之间也可铺设管道),且知这三个城市的天然气日需量分别为5万,4万,10万立方米,铺设日输天然气能力为1万立方米的管道1km的总费用为5万元(假定总费用与管道的输送能力成正比),试设计管道铺设方案使费用最省,并用Matlab画出管道铺设图,标注每条管道的输送能力.
在不使用最短路算法的前提下给出答案
用Matlab解决非线性规划问题天然气开采点S(0,0),需铺设管道分别向城市a(400km,400km),b(400km,600km),c(600km,400km)输送天然气(城市之间也可铺设管道),且知这三个城市的天然气日需量分
function hh
X0=[500 500];
format short g
[X,FVAL,EXITFLAG]=fminsearch(@myfun,X0)
%test fmin
syms x y
A=5;B=4;C=10;
f0=(A+B+C)*sqrt(x^2+y^2);
fa=A*sqrt((x-400)^2+(y-400)^2);
fb=B*sqrt((x-400)^2+(y-600)^2);
fc=C*sqrt((x-600)^2+(y-400)^2);
f=5*(f0+fa+fb+fc)
ezmesh(f,[0 500 0 500])
function f=myfun(x)
A=5;B=4;C=10;
f0=(A+B+C)*sqrt(x(1)^2+x(2)^2);
fa=A*sqrt((x(1)-400)^2+(x(2)-400)^2);
fb=B*sqrt((x(1)-400)^2+(x(2)-600)^2);
fc=C*sqrt((x(1)-600)^2+(x(2)-400)^2);
f=5*(f0+fa+fb+fc);
结果:
X =
2.2307e-005 1.7288e-005
FVAL =
64620
EXITFLAG =
1
开始不相信,x=0,y=0的结果.以为一根大管,到了三角形中间,再分配.
经验证(见下图),极小值的确就在(0,0)处!
从出发点分别引出三条管线,就像楼上回答者: xiaomol_ckt绘制的那样.
不知道你的题目是不是描述有问题。 但是如果,如果总费用与管道的输送能力成正比,那么只需要直接连接开采点到目标城市的路径则是最省的铺设方案。因为那样的条件相当于是独立运输的,运输路程最短就是最省的方案。 余下的问题就是用matlab画出图像即可。 x=1:400; y=1:400; plot(x,y) gtext('5') gtext('(400,400)'); hold on; z=1:1.5:600; plot(x,z) gtext('4'); gtext('(400,600)'); hold on; plot(z,y) gtext('6') gtext('(600,400)'); hold off;