我正在尝试使用 CVXPY 优化可见光通信 (VLC) 系统的信噪加干扰比 (SINR)。我的 SINR 约束之一为
如果我使用 cp.sqrt(A),其中 A 是平方根内的项,我的约束违反了 DCCP 规则,但是当我使用 cp.norm(A) 进行强制转换时,似乎没有违反。有人请向我澄清为什么会这样。我怀疑简单地采用 cp.norm(A) 是正确的。我刚刚开始学习如何使用 CVXPY,感谢任何帮助和指导。
我正在尝试使用 CVXPY 优化可见光通信 (VLC) 系统的信噪加干扰比 (SINR)。我的 SINR 约束之一为
如果我使用 cp.sqrt(A),其中 A 是平方根内的项,我的约束违反了 DCCP 规则,但是当我使用 cp.norm(A) 进行强制转换时,似乎没有违反。有人请向我澄清为什么会这样。我怀疑简单地采用 cp.norm(A) 是正确的。我刚刚开始学习如何使用 CVXPY,感谢任何帮助和指导。
根据您的经验,其中之一(忽略下标)h
或p
必须是变量。因此h'*p
是仿射的。引入下标后,就可以按照CVXPY的DCP规则,形成这些单独的仿射项的向量范数,因为参数norm
是仿射(向量)。cp.norm
适当的向量是正确的,但不是cp.norm
平方根的参数。
使用时norm
,CVXPY 会将此约束识别为二阶锥约束,并相应地将其发送给求解器。
直接输入平方根违反了 DCP 规则,因为根据 DCP 规则,凸的凹(平方和的平方)是不允许的,因为对于任意凹函数和凸函数没有明确确定凸的凹曲率。