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")