您的位置:首页 > 其它

动态规划法之投资问题_算法分析与设计

2011-12-30 10:52 471 查看
算法分析与设计之动态规划法

——投资问题

一 问题描述:投资问题就是考虑如何把有限资源分配给若干个工程的问题。

二 给定条件:1.资源总数(设为a)

2.工程个数(设为n)

3.每项工程投资的利润(不同数目的投资所获得的利润不同),用向量Gi (1≦i≦n)表示。

n

三 问题求解:求出一个a的分划x1 , x2 ,…..,
xn ,0≦xi≦a,
且∑xi≦a,使得以下式表示的利润为最大:

i=1

n

G(a)= ∑Gi (xj )
0≦xj≦a

i=1

其中Gi (xj )是把资源xj分配给第I项工程能获得的最大利润。

四 问题分析:

i)若Gi是x的线性函数,则为线性规划问题。

ii)若Gi不是线性函数,则要用动态规划求最佳分配。

用总量为a的资金在n个项目上进行投资以取得最大的利润,可以转化为下述的问题:

将总量资金a分为两部分z(0≦z≦a)及a-z,分别用在第n个项目及剩下的n-1个项目上进行投资,获得的最大利润G(a)=max(第n个项目上资金量为z的利润与用a-z的资金在n-1个项目上投资的最大利润之和)。这样问题就转化为”求用a-z的资金在n-1个项目上投资的最大利润”,与我们的原问题”
求总量为a的资金在n个项目上进行投资以取得最大的利润”性质完全一致,仅仅是问题的规模比原问题少了一个项目,如此将问题的规模细化下去,一直到项目数为1为止,则问题迎刃而解。我们在对原问题进行”分而治之”的过程当中,最终实现了最优化的求解。

五 问题解决方案:

设fi (x):前i个项目共投资资金x所产生的最大利润;di
(x):产生fi (x)在项目i上的资金数。

由上分析可给出投资问题的动态规划函数方程:

f1 (x)= G1 (x);

d1 (x)=x x=0,1……a

fi (x)=max[Gi (z)+ fi-1 (x-z)]
z=0,1……x; x=0,1……a

di (x)=产生fi (x)的z值
i=2,3…..n;

六 问题举例:

设有8(万元)的投资可分给3个项目,每个项目的利润函数如下表(一)所示:

表(一)利润函数表

x

0 1 2 3 4 5 6 7 8

G1 (x)

G2 (x)

G3 (x)

0 5 15 40 80 90 95 98 100

0 5 15 40 60 70 73 74 75

0 4 26 40 45 50 51 52 53

x

0 1 2
3 4 5 6
7 8

G1 (x)

G2 (x)

G3 (x)

0 5 15 40
80 90 95 98
100

0 5 15 40
60 70 73 74
75

0 4 26 40
45 50 51 52
53

解题步骤:

第1步:设项目1是可用于投资的唯一项目,把x万元投资到项目1,利润为

f1 (x)= G1 (x)

这就得到表(二)的最后一行的值,投资到项目1的最优数量为

d1 (x)=x x=0,1……8;

第二步:设资金8万元可投资到项目1和项目2。由第1步已知任意数量的资源投资到项目1所产生的最优,所以下到各种和式中的最大值就是目前情况下的最大利润:

G2 (0)+ f1 (8)=0+100=100
G2 (1)+ f1 (7)=5+98=103

G2 (2)+ f1 (6)=15+95=110
G2 (3)+ f1 (5)=40+90=130

G2 (4)+ f1 (4)=80+60=140
G2 (5)+ f1 (3)=70+40=110

G2 (6)+ f1 (2)=73+15=88
G2 (7)+ f1 (1)=74+5=79

G2 (8)+ f1 (0)=75+0=75

可见将8万元投资于项目1和2
,所能获得的最大利润f2 (8)及投资到项目2的最优数量分别为:

f2 (8)=max[G2 (z)+ f1 (8-z)]=140
z=0,1……8

d2 (8)=4;

第三步:假设以任意x(≠8)万元投资到项目1和2,对每个x值,计算从项目1和2所产生的最优利润,即:

f2 (x)=max[G2 (z)+ f1 (x-z)]
z=0,1……x;

投资到项目2的数量为

d2 (x)=产生f2 (x)的z值。

得到所表(二)的结果。

第四步:将8万元投资于3个项目,这就是原问题。则f3 (8)应取下述各量的最大值:

G3 (0)+ f2 (8)=0+140=140
G3 (1)+ f2 (7)=4+120=124

G3 (2)+ f2 (6)=26+96=126
G3 (3)+ f2 (5)=40+90=130

G3 (4)+ f2 (4)=45+80=125
G3 (5)+ f2 (3)=50+40=90

G3 (6)+ f2 (2)=51+15=66
G3 (7)+ f2 (1)=52+5=57

G3 (8)+ f2 (0)=53+0=53

因此将8万元以最优方式投资到3个项目时所获得的最大利润及投资到项目3的分别为:

f3 (8) =G3 (0)+ f2 (8)=140

d3 (8)=0;

表(二)向项目1,2投资所到的利润表

x

0 1 2 3 4 5 6 7 8

f1 (x)

d1 (x)

f2 (x)

d2 (x)

0 5 15 40 80 90 95 98 100

0 1 2 3 4 5 6 7 8

0 5 15 40 80 90 95 120 140

0 1 2 3 0 0 0 3 4

x

0 1 2 3
4 5 6 7
8

f1 (x)

d1 (x)

f2 (x)

d2 (x)

0 5 15 40
80 90 95 98
100

0 1 2 3
4 5 6 7
8

0 5 15 40
80 90 95 120
140

0 1 2 3
0 0 0 3
4

因为d3 (8)=0;故剩下8万元要最优的投资到项目1和2中。由表(二)易知,当项目1和2
可用时,d2 (8)=4表示投资到项目2的最优数量,因此项目1应投资剩下的4万元。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: