Matrix 如何生成具有特定对称项概率的随机稀疏矩阵?

Matrix 如何生成具有特定对称项概率的随机稀疏矩阵?,matrix,probability,gurobi,Matrix,Probability,Gurobi,我正在开发一个程序,该程序基于一个带有二进制条目的稀疏矩阵将个人分成团队,每个条目对应于我是否愿意与j一起工作,等等。我让程序运行,但我需要能够在随机矩阵上测试它,以观察结果和参数之间的一些关系 我想找到一种方法来生成一个矩阵,它每行有一定数量的非零项,对称项有一定概率。也就是说,我希望能够为P分配一个特定的数字(w|ji=1 | w|ij=1),并使用它生成一个矩阵。我不想要对称矩阵,但是用完全随机的矩阵来建模是不准确的,因为现实世界中的意愿矩阵至少在某种程度上是对称的 有人知道我可以用什么来

我正在开发一个程序,该程序基于一个带有二进制条目的稀疏矩阵将个人分成团队,每个条目对应于我是否愿意与j一起工作,等等。我让程序运行,但我需要能够在随机矩阵上测试它,以观察结果和参数之间的一些关系

我想找到一种方法来生成一个矩阵,它每行有一定数量的非零项,对称项有一定概率。也就是说,我希望能够为P分配一个特定的数字(w|ji=1 | w|ij=1),并使用它生成一个矩阵。我不想要对称矩阵,但是用完全随机的矩阵来建模是不准确的,因为现实世界中的意愿矩阵至少在某种程度上是对称的

有人知道我可以用什么来生成这样一个矩阵吗?我通常使用python(与gurobi一起使用),如果有必要,我愿意安装任何数量的其他库来提供帮助。如果这里的其他人使用gurobi,我将非常感谢您对我是否可以将矩阵生成作为一个优化问题进行建模的意见,对目标函数使用类似的方法:

min <= sum(w[i,j] * w[j,i] for i in... for j in...) <= max

min如果你想要的只是一个随机分布为0和1的系数矩阵,那么最简单的选择就是选择一个概率,并对该值是否为1进行贝努利试验。(如果为零,则省略该元素以表示稀疏)

或者,如果您需要固定数量的0和1的随机排列,请尝试以下操作:

import random

n = 50
k = 10

positions = sorted(random.sample(range(n), k))
列表
位置
表示所需的非零元素

对于矩阵表示,这将是一个很好的选择