欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-08-06 08:47:01
建模阶段多目标规划模型:第一个优化目标为总体风险尽可能小。第二个优化目标为总净收益尽可能大。约束条件为总购买额为M和单个购买额大于等于零。对于一个多目标优化模型,常用的考虑方式为先固定其中一个目标,再优化另一个目标。模型一、固定风险水平,优化收益模型二、固定盈利水平,极小化风险模型三、用投资偏好系数赋权更多:https://blog.csdn.net/qq_29831163/article/details/89502094编程阶段模型一的求解示例文件# 1.导入相关库...

建模阶段

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

约束条件为总购买额为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

相关标签: 数学建模