如何解决使用python中的cvxpy库解决约束优化问题时,出现“ DCPError:问题不遵循DCP规则”
我正在尝试解决以下约束优化问题:
max [-abs(R-RT)] subject to $\sum p <Pmax$ and $\sum w <Wmax$
。
我正在python中使用cvxpy。当我在不对目标函数施加任何绝对值的情况下使用以下代码时,将获得可接受的结果。但是当我添加绝对函数时。
我收到以下错误:
“ DCPError:问题不遵循DCP规则。特别是: 目标不是DCP。其以下子表达式不是: abs(kl_div(param3942 @ param3945 @ var3941,param3942 @(param3945 @ var3941 + param3943 @ var3940))+ -param3942 @ param3943 @ var3940 +-[1600000。])“
-------------我的代码------------
import numpy as np
import cvxpy as cp
def optimal_variables(n=1,a_val=1,glu_val=np.array([1.17462556e-09]),Ru_min_val=np.array([1600000.]),PSD=np.array([1.99526231e-15]),P_tot= 0.01,W_tot=5e6):
P = cp.Variable(shape=n)
W = cp.Variable(shape=n)
alpha = cp.Parameter(shape=n)
beta = cp.Parameter(shape=n)
Rlu1 = cp.Parameter(shape=n)
alpha.value = np.array(a_val) ;
beta.value = np.array(glu_val)
Rlu1.value = np.array(Ru_min_val)
PSD1 = cp.Parameter(shape=n)
PSD1.value = np.array(PSD)
R = cp.kl_div(cp.multiply(alpha,cp.multiply(PSD1,W)),cp.multiply(alpha,(cp.multiply(PSD1,W) + cp.multiply(beta,P)))) - \
cp.multiply(alpha,cp.multiply(beta,P)) #- cp.multiply(alpha,W))
y1 = cp.abs(R - Rlu1.value)
objective = cp.Minimize(y1)
constraints = [P>=0.0,W>=0.0,cp.sum(P)-P_tot<=0.0,cp.sum(W)-W_tot<=0.0,]
prob = cp.Problem(objective,constraints)
prob.solve(solver='SCS')
return prob.status,-prob.value,Rlu_python_optimiz,P.value,W.value
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。