在CVXPY中,约束条件不遵循DCP规则[英] Constraints do not follow DCP rules in CVXPY

本文是小编为大家收集整理的关于在CVXPY中,约束条件不遵循DCP规则的处理方法,想解了在CVXPY中,约束条件不遵循DCP规则的问题怎么解决?在CVXPY中,约束条件不遵循DCP规则问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我想使用 CVXPY 解决这个问题,但我不知道为什么会收到以下错误消息:

<块引用>

DCPError:问题不遵循 DCP 规则.

我猜我的约束不是 DCP.有没有办法在 DCP 中对此进行建模?

n_k = [10000, 20000]

request_rate = [15, 10]

p_k_1 = np.random.rand(n_k[0])

p_k_2 = np.random.rand(n_k[1])

#params
p_k_param_1 = cvx.Parameter(1, n_k[0], sign="positive")
p_k_param_1 = np.array(p_k_1)
p_k_param_2 = cvx.Parameter(1, n_k[1], sign="positive")
p_k_param_2 = np.array(p_k_2)

request_rate_param = cvx.Parameter(2, sign="positive")
request_rate_param = np.array(request_rate)

#varibales
c_k = cvx.Variable(2)
T_k = cvx.Variable(2)


constraints = [ cvx.sum_entries(c_k) <= 10000,
               c_k >= 0,
               c_k[0]==cvx.sum_entries(1-cvx.exp(-request_rate_param[0]*T_k[0]*p_k_param_1)),
               c_k[1]==cvx.sum_entries(1-cvx.exp((-request_rate_param[1]*T_k[1])*p_k_param_2))]

h_k_1 = request_rate_param[0] * cvx.sum_entries((p_k_param_1 * (1-cvx.exp(-request_rate_param[0]*T_k[0]*p_k_param_1))))
h_k_2 = request_rate_param[1]* cvx.sum_entries(p_k_param_2 * (1-cvx.exp(-request_rate_param[1]*T_k[1]*p_k_param_2)))


obj = cvx.Maximize(cvx.log(h_k_1) + cvx.log(h_k_2))
prob = cvx.Problem(obj, constraints)
prob.solve(verbose=True)

推荐答案

你的实用函数:

cvx.log(h_k_1) + cvx.log(h_k_2)

不是凸的.

这些 规则可能会告诉您可以在解决方案中使用哪些内容.

本文地址:https://www.itbaoku.cn/post/1793795.html