我是CVXOPT的新手。我已经在CVXOPT文档中试用了example quadratic program(带有2个变量),并且能够理解。现在我需要解决一个包含大量变量(例如100个变量)的二次编程问题。如何使用CVXOPT执行此操作?
我要解决的问题如下所示。
最小化
Σ [ d(t) + x(t) ]² ; t=1, ....., 100
这样,
0 <= x(t) <= 10
Σ x(t) = 600
在这里,d(t)
的已知值是t =(1,...,100)。
x(t)
for t =(1,...,100)是决策变量。
干杯!!!
答案 0 :(得分:0)
我不需要求解器。
0 <= x(t) <= 10
sum(x(t)) = 2000
与T=100
一起使用是不可行的。有了这些界限,总和将在0到1000之间。
答案 1 :(得分:0)
cvxpy可能会容易一些:
import numpy as np
import cvxpy as cvx
N = 100
d = np.random.uniform(-500,500,N)
x = cvx.Variable(N)
prob = cvx.Problem(cvx.Minimize(cvx.norm(x+d)), [x >= 0, x <= 10, sum(x) == 600])
prob.solve()
print(prob.status)
v = x.value
print(v)
这给
optimal
[[ 3.65513295e-09]
[ 4.89791266e-09]
[ 3.05045765e-09]
[ 9.99999999e+00]
. . .
[ 1.00000000e+01]
[ 2.85640643e-09]
[ 5.42473434e-09]]