有关于投资最优化的模型求解

河工大2020年数学建模复赛题目

投资方案最优化的数学模型
摘要:
本文解决的是在未来13年内最优化的投资方案问题,通过对于提供的数据分析,我们建立了三个最优化模型,定量描述了不同约束条件下的投资方案最优方法。
对于问题一,在考虑收益率以及缴纳税率,以最后获得收益的最大值作为目标函数,以最初的投资下限以及产品的风险等级投资到期年限作为约束条件,建立了单目标最优化模型。然后利用lingo编程得出机构在2033年末可以获得利润1914.286万美元。
对于问题二,相对于问题一增加了重复投资,在考虑收益率以及缴纳税率,以2033年获得收益的最大值作为目标函数,以最初的投资下限以及产品的风险等级投资到期年限作为约束条件,包括对于可重复投资年限的考虑,建立单目标最优化模型。然后利用lingo编程求出该机构在2033年可获得的最大利润是4318.194万美元。
对于问题三,相对于问题二从2021年开始进行捐助,可重复投资,在考虑收益率以及缴纳税率,以每年获得收益的最大值作为目标函数,以最初的投资下限以及产品的风险等级投资到期年限作为约束条件,包括对于可重复投资次数的考虑,建立单目标最优化模型。然后利用lingo编程求出该机构在每年可捐助的最大金额是236.615万美元。
关键词:线性规划、投资决策、最优化问题

