Как перевести набор / хромосому / ы в атрибут?

Итак, поскольку ответ на это в основном сказал, что я действительно должен изучить кодирование генов моих существ *, что я и сделал!

Итак, я создал следующую аккуратную маленькую (byte[]-) структуру:

Gene = {X, X, X, X, Y, Y, Y, Y, Z, Z, Z, Z}

куда

  • X = представляет определенную черту в существе.
  • Y = Эти блоки контролируют, как, если и когда произойдут кроссоверы и мутации (16 возможных значений, я думаю, этого должно быть более чем достаточно!)

  • Z = длина цепи (в основном это для будущих сборок, где я хочу, чтобы эволюция контролировала даже длину всей цепи).

(То есть Z и Y можно рассматривать как META-информацию)

(Прежде чем спросить, да, это 12 байт:))

Мой вопрос к вам следующий:

Как бы я связал эти характеристики каждого "существа"?

По сути, я вижу это так (и, вероятно, именно так я и буду реализовывать): каждое "существо" может бегать, есть и размножаться, основные вещи. Я не думаю (я уверен, что, по крайней мере, я на это не надеюсь!) Мне понадобится фитнес-функция как таковая, но я надеюсь, что эволюция, поскольку в гонке за едой, партнерами и космосом, толкает существ к эволюции.

Это неправильный взгляд? Будет ли проще (заметьте, я программист, а не математик!) Смотреть на него как на один большой граф и "просто" взять его оттуда?

Или tl;dr: Можете ли вы указать мне правильное направление на статьи, исследования и / или примеры реализации этого?

(Еще больше; д-р; как мне перевести ген, например, на длину ноги?)

* Прочтите вопрос, я строю своего рода симулятор.

2 ответа

Решение

Раньше я не видел метаинформации, подобной вашим Y и Z, в последовательности генов генетического алгоритма (в моем ограниченном знакомстве с техникой). Ваш генетический алгоритм нетрадиционный?

Сколько черт у существа? Если ваши X представляют значения признаков, а последовательность гена может иметь переменную длину (Z), то что произойдет, если для всех признаков не определено достаточно X? Что произойдет, если у вас будет больше Х, чем черт вашего существа?

  • Z должен быть фиксированным значением.
  • Y должен быть параметрами вашей рутины генетической эволюции
  • должен быть X (или набор X) для каждой черты существа (не больше, не меньше)

Если число X у вас фиксированное, то для каждой черты вы назначаете определенный индекс (или набор индексов) для представления этой черты.

РЕДАКТИРОВАТЬ:

Вы должны определить кодировку своих черт, которые должен представлять X: для длины ноги, например, у вас может быть несколько байтов, представляющих длину ноги. Если бы байты 3-5 были длиной ноги, вы могли бы представить длину в вашем X- векторе следующим образом:

[...101......]

Где точки являются другими представлениями черты. Вышеуказанный фрагмент представляет длину ноги 5 (что бы это ни значило). В приведенном ниже геноме по-прежнему имеется 5 в качестве длины ноги, но другие черты также заполнены.

[001101011011]

Взгляд на Митчелла, 1998, Введение в генетические алгоритмы, гл. 3.3, я нашел ссылку на Форрест и Джонс, 1994, Моделирование сложных адаптивных систем с помощью Echo. это относится к программному эхо, которое, кажется, делает то, что вы ищете (развивающееся существо в мире). На данный момент я не могу найти ссылку на него, но вот диссертация по реализации jEcho, Брайан Макиндои.

Другие вопросы по тегам