生成具有非静态约束的随机矩阵

时间:2015-03-07 07:13:54

标签: matrix random non-static

我想在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应该有这个限制:

  1. lambda(s)的总和< Mu(s)的总和。
  2. ,现在为随机矩阵P:

    1. 矩阵的每个元素(P [j,i])应该等于或大于零。

    2. 每行元素的总和等于1(即对于j:sigma_i(P [j,i] = 1)的行

    3. 对于每列j,
    4. ,具有对应的λ(j)的每个元素的产生的总和小于Mu向量中的对应元素(即,Mu(i))。即对于i:sigma_j的列(P [j,i] * lambda(j))<亩(一)

    5. 我尝试过编码所有这些约束,但由于lambda和Mu向量的存在,只有3或4的约束之一是可行的。请你帮我编码这个矩阵。

      提前致谢

1 个答案:

答案 0 :(得分:0)

可能有MuLambda的值不允许P[i,j]的任何值。

对于每个行向量v

  • 约束3表示值被约束到超平面v.1 = 1(A)
  • 约束4表示值被约束到半空间v.Lambda < m(H),其中m是与当前行对应的Mu元素。

约束1不保证这两个约束生成非空解空间。

要验证解空间是非空的,最简单的方法是检查超平面A的每个角(<1,0,0,...><0,1,0,...>,...)。如果至少有一个角有资格获得约束4,则解空间非空。

说完了;假设解空间非空,您可以通过以下方式生成与这些约束匹配的值:

  1. 生成元素0≤vi≤1的随机向量。
  2. 除以元素之和进行缩放。
  3. 如果此向量不符合约束条件4,请从步骤1开始重复。
  4. 获得n个此类向量后,将它们组合成一个矩阵。
  5. 此算法的速度取决于半空间H内包含的超平面A的体积大小。如果仅包含1%,则预计该行需要100次迭代。