Начальное заполнение целочисленной строки в MATLAB

Я пытаюсь создать популяцию целых чисел GA в MATLAB, где каждый человек представляет собой строку случайных чисел 1-8 без повторения какого-либо числа. Я знаю, что следующее создает случайное расположение чисел 1 -8:

A = randperm(8)

Я хотел бы знать, как создать функцию, которая создает популяцию такого рода.


person Kandwe    schedule 17.03.2014    source источник


Ответы (1)


Способ randperm использовался для работы с sort и rand. Мы можем сделать это так же, но с несколькими столбцами, чтобы получить население:

>> N = 8;  % length of random string
>> P = 10; % population
>> [~,AA]=sort(rand(N,P))
AA =
     5     6     7     6     1     4     7     8     3     2
     8     7     6     5     4     2     4     3     2     3
     6     3     1     8     8     5     8     1     5     8
     3     4     8     1     7     6     2     7     4     7
     4     2     5     4     6     1     1     4     1     4
     2     5     2     3     3     8     3     6     6     6
     1     1     3     2     2     3     6     5     8     1
     7     8     4     7     5     7     5     2     7     5
person chappjc    schedule 17.03.2014
comment
Индивидуальная строка (т. е. одна строка) должна иметь расположение чисел от 1 до 8. Это связано с тем, что каждая строка будет представлять расположение объектов в макете. Если бы вы могли помочь мне разработать такой, я был бы очень признателен. - person Kandwe; 18.03.2014
comment
@Kandwe Каждый столбец выше - это то, что вам нужно. Если вы хотите, чтобы это было в строках, тогда ваш ответ - транспонирование (AA'). - person chappjc; 19.03.2014