Я делаю генетический алгоритм, и у меня возникают проблемы с мутацией. Я хочу создать 30 случайных символов, которые будут действовать как 10 состояний в моей конечной машине (10 наборов из 3 цифр), первая цифра каждого из трех должна быть между 1-4, а две другие цифры должны быть между 0-9.Попытка создать строку из 30 случайных чисел в виде строки
Как только я сгенерировал свои номера, я должен преобразовать их в строку из 30 символов. Я хотел бы только мутировать что-то вроде каждой пятой цифры.
Это то, что я в настоящее время пытается:
% mutate probability 0.2
if (rand < 0.2)
% pick best chromosome to mutate
mut = combo{10};
for t = 3:30
mut(t) = num2str(randi([0,9]));
end
end
То, что я в настоящее время не может сделать, это мутировать только каждый энный цифра или убедитесь, что первый из каждых 3-х цифр между 1-4, сохраняя другие - между 0-9.
В случае, если это полезно: combo{10}
представляет 110202132224154246176368198100
мутирования строки просто означает изменение несколько цифр, извините, если я неправильно сформулированным. Мои строки состоят из 10 наборов из 3-х цифр, объединенных вместе, поэтому каждая первая и цифра каждого набора должны быть между 1-4, но две другие цифры должны быть между 0-9. 198 486 376 ... Можно ли это сделать? – JmJ
@JmJ Я исправил anwser – Marcin
Когда я пытаюсь добавить его в массив строк, используя 'first_gen = [''; ''; ''; ''; ''; ''; ''; ''; '' ; '']; 'и' first_gen (i) = {str_r}; 'Я получаю ошибку' Конверсия в char из ячейки невозможна. ' Вы знаете, как исправить это? – JmJ