线性规划实战—连续投资问题

本章涉及知识点:

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)等式约束条件需要填充不等式约束条件的松弛变量(单纯形算法的注意点)

案例代码见:线性规划实战—连续投资问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容