如何解决使用 cvxpy 设置二次程序优化时出现维度错误
我正在尝试使用 cvxpy 设置一个简单的二次程序优化:
import numpy as np
import cvxpy as cp
sigma = np.array([[0.000234,0.000167],[0.000167,0.00030]])
ret = np.array([0.06,0.04])
x = cp.Variable(2)
prob = cp.Problem(cp.Maximize(ret.T @ x - (1/2) * cp.quad_form(x,sigma)),[cp.sum(x) == 1,x >= 0])
prob.solve()
但是,我收到以下错误:
Traceback (most recent call last):
File "C:\Users\fidahur\AppData\Local\Programs\Python\Python37\lib\site-packages\IPython\core\interactiveshell.py",line 3296,in run_code
exec(code_obj,self.user_global_ns,self.user_ns)
File "<ipython-input-82-4582a2312a0a>",line 12,in <module>
prob.solve()
File "C:\Users\fidahur\AppData\Local\Programs\Python\Python37\lib\site-packages\cvxpy\problems\problem.py",line 395,in solve
return solve_func(self,*args,**kwargs)
File "C:\Users\fidahur\AppData\Local\Programs\Python\Python37\lib\site-packages\cvxpy\problems\problem.py",line 744,in _solve
solver,gp,enforce_dpp)
File "C:\Users\fidahur\AppData\Local\Programs\Python\Python37\lib\site-packages\cvxpy\problems\problem.py",line 524,in get_problem_data
data,inverse_data = solving_chain.apply(self)
File "C:\Users\fidahur\AppData\Local\Programs\Python\Python37\lib\site-packages\cvxpy\reductions\chain.py",line 71,in apply
problem,inv = r.apply(problem)
File "C:\Users\fidahur\AppData\Local\Programs\Python\Python37\lib\site-packages\cvxpy\reductions\qp2quad_form\qp_matrix_stuffing.py",line 263,extractor)
File "C:\Users\fidahur\AppData\Local\Programs\Python\Python37\lib\site-packages\cvxpy\reductions\qp2quad_form\qp_matrix_stuffing.py",line 247,in stuffed_objective
params_to_P,params_to_q = extractor.quad_form(expr)
File "C:\Users\fidahur\AppData\Local\Programs\Python\Python37\lib\site-packages\cvxpy\utilities\coeff_extractor.py",line 198,in quad_form
P = sp.block_diag([P,coeffs[var_id]['P']])
File "C:\Users\fidahur\AppData\Local\Programs\Python\Python37\lib\site-packages\scipy\sparse\construct.py",line 693,in block_diag
data = np.concatenate(data)
File "<__array_function__ internals>",line 6,in concatenate
ValueError: all the input arrays must have same number of dimensions,but the array at index 0 has 1 dimension(s) and the array at index 1 has 2 dimension(s)
任何帮助将不胜感激。谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。