1.问题重述
1.1问题背景
2020 年,新冠肺炎全球蔓延,严重影响了世界福祉。为刺激经济发展,M 国计划发行各类代号为“拯救地球”的国家紧急债券(SEB)。债券到期年限有 2、 3、4、5、9、11 年等六种,债券每年初发行,发行时间为 2021-2032年。债券每年末兑现,兑现有效截止时间为 2033 年。债券服务范围涵盖医药健康、交通运输、装备制造、国民福利四大领域。债券到期后,允许债 券购买者所在的地方政府收取税率不等的税收。
未来教育基金会(以下称 FFE)计划在 2033 年前(含 2033 年)向 M 国部分高等院校捐助一笔经费以帮助贫困学生。为了增加捐助金额,FFE 将现有的 8000 万美元资金进行债券投资。为谨慎起见,FFE 委托风险机构对各类债券进行了风险等级评估。同时,FFE 还制定了投资要求:①医药健康债券购买金额不得少于债券购买总金额的20%,其余每个行业的债券购买总金额不得少于债券购买总金额的 10%;②所购债券的平均风险等级不得低于 2.5,等级数字越大,风险越低;③要求所购买的债券的平均到期年限不超过6 年;④要求捐助活动结 束后 FFE 继续保留 8000 万美元资金。
1.2需要解决的问题

  1. 若 SEB 债券投资只允许在第一年初进行,那这些投资将分别在第 2、3、4、5、9、11 年收回本金和收益。请问,这8000 万美元资金如何分配,使得 8 个产品的总收益达到最大。
  2. 假定可以进行重复投资,即当债券到期后,只要在 2033 年前(包含 2033 年)能够回收本金和收益就可以进行再次投资。请你帮助 FFE 拟定一个 2021-2032 年的投资债券详细方案,使得2033年末的一次性捐款金额达到最大。
  3. FFE 改变捐助方式,计划从2021 开始,在未来13年内每年年初向 M 国部分高等院校捐助一笔每年金额固定的经费。允许重复投资。请你再次帮助 FFE 拟定一个 2021-2033 年的投资债券详细方案,使得每年捐助的金额达到最大。
    2.问题分析
    对于问题一,只在2021年初进行投资,到2033年获得收益,所有投资到期之后即回收不再进行重复的投资。所以收益应该等于投资额乘收益率减去缴纳税收作为目标函数,结合风险等级以及到期年限投资下限进行约束条件,构成简单的线性规划,求解最大值,进行线性规划的求解。
    对于问题二,各个投资周期不同就可以重复投资,投资周期是2、9、3、11、4、9、2、5,那么项目1和项目7在年初投资到第二年年末可以回收本利,项目2项目6在年初投资在第九年年末才可以回收本利,项目3年初投资第三年年末才可以回收本利,项目4年初投资,第11年年末才可以回收本利,项目5在第四年年末回收本利,项目8在第5年年末才可以回收本利,作为约束条件,以第13年年末所得最大收益为目标函数,建立一个单目标线性最优规划模型。
    对于问题三,在问题2的基础上,对于资金最开始的分配有一部分投入到捐助中,第一年年初捐助进行投资之后仍然有资金剩余支持第二年的资金捐助,之后进行投资,都要保证每年都有捐助并且每年的捐助金额达到最大。本题中,以每年的最大收益作为目标函数,结合问题一二的约束条件以及包括捐助之后仍然持有8000万元美金等作为约束条件进行建模分析,仍然建立单一目标线性规划模型。
    3.基本假设
    ①假设投资期间收益率以及税率稳定不变。
    ②假设投资期间风险等级基本稳定不变。
    ③假设产品投资时不考虑相互影响。
    4.符号说明
    符号 符号说明
    ∑ 求和
    i 投资项目 i=1,2,3,4,5,6,7,8
    j 投资时间 j=1,2,3,4,5,6,7,8,9,10,11,12,13
    x_i 项目i投资额占总投资额比例
    x_ij 项目i在第j年投资额所占的总投资额的比例
    p_i 项目i的收益率
    q_i 项目i的税收率
    W_j 第j年年末到期时获得本利的总金额
    Z 总收益
    Z_j 全部项目第j年末获得的总收益
    Z_ij 项目i在第j年末获得收益
    M_j 第j年年初可用于投资和捐助的总金额
    T_0 最初投资本金
    T_j 第j年年初对所有项目投资的总金额
    d 每年年初捐助的固定金额
    a_i 项目i的投资风险等级
    b_i 项目i的投资到期年限
    5.模型建立与求解
    5.1问题一的模型建立与求解
    5.1.1确定目标函数
    该模型是为了解决机构在13年末的投资取得最大收益的问题。为解决此问题,我们将第13年的最大收益作为目标函数(单位:万元)。
    max Z=x_ip_i(1-q_i )T_0 i=1,2,3,4,5,6,7,8
    5.1.2确定约束条件
    (1)对于这8个产品,在第一年年初全部投资,结合风险等级不小于2.5,
    ∑▒〖x_i
    a_i 〗≥2.5 i=1,2,3,4,5,6,7,8
    (2)对于八个产品,投资到期年限小于等于6年。
    ∑▒〖x_i*b_i≤6〗 i=1,2,3,4,5,6,7,8
    (3)对于八个产品,投资医药健康债券购买金额不得少于债券购买总金额的20%,其余每个行业的债券购买总金额不得少于债券购买总金额的 10%.
    x_1+x_2≥0.2
    x_3+x_4≥0.1
    x_5+x_6≥0.1
    x_7+x_8≥0.1

(4)每个项目的投资额大于等于0,和为1
x_i≥0 i=1,2,3,4,5,6,7,8
∑▒x_i =1 i=1,2,3,4,5,6,7,8
综上所述,得到问题一的单目标最优化模型:
min Z=-x_ip_i(1-q_i )T_0 i=1,2,3,4,5,6,7,8
T_0=8000
-∑x_i
a_i≤2.5 i=1,2,3,4,5,6,7,8
∑▒〖x_i*b_i≤6〗 i=1,2,3,4,5,6,7,8
-(x_1+x_2 )≤-0.2
s.t. -(x_3+x_4)≤-0.1
-(x_5+x_6)≤-0.1
-(x_7+x_8)≤-0.1
x_i≥0 i=1,2,3,4,5,6,7,8
∑▒x_i =1 i=1,2,3,4,5,6,7,8
模型的求解:
编写相关lingo编程(代码在附录一)进行线性规划问题的求解,求出了分配方案:最大总收益是 1914.3万美元
表一:获得最大收益项目资金分配表
产品 x_1 x_2 x_3 x_4 x_5 x_6 x_7 x_8
投资份额(占比) 0.1714 0.5286 0.1000 0 0.1000 0 0.1000 0

