Выпуклое программирование с CVXOPT или CVXPY

Мне нужно решить проблему оптимизации с CVXOPT или CVXPY в Python, и я столкнулся с трудностями. Целевая функция

Minimize Sum(a*x^2+b/x)

при следующих ограничениях

5 <= x < 40;

sum(v/d)<=T

где вектор x - переменная оптимизации, векторы a и b заданы, а T - заданный скаляр.


person Vitor Lemos    schedule 20.03.2015    source источник


Ответы (1)


Следующий код решает проблему в 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()
person steven    schedule 27.04.2015