使用 CVXOPT 或 CVXPY 进行凸编程

Vit*_*mos 2 python optimization convex-optimization cvxopt cvxpy

我需要在 Python 中使用 CVXOPT 或 CVXPY 解决优化问题,但遇到了困难。目标函数是

Minimize Sum(a*x^2+b/x)
Run Code Online (Sandbox Code Playgroud)

受以下限制

5 <= x < 40;

sum(v/d)<=T
Run Code Online (Sandbox Code Playgroud)

其中向量x是优化变量,向量ab是给定的,并且T是给定的标量。

ste*_*ven 5

以下代码解决了 CVXPY 中的问题。我以为你的意思是sum(x/d) <= T.

# Replace these with your values.
n = 2
a = 2
b = 2
d = 2
T = 1000

import cvxpy as cvx

x = cvx.Variable(n)
obj = cvx.sum_entries(a*x**2 + b*cvx.inv_pos(x))
constr = [5 <= x, 
          x <= 40,
          cvx.sum_entries(x/d) <= T]
prob = cvx.Problem(cvx.Minimize(obj), constr)
prob.solve()
Run Code Online (Sandbox Code Playgroud)