有关于投资最优化的模型求解
河工大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需要解決的問題
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_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=-x_ip_i(1-q_i )T_0 i=1,2,3,4,5,6,7,8
T_0=8000
-∑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
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_ib_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_ib_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_ib_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_ib_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;
5x1+5x2+2x3+2x4+3x5+3x6+1x7+1x8>=2.5;
2x1+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)>=T0.1;
x(5)+x(6)>=T0.1;
x(7)+x(8)>=T0.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)>=T0.1;
x(7)+x(8)>=T0.1;
x(5)+x(6)>=T0.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
總結
以上是生活随笔為你收集整理的有关于投资最优化的模型求解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 隐藏软键盘方法
- 下一篇: 我的知识管理工具列表