Создание случайной матрицы с нестатическими ограничениями

Я хотел бы сгенерировать случайную матрицу с ограничениями как для строк, так и для столбцов в MATLAB. Но проблема в том, что у меня есть два параметра для этих ограничений, которые не фиксируются для каждого элемента. Для пояснения рассмотрим матрицу размера mxn P = [P1; P2; ...; Pm] и 2 других вектора лямбда и Mu с m и n элементами соответственно. Рассмотрим лямбда как [лямбда (1), лямбда (2), ..., лямбда (m)], а Mu как [Mu (1), Mu2, ..., Mu (n)]

Ламда и Му должны иметь следующие ограничения:

  1. сумма лямбда (ов) ‹сумма Mu (s).

, Теперь для случайной матрицы P:

  1. каждый элемент матрицы (P [j, i]) должен быть равен или больше нуля.

  2. сумма элементов каждой строки равна единице (т.е. для строки j: sigma_i (P [j, i] = 1)

  3. для каждого столбца j сумма продукции каждого элемента с соответствующей лямбда (j) меньше, чем соответствующий элемент в векторе Mu (то есть Mu (i)). т.е. для столбца i: sigma_j (P [j, i] * lambda (j)) ‹Mu (i)

Я пробовал кодировать все эти ограничения, но из-за существования лямбда- и Mu-векторов возможно только одно из ограничений 3 или 4. Не могли бы вы помочь мне с кодированием этой матрицы.

заранее спасибо


person Mary    schedule 07.03.2015    source источник


Ответы (1)


Могут быть значения Mu и Lambda, которые не допускают никакого значения 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 таких векторов, объедините их как строки в матрицу.

Скорость этого алгоритма зависит от того, насколько большой объем гиперплоскости A содержится внутри полупространства H. Если содержится только 1%, ожидается, что для этой строки потребуется 100 итераций.

person Markus Jarderot    schedule 07.03.2015
comment
@Mary Если это решило вашу проблему, нажмите на галочку выше слева. - person Markus Jarderot; 09.03.2015