2015-01-14 2 views
2

Недавно я обнаружил генетические альготы и после небольшого исследования не могу найти ни одного примера того, как эволюционировать структуры более сложные, чем вектор или строка. Предположим, что я использую матрицу ковариации для определенного вычисления (например, для вычисления расстояния mahalanobis), и я хочу искать лучшую матрицу для выполнения задания и линизировать определенные критерии, есть ли классические примеры того, как разработать матрицу и какие операторы кроссовера использовать?Эволюция матрицы с использованием генетического алгоритма

Спасибо!

+2

Симметричная матрица может быть представлена ​​в виде вектора (например, путем чтения строки за строкой через верхнюю треугольную часть матрицы). Затем вы можете использовать стандартные векторные представления. – josliber

+1

Вы можете представить матрицу ковариации в факторизованной форме, например C = L * L 'для нижнего треугольника L и эволюционировать L. Таким образом, вы гарантировали бы, что ваша матрица была симметричной положительной (полу) определенной. – dmuir

+0

Каким будет ваше условие остановки для вашей матрицы? – Totem

ответ

2

Любая структура фиксированного размера и формы, состоящая из чисел (или любых других элементов), может быть переписана на одномерный вектор и обратно. Затем вы можете использовать любой оператор, который вам нравится, который работает на векторах.

Если вы хотите работать с матрицами (или любыми другими структурами) напрямую, вы всегда можете создавать свои собственные операторы, но в основном матрица - это вектор, просто написанный по-другому. Для матрицы случае существует ряд possibilites операторов (кроссовер):

  • своп строк/столбцов (между родителями)
  • Своп подматрицы (обобщение выше)
  • непрерывного пространства кроссовера Митос такие как BLX-alpha, PCX, арифметический кроссовер ... Все они предназначены для векторов, но вы просто будете рассматривать матрицу как вектор (это действительно не так).

Мутация, вероятно, будет более или менее идентичной векторной форме - вы просто мутируете элементы (или некоторые из них).

+0

Спасибо! Здесь много хороших идей! – vphenix

+0

Есть ли у вас представление о диапазоне ожидаемых значений? Или их тип? Если да, вы можете добавить случайное число в диапазоне (может зависеть от позиции) в качестве другого оператора кроссовера к этому (большому) алгоритму by @ jan-Žegklitz. – Totem

+0

@ Тотем да, я тоже, это тоже очень хорошая идея, чтобы попробовать – vphenix

Смежные вопросы