4.3

import matplotlib.pyplot as plt
import numpy as np
import cvxpy as cp
x = cp.Variable(6, pos=True)
obj = cp.Minimize(x[5])
a1 = np.array([0.025, 0.015, 0.055, 0.026])
a2 = np.array([0.05, 0.27, 0.19, 0.185, 0.185])
a3 = np.array([1, 1.01, 1.02, 1.045, 1.065])

k = 0.05
kk = []
qq = []
while k < 0.27:
con = [cp.multiply(a1, x[1:5]) - x[5] <= 0, a2 @ x[:-1] >= k, a3 @ x[:-1] == 1]
prob = cp.Problem(obj, con)
prob.solve(solver='GLPK_MI')
kk.append(k)
qq.append(prob.value)
k += 0.005

plt.rc('text', usetex=False)
plt.rc('font', size=16)
plt.rc('font', family='SimHei')
plt.plot(kk, qq, 'k')
plt.plot(kk, qq, 'b.')
plt.xlabel("收益 k")
plt.ylabel("风险 Q", rotation=0)
plt.show()
print("学号:3022")

posted @ 2024-10-22 16:31  Tsuki*  阅读(4)  评论(0编辑  收藏  举报