我的头衔可能有点模糊,但我尽量说清楚。我将在下面解释我的意思:
我想创建一个动态规划算法,可以计算出你能花费的最大金额,当你每年只能花的钱是你从银行得到的利息。这意味着,如果某人的起始资本是35000美元,例如,该人只能花费3500美元的最大金额,利率为10%。
我想到了以下几点:
利息i(t)
或者基本上是你可以花费的金额,在上面的例子中是3500。
支出e(t)
,所以你那一年的支出,可能低于3500,作为一个例子,我将使用1000。
利率r
,这本身就说明了问题。
公式是:i(t + 1) = i(t) + r * (i(t) - e(t))
,也就是说,你下一年可以花的钱,是你今年得到的利息加上利率乘以你支出后剩下的钱。
我想计算的是,例如,在某一年的支出总是低于所收到的利息的10年期间的最大支出总额。我不知道怎么做,也不知道从哪里开始。
最佳答案
所以,让我们改革你的问题。向量e=(e_1,e_2,…,e n)。
你要最大化点积两个条件。
(1)E_t>=每t 0。
(2)E_t由于(2)中的每个条件的右部分pf都可以展开为e_t、i_0和r(您给出了一个递归公式)的线性组合,所以所有条件可以一起写成
(2’)e_t(2’)c_t所以,现在你有一个经典的linear programming问题。我不会在这里描述解决这些问题的所有技巧,因为有很多,而你的案例是典型的。
UPD通过公式显式扩展约束
i(t+1)=(1+r)i(t)-e(t)。
E(0)e(1)E(2)I(0)(1+R)^2-E(0)(1+R)-E(1)
可以通过归纳法证明,但也可以看到
e(t)<=i(0)(1+r)^t-e(0)(1+r)^(t-1)-
E(1)(1+R)^(T-2)-…-e(t-2)(1+r)-e(t-1)
改革它,
e(t)+和[j=t-1..0](1+r)^(t-1-j)e(j)<=i(0)(1+r)^t
所以,我们有一个平方矩阵:
b_t j=(1+r)^(t-1-j)对于j=0..t-1,
B_tt=1
对于j>t,b_tj=0
现在你们的约束形式是sum[j=0..n]b_tj e(j)(显然,c_t=i(0)(1+r)^t)
这是lp约束的标准形式。