本章涉及知识点:
1、前言
2、案例问题的提出
3、决策变量的定义
4、基本情景的假设
5、约束条件的翻译
6、目标函数的建立
7、数学模型的归纳
8、python编程求解模型
9、案例结果分析
10、心得体会
一、前言
继写完线性规划的数学算法和实战的两篇文章后—《线性规划的算法分析》和《线性规划实战—投资的收益和风险》,我们可以看到,一个经济、管理的问题凡是满足以下条件,就可以建立线性规划的模型
(1)现实问题的目标(价值)函数可以用一次多项式来表达,即为线性函数
(2)目标函数的可行解(方案)在其凸集上存在多种组合解
(3)目标的量化均满足约束条件,且这些约束条件可以用线性等式或不等式来描述
下面我们继续分析一个连续投资的场景
二、案例问题的提出
考虑下列投资项目:
项目A:在第1~4年每年年初可以投资,并于次年年末收回本利115%;
项目B:第3年年初可以投资,一直到第5年年末能收回本利125%,且规定最大投资额不超过4万元;
项目C:第2年年初可以投资,一直到第5年年末能收回本利140%,且规定最大投资额不超过3万元;
项目D:5年内每一年年初均可以购买公债,并于当年年末归还本金,并加获得利息6%。
如果你有10万元本金,求确定一个有效的投资方案,使得第5年年末你拥有的资金的本利总额最大?
三、决策变量的定义
分析场景里存在时间轴,即存在两种类型的变量
(1)每年(时间点)均有至少一种投资项目选择,则选择的数量为第一类变量
(2)每个投资项目投资的资金数目为第二类变量
由于线性规划适合处理静态问题,为此我们将时间轴维度拉平,定义决策变量为
决策变量的定义其分别表示第i年给项目A、B、C、D的投资数额,总共有4*5=20个互相独立的决策变量,则根据场景的投资规则,我们可以列出翻译出下列二维表
投资规则上述表可以按行方向翻译为:该项目在5年内的投资情况;按列方向翻译为:该年内选择投资的项目组合和额度
四、基本情景的假设
(1)由于每个项目均是年初方可投资,则假设每年的投资和收益都是连续的
(2)每次投资,都应该把可能收益的本利全部投出去,即手中不应当有剩余的呆滞资金
(3)每种投资项目之间是互相独立的
(4)每种投资项目的收益为定值,不受其他因素的干扰
(5)投资的额度可以是任意自然数,不一定是整万元
五、约束条件的翻译
基于决策变量的意义和模型场景的假设,我们来翻译题目场景的约束条件集合
第1年年初:
还未开始投资,本金为100000元,只有项目A和项目D可以选择,则第1年的资金分配为
第1年年初投资第2年年初:
由于项目A第1年的收益要到第2年年末才能收回,而项目D第1年的收益在第1年年末就可以收回,则第2年年初拥有的投资金额 = 项目D第1年的投资在第1年年末的本息,则第2年的资金分配为
第2年年初投资第3年年初:
由于项目C第2年的收益要到第5年年末才能收回,即第2年年初拥有的投资金额 = 项目A第1年的投资在第2年年末的本息+项目D第2年的投资在第2年年末的本息,则第3年的资金分配为
第3年年初投资第4年年初:
由于项目B第3年的收益要到第5年年末才能收回,即第3年年初拥有的投资金额 = 项目A第2年的投资在第3年年末的本息+项目D第3年的投资在第3年年末的本息,则第4年的资金分配为
第4年年初投资第5年年初:
第5年年初拥有的投资金额 = 项目A第3年的投资在第4年年末的本息+项目D第4年的投资在第4年年末的本息,则第4年的资金分配为
第5年年初投资上述条件均满足我们基本情景的假设的第2条—每次投资,都应该把可能收益的本利全部投出去,即手中不应当有剩余的呆滞资金,即5个线性等式约束
此外,由于题目场景里对项目B、C的投资金额有限制,我们用不等式线性约束来表示,即
不等式线性约束至此我们就将场景的约束条件集翻译为:5个等式约束和2个不等式线性约束
六、目标函数的建立
我们的目标是求在第5年年末可以拥有最大的本利,则与第5年年末资金收益有关的决策变量为:
第5年年末资金收益有关的决策变量则目标函数可以线性表示为
目标函数七、数学模型的归纳
经过上述的分析,我们将动态的时间轴投资问题,通过建立20个互相独立的决策变量,拉伸为静态的投资问题,然后通过约束条件的线性等式和不等式,以及目标函数,则归纳整合的数学模型为
数学模型八、python编程求解模型
我们根据上述建立的数学模型,化为标准型
标准型用我们之前实现的单纯形算法来求解,具体算法之前文章已经详细说明,我们这里直接写业务代码即可
案例业务代码九、案例结果分析
程序运行计算结果为:
程序运行计算结果即求出的最优投资方案为:
第1年年初投资组合:项目A:7.1698万元,项目B:0.0万元,项目C:0.0万元,项目D:2.8302万元,该年总投入:10.0万元
第2年年初投资组合:项目A:0.0万元,项目B:0.0万元,项目C:3.0万元,项目D:0.0万元,该年总投入:3.0万元
第3年年初投资组合:项目A:4.2453万元,项目B:4.0万元,项目C:0.0万元,项目D:0.0万元,该年总投入:8.2453万元
第4年年初投资组合:项目A:0.0万元,项目B:0.0万元,项目C:0.0万元,项目D:0.0万元,该年总投入:0.0万元
第5年年初投资组合:项目A:0.0万元,项目B:0.0万元,项目C:0.0万元,项目D:4.8821万元,该年总投入:4.8821万元
第5年年末总收入本金+利息为:14.375万元,总赢利:43.75%
10、心得体会
这一章我们仍然通过一个实际金融场景问题,来体验金融+数学+编程的整个思维建设推导过程
从这个案例里可以总结出:
(1)处理带时间轴的动态问题,需要将其拉伸独立转化为静态问题
(2)目标函数和约束条件都围绕着决策变量来设计
(3)等式约束条件需要填充不等式约束条件的松弛变量(单纯形算法的注意点)
案例代码见:线性规划实战—连续投资问题
网友评论