5.2问题二的模型建立与求解
5.2.1确定目标函数
该模型是为了解决如何安排投资和在第13年年末获得最大收益的问题。为解决此问题,我们将第13年年末所得收益最大值作为目标函数。该机构第一年可以对所有项目进行投资,所以第一年8000万美金全部用于投资,到第二年年末有项目回收本利之后再利用该资金对一部分项目再次投资,所以建立了如下:
max M_13-T_0
M_j=M_(j-1)-T_(j-1)+Z_(j-1) ;j年年初的可用=上一年剩余-上一年用于投资+ j-1年收益
j-1年的收益: Z_(j-1)=∑▒〖T_j 〖×x〗i×p_i×〖(1-q〗i 〗)&&j-1≥a_i i=1,2,3,4…8
5.2.2确定约束条件
(1)对于这8个产品,在第一年年初全部投资,结合风险等级不小于2.5,
∑▒〖x_ia_i 〗≥2.5 i=1,2,3,4,5,6,7,8
(2)对于八个产品,投资到期年限小于等于6年。
∑▒〖x_i
b_i≤6〗 i=1,2,3,4,5,6,7,8
(3)对于八个产品,投资医药健康债券购买金额不得少于债券购买总金额的20%,其余每个行业的债券购买总金额不得少于债券购买总金额的 10%
x_1+x_2≥0.2
x_3+x_4≥0.1
x_5+x_6≥0.1
x_7+x_8≥0.1
(4)每个项目的投资额大于等于0,和为1
x_i≥0 i=1,2,3,4,5,6,7,8
∑▒x_i =1 i=1,2,3,4,5,6,7,8
综上建立如下模型:
min⁡〖 -Z_13 〗
M_0=T_0=8000
M_j=M
(j-1)-T
(j-1)+Z_(j-1) j=1,2,3,4,5,6,7,8,9,10,11,12,13
Z_(j-1)=∑▒〖T_j×x_i×p_i 〗×(1-q_i )&&a_i≤j-1
i是在j-1年到期的项目
-∑x_ia_i≤2.5 i=1,2,3,4,5,6,7,8
∑▒〖x_i
b_i≤6〗 i=1,2,3,4,5,6,7,8
-(x_1+x_2 )≤-0.2
-(x_3+x_4 )≤-0.1
-(x_5+x_6 )≤-0.1
-(x_7+x_8 )≤-0.1
x_i≥0 i=1,2,3,4,5,6,7,8
∑▒x_i =1 i=1,2,3,4,5,6,7,8
模型的求解,通过上述建立模型与lingo编程(附录一)求解如下:
最大的捐助金额:4318.194万美元
表二:获得2033年最大捐助金额分配表(单位:万美元)
产品
年份 x_1 x_2 x_3 x_4 x_5 x_6 x_7 x_8
1 0 2829 0 0 5171 0 0 0
2 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0
5 0 5755 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0
7 0 0 0 0 0 0 0 0
8 0 0 0 0 0 0 0 0
9 0 0 0 0 0 0 0 0
10 0 0 0 0 1172 0 919 0
11 0 0 1866 0 0 0 0 0
12 1 0 0 0 0 0 947 0
13 0 0 0 0 0 0 0 0

5.3问题三的模型建立与求解
5.3.1确定目标函数
每年年初捐助一笔固定的资金,所以确定目标函数是每年年初捐助的资金的最大值
max d
M_j=M_(j-1)-T_(j-1)-d+Z_(j-1);j年年初的可用=上一年剩余-上一年用于投资-捐助+j-1年收益
j-1年的收益: Z_(j-1)=∑▒〖T_j 〖×x〗i×p_i×〖(1-q〗i 〗)&&j-1≥a_i i=1,2,3,4…8
5.3.2确定约束条件
(1)对于这8个产品,在第一年年初全部投资,结合风险等级不小于2.5,
∑▒〖x_ia_i 〗≥2.5 i=1,2,3,4,5,6,7,8
(2)对于八个产品,投资到期年限小于等于6年。
∑▒〖x_i
b_i≤6〗 i=1,2,3,4,5,6,7,8
(3)对于八个产品,投资医药健康债券购买金额不得少于债券购买总金额的20%,其余每个行业的债券购买总金额不得少于债券购买总金额的 10%
x_1+x_2≥0.2
x_3+x_4≥0.1
x_5+x_6≥0.1
x_7+x_8≥0.1
(4)每个项目的投资额大于等于0,和为1
x_i≥0 i=1,2,3,4,5,6,7,8
(5)最终捐助之后资金应该持有8000万美元
M_13-d+Z_13≥T_00
综上建立数学模型:
min⁡〖 -d〗
M_0=T_0=8000
M_j=M
(j-1)-T
(j-1)-d+Z_(j-1) j=2,3,4,5,6,7,8,9,10,11,12,13
Z_(j-1)=∑▒〖T_j×x_i×p_i 〗×(1-q_i )&&a_i≤j-1
i是在j-1年到期的项目
-∑x_ia_i≤2.5 i=1,2,3,4,5,6,7,8
∑▒〖x_i
b_i≤6〗 i=1,2,3,4,5,6,7,8
-(x_1+x_2 )≤-0.2
-(x_3+x_4 )≤-0.1
-(x_5+x_6 )≤-0.1
-(x_7+x_8 )≤-0.1
x_i≥0 i=1,2,3,4,5,6,7,8
∑▒x_i =1 i=1,2,3,4,5,6,7,8
M_13-d+Z_13≥T_0
模型的求解,通过上述建立模型与lingo编程(附录一)求解如下:
最大利润是236.615万美元
各个项目投资总额是:
表三:获得每年最大捐助金额的资金分配(单位:万美元)
产品 x_1 x_2 x_3 x_4 x_5 x_6 x_7 x_8
年份
1 0 599 5486 0 794 0 240 407
2 0 0 0 0 0 0 0 0
3 0 0 0 0 6 0 0 5
4 0 5599 0 0 0 2 0 0
5 0 0 0 0 424 0 223 0
6 0 0 0 0 0 0 224 0
7 0 0 0 0 0 0 0 0
8 0 0 0 0 0 0 0 0
9 0 0 0 0 235 0 0 0
10 0 0 3 0 0 0 230 0
11 0 0 0 0 0 0 132 0
12 0 0 0 0 0 0 0 0
13 0 0 0 0 0 0 0 0

6.模型的评价与推广
6.1模型的优点
模型简单,求解简单,主要运用线性规划。
建立模型最优化问题,可以化为最优子结构,同时建立的模型在一定程度上可将债券组合投资的问题更好的解决,获得更大的利益。
6.2模型的缺点
由于在代码中为了简便运算我们仅仅用的整数,导致精确度不够。
模型是在一定的理想条件下建立起来的,具有自身的局限性。比如,关于国库券的发行,每年大致月份可能相同,但在具体哪个月哪一天则具有很大随机性;同时,能购买到国库券或者购买到的数量是按理想情况来考虑的,可能与实际不相符,误差较大
6.3模型的推广
可以在此基础上,增加其他的限定条件,比如可以表明在第未来某几年中可以重复投资,以后就不能继续投资。或者可以控制这四类债券的投资的比例,使得投资向哪几个方面倾斜。

7.参考文献:
[1]赵伟.谈最优化方法在数学建模中的应用[J].数学学习与研究,2020(02):16.
[2]义欣.基于Matlab和Lingo的线性规划问题求解过程对比分析[J].科技视界,2019(17):94-96.
[3]王爱玲.概率统计数学模型在投资决策中的应用[J].科技信息,2012(09):153-154.
https://www.docin.com/p-1911324295.html数学建模-投资决策
https://blog.csdn.net/weixin_44587573/article/details/106959859 csdn博客lingo

8.附录一
lingo代码:
问题一:
model:
max=(4.45x1+39.89x2+6.4x3+41.016x4+11.295x5+35.982x6+3.115x7+13.139x8)80;
x1+x2+x3+x4+x5+x6+x7+x8=1;
x1+x2>=0.2;
x3+x4>=0.1;
x5+x6>=0.1;
x7+x8>=0.1;
x1>=0;
x2>=0;
x3>=0;
x4>=0;
x5>=0;
x6>=0;
x7>=0;
x8>=0;
5
x1+5x2+2x3+2x4+3x5+3x6+1x7+1x8>=2.5;
2
x1+9x2+3x3+11x4+4x5+9x6+2x7+5*x8<=6;
End

问题二:
Model:
sets:
i1/1…13/:M,shengyu;
i2/1…8/:b,a,shouyilv,shuilv,x;
i3(i1,i2):y,shouyi;
endsets

data:
b= 5 5 2 2 3 3 1 1;
a=2 9 3 11 4 9 2 5;
shouyilv=4.45 39.89 8.0 51.27 12.55 39.89 4.45 18.77;
shuilv=0 0 0.20 0.20 0.10 0.10 0.30 0.30;
enddata

max=M(13)+@sum(i2(j):shouyi(14-a(j),j))-M(1);
@for(i3(i,j):@gin(y(i,j)));
@for(i3(i,j)|i#gt#14-a(j)#and#i#lt#14:y(i,j)=0);
@for( i2(j):x(j)=@sum(i1(i):y(i,j)) );
@for(i3(i,j):shouyi(i,j)=y(i,j)(1+shouyilv(j)/100(1-shuilv(j))) );

M(1)=8000;
@for(i1(i):M(i)=@sum(i2(j):y(i,j))+ shengyu(i)) ;
@for(i1(i)|i#gt#1:M(i)=@sum(i3(ii,ij)|ii#eq#i-a(ij)#and#ii#gt#0:shouyi(ii,ij)) + shengyu(i-1) );!参考的是博客中关于到期与不到期投资的处理;

T=@sum(i2(j):x(j));
x(1)+x(2)>=T0.2;
x(4)+x(3)>=T
0.1;
x(5)+x(6)>=T0.1;
x(7)+x(8)>=T
0.1;
x(1)>=0;
x(2)>=0;
x(3)>=0;
x(4)>=0;
x(5)>=0;
x(6)>=0;
x(7)>=0;
x(8)>=0;
@sum(i2(i):x(i)b(i))>=T2.5;
@sum(i2(i):x(i)a(i))<=T6;
M(13)+@sum(i2(j):shouyi(14-a(j),j))>8000;

end

问题三:
model:
sets: !设置相关变量;
i1/1…13/:M,shengyu;
!M,每年年初没有捐款和投资时的资金;shengyu,每年年初剩余的没有投资的资金;
i2/1…8/:b,a,shouyilv,shuilv,x;
i3(i1,i2):y,shouyi;
endsets

data: !给变量赋值;
b=5 5 2 2 3 3 1 1;
a=2 9 3 11 4 9 2 5;
shouyilv=4.45 39.89 8 51.27 12.55 39.89 4.45 18.77;
shuilv=0 0 0.20 0.20 0.10 0.10 0.30 0.30;
enddata

max=d;!设置d为每年捐赠的资金;

@for(i3(i,j):@gin(y(i,j)));
@for(i3(i,j)|i#gt#13-a(j)#and#i#lt#14:y(i,j)=0);
@for( i2(j):x(j)=@sum(i1(i):y(i,j)) );

@for(i3(i,j):shouyi(i,j)=y(i,j)(1+shouyilv(j)/100(1-shuilv(j))) );
M(1)=8000;
@for(i1(i):M(i)=@sum(i2(j):y(i,j))+ shengyu(i)+d) ;
@for(i1(i)|i#gt#1:M(i)=@sum(i3(ii,ij)|ii#eq#i-a(ij)#and#ii#gt#0:shouyi(ii,ij)) + shengyu(i-1) );!这里是借鉴csdn博客,主要是为了防止到期之前将未到期的放进M(i)中继续投资;
T=@sum(i2(j):x(j));
x(1)+x(2)>=T0.2;
x(4)+x(3)>=T
0.1;
x(7)+x(8)>=T0.1;
x(5)+x(6)>=T
0.1;
x(1)>=0;
x(2)>=0;
x(3)>=0;
x(4)>=0;
x(5)>=0;
x(6)>=0;
x(7)>=0;
x(8)>=0;
@sum(i2(i):x(i)b(i))>=T2.5;
@sum(i2(i):x(i)a(i))<=T6;
M(13)-d+@sum(i2(j):shouyi(14-a(j),j))>8000;
end

  • 20
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值