规划问题的建模与编程(一)投资问题

2022-07-31,,,

建模阶段

多目标规划模型:
第一个优化目标为总体风险尽可能小。
第二个优化目标为总净收益尽可能大。

约束条件为总购买额为M和单个购买额大于等于零。

对于一个多目标优化模型,常用的考虑方式为先固定其中一个目标,再优化另一个目标。

模型一、固定风险水平,优化收益

模型二、固定盈利水平,极小化风险

模型三、用投资偏好系数赋权

更多:https://blog.csdn.net/qq_29831163/article/details/89502094

编程阶段

模型一的求解

示例文件

# 1.导入相关库
import numpy as np
import matplotlib.pyplot as plt
import scipy.optimize as op

# 2.定义初始变量
a = 0
profit_list = [] #记录最大收益
a_list = [] #记录a的取值

# 3.采样搜索
while a<0.05:
    #定义决策变量取值范围
    x1 = (0,None)

    #定义目标函数系数
    c = np.array([-0.05,-0.27,-0.19,-0.185,-0.185])

    #定义不等式约束条件左边系数
    A = np.hstack((np.zeros((4,1)),np.diag([0.025,0.015,0.055,0.026])))
    #定义不等式约束条件右边系数
    b = a*np.ones((4,1))
    #定义等式约束条件左边系数
    Aeq = np.array([[1,1.01,1.02,1.045,1.065]])
    #定义等式约束条件右边系数
    beq = np.array([1])

    #求解
    res = op.linprog(c,A,b,Aeq,beq,bounds=(x1,x1,x1,x1,x1))
    profit = -res.fun
    profit_list.append(profit)
    a_list.append(a)
    a = a+0.001

# 4.绘制风险偏好与最大收益的曲线图
plt.figure(figsize=(10,7))
plt.plot(a_list,profit_list)
plt.xlabel('a')
plt.ylabel('Profit')
plt.savefig("a.png")
plt.show()

运行结果

分析阶段

1.风险越大,收益也就越大
2.冒险的投资者会出现集中投资的情况,保守的投资者则尽量分散投资。
3.在a=0.006附近有一个转折点,在这点左边,风险增加很少时,利润增长很快。在这一点右边,风险增加很大时,利润增长很缓慢。所以对于风险和收益没有特殊偏好的投资者来说,应该选择曲线的拐点作为最优投资组合。

本文地址:https://blog.csdn.net/Small_Lemon_Tree/article/details/107661057

《规划问题的建模与编程(一)投资问题.doc》

下载本文的Word格式文档,以方便收藏与打印。