基于MATLAB的水资源优化分配问题动态规划解法
摘要:介绍了动态规划的基本原理,针对水资源分配问题进行了动态规划方法分析。针对具体问题采用逆序解法的表格法进行了计算,然后用MATLAB编制了相应的计算程序进行计算,避免了繁琐的人工计算。结果表明该方法可行、便于应用。
关键词:动态规划 水资源分配问题 MATLAB解法
动态规划是1951年美国数学家贝尔曼根据一类多阶段决策过程的特点,提出了解决这类问题的最优性原理,进而发展出的一种新的最优化方法。动态规划的适用范围比较广泛,对目标函数和约束条件没有严格的要求,特别是对于离散问题,线性规划和非线性规划等解析方法无法应用,而动态规划是解决离散系统最优化的一种有效工具。[1]
1 动态规划的基本解法
1)将多阶段决策过程划分阶段,恰当地选择状态变量、决策变量以及定义最优指标函数,从而把问题化成一类同类型的子问题,然后逐个求解。
2)求解时从边界条件开始,逆序过程行进,逐段递推寻优。在每一个子问题求解时,都要使用它前面已求出的子问题的最优结果。最后一个问题的最优解,就是整个问题的最优解。
动态规划逆序法求解的基本方程如下:
2 水资源优化分配问题的动态规划模型描述
2.1 水资源优化分配问题的提出
某供水系统可供水量为 ,用户数为 ,当给第 个用户供水 时所产生的效益为 ,如何合理分配水量才能使总效益最大?
2.2水资源优化分配问题的动态规划模型描述
模型描述如下:
(1)阶段变量 表示第 个用户。
(2)决策变量 第 个用户的供水量 。
(3)状态变量 可用于分配给当前以及以后阶段各用户的水量,即
(4)状态转移方程 根据状态变量可得到状态转移方程为: (5)指标函数 第 阶段的指标函数为第 个用户的效益 。
建立以上模型后,即可采用逆序法进行递推求解。其基本方程为:
3实例分析
3.1 实例概况
有一引水渠系,设计最大流量为6 ,供给四个地区用水,每个地区的用水量与增产效益的关系见表1(效益单位为万元)。求总效益最大的配水方案。(本实例取自文献[2])
表1:引用流量与增产效益的关系
流
量
地
区
123456
甲3.05.57.59.010.010.0
乙3.06.08.09.510.511.0
丙4.06.58.59.09.09.0
丁3.56.07.58.59.09.0
3.2 逆序法的表格计算
利用逆序法的表格计算可知最优分配方案有3个:(1,2,1,2),(1,2,2,1),(2,2,1,1),总效益均为19万元(具体计算略)。
3.3 MATLAB编程及计算
运用MATLAB语言编程,程序如下:
m=1;
A=[0 3 5.5 7.5 9 10 10];
B=[0 3 6 8 9.5 10.5 11];
C=[0 4 6.5 8.5 9 9 9];
D=[0 3.5 6 7.5 8.5 9 9];
for i=1:6
for j=1:6
for k=1:6
for l=1:6
if i+j+k+l==10
d(m)=A(i)+B(j)+C(k)+D(l);
E(m,1)=i-1;
E(m,2)=j-1;
E(m,3)=k-1;
E(m,4)=l-1;
m=m+1;
else
continue;
end
end
end
end
end
MAXNum=d(1);
for n=1:size(d,2)
if d(n)>MAXNum
MAXNum=d(n);
p=n;
else
continue;
end
end
for n=1:size(d,2)
if d(n)==MAXNum
E(n,:)
else
continue;
end
end
MAXNum
运行以上程序的结果如下:
ans =
1 2 1 2
ans =
1 2 2 1
ans =
2 2 1 1
MAXNum =
19
4结语
本文介绍了动态规划的基本解法,针对水资源分配问题进行了动态规划方法分析。针对具体问题用MATLAB编制了相应的计算程序进行计算,同逆序法的表格计算对比可知,运用MATLAB编程进行计算可避免繁琐的人工计算,该方法是切实可行的。
参考文献:
[1] 徐渝. 贾涛 运筹学(上册). 北京: 清华大学出版社,2005
[2] 左兼金. 水利水电工程施工组织管理与系统分析. 北京:水利水电出版社,1993
[3] 尚松浩. 水资源系统分析方法及应用. 北京:清华大学出版社,2006
[4] 张志涌 徐彦琴. MATLAB教程:基于6.x版本. 北京:北京航空航天大学出版社,2001
转载请注明来自:http://www.uuqikan.com/shuililw/4904.html