0

我是 CVXOPT 的新手。我已经在 CVXOPT 文档中尝试了示例二次程序(带有 2 个变量),并且我能够理解它。现在我需要解决具有大量变量(例如:100 个变量)的二次规划问题。如何使用 CVXOPT 做到这一点?

我要解决的问题如下所示。

最小化

Σ [ d(t) + x(t) ]²        ; t=1, ....., 100

这样,

0 <= x(t) <= 10

Σ x(t) = 600

在这里,d(t)已知 t=(1, ...,100)。

x(t)对于 t=(1, ...,100) 是决策变量。  

干杯!!! 

4

2 回答 2

0

我不需要求解器:

0 <= x(t) <= 10
sum(x(t)) = 2000

withT=100将是不可行的。有了这些界限,总和将在 0 到 1000 之间。

于 2018-07-30T16:57:00.203 回答
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]]
于 2018-07-31T22:06:06.613 回答