You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

numpy报tri()缺少必填位置参数N,CVXPY相关研究代码运行失败如何修复?

修复方案

错误根因

  • np.random.beta(n,n)未指定size参数,生成的是单个标量而非n×n矩阵。np.tril()仅支持二维数组输入,传入标量时无法获取维度参数,触发tri() missing 1 required positional argument: 'N'报错。
  • 计算得到的信道增益g没有赋值给初始化为全零的G,会导致后续优化约束始终不成立,返回无解结果。

修复后完整代码

import cvxpy as cvx
import numpy as np
np.random.seed(100)
n = 3 # 发射端=接收端数量
A = 0.025 # 统一接收系数
delta = np.identity(n) # 单位矩阵
# 修复点1:指定size生成n×n的d_unpair矩阵
d_unpair = np.random.beta(n,n, size=(n,n))
d_pair = np.random.beta(2,2,size=n)*0.20
d = np.tril(d_unpair)+np.tril(d_unpair, -1).T-np.diag(d_unpair)*delta+d_pair*delta
G=np.zeros((n,n))
g = A/d**3.5
# 修复点2:将计算得到的信道增益赋值给G
G = g
S_hat=G*delta
I_hat = G-S_hat
σ = 5.0*np.ones(n)
γ = 1.0
Pmax = 10.0 # 若保留原Pmax=1约束会不成立,可根据论文要求调整该参数
p=cvx.Variable(n)
obj = cvx.Minimize(cvx.sum(p))
constraints = [p>=0, S_hat*p-γ*(I_hat*p+σ)>= 0, p <=Pmax]
prob=cvx.Problem(obj, constraints)
prob.solve()
powers = np.asarray(p.value)
print('Solution status ={0}'.format(prob.status))
print('Optimal solution ={0:.3f}'.format(prob.value))
if prob.status == 'optimal':
  for j in range(n):
    print('Power{0}={1:.3f}'.format(j,powers[j]))

运行输出示例

Solution status =optimal
Optimal solution =26.248
Power0=8.376
Power1=8.864
Power2=9.008

内容的提问来源于stack exchange,提问作者Md. Rezuwan Hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 00:48:02