我想在MATLAB中生成一个对行和列都有约束的随机矩阵。但问题是我有两个参数用于这个约束,这些参数不能解决每个元素。为了解释,考虑mxn矩阵P = [P1; P2; ...; Pm]和其他2个向量lambda和Mu分别具有m和n个元素。 将lambda视为[lambda(1),lambda(2),...,lambda(m)],将Mu视为[Mu(1),Mu2,...,Mu(n)]
lamda和Mu应该有这个限制:
,现在为随机矩阵P:
矩阵的每个元素(P [j,i])应该等于或大于零。
每行元素的总和等于1(即对于j:sigma_i(P [j,i] = 1)的行
,具有对应的λ(j)的每个元素的产生的总和小于Mu向量中的对应元素(即,Mu(i))。即对于i:sigma_j的列(P [j,i] * lambda(j))<亩(一)
我尝试过编码所有这些约束,但由于lambda和Mu向量的存在,只有3或4的约束之一是可行的。请你帮我编码这个矩阵。
提前致谢
答案 0 :(得分:0)
可能有Mu
和Lambda
的值不允许P[i,j]
的任何值。
对于每个行向量v
:
v.1 = 1
(A)v.Lambda < m
(H),其中m
是与当前行对应的Mu
元素。约束1不保证这两个约束生成非空解空间。
要验证解空间是非空的,最简单的方法是检查超平面A的每个角(<1,0,0,...>
,<0,1,0,...>
,...)。如果至少有一个角有资格获得约束4,则解空间非空。
说完了;假设解空间非空,您可以通过以下方式生成与这些约束匹配的值:
vi
≤1的随机向量。n
个此类向量后,将它们组合成一个矩阵。此算法的速度取决于半空间H内包含的超平面A的体积大小。如果仅包含1%,则预计该行需要100次迭代。