Как мне представить процент в эволюционном алгоритме?

Учитывая, что у меня есть 4 хромосомы (gi, i = от 1 до 4}), чтобы представить 4 процента разных вещей, так что сумма 4 процентов равна 100. Как мне это эффективно представить?

Я знаю, что это возможно: g1/(g1+g2+g3+g4). Однако это неэффективно. Учтите, что все gi=0,2 или все gi=0,1 будут представлять 25% в этих двух случаях. Можно создать много случаев, когда разные гены представляют одинаковый процент. Есть ли другой эффективный способ, при котором уникальный набор комбинаций генов представляет собой уникальный набор процентов.

Заранее спасибо.


person Md. Shahriar Mahbub    schedule 20.02.2015    source источник
comment
Я думаю, что мой вопрос не ясен. Допустим, у меня есть x единиц чего-то. Мне нужно разделить x единиц на 4 разные вещи. Мои гены представляют собой процентное соотношение того, как единица x делится на 4 вещи.   -  person Md. Shahriar Mahbub    schedule 20.02.2015


Ответы (2)


Я думаю, вы путаете гены и хромосомы. Хромосома кодирует вариант решения вашей проблемы. Ген является частью хромосомы.

При таком параметре, зачем вам такое ограничение на хромосомы? похоже, вы хотите, чтобы это было в генах хромосомы.

Для этого вы можете сделать несколько вещей: сделать так, чтобы каждый ген кодировал целое число в [0, 100]. Если в конце концов гены не складываются в 100, начисляется штраф за пригодность этих хромосом.

Другой способ, который может сделать операторы кроссинговера более естественными для применения, состоит в том, чтобы каждый ген хранил 100 битов. Если установлены x бита, это означает, что ген будет кодировать x%.

Еще один способ состоит в том, чтобы вся хромосома кодировала 100 установленных битов. Тогда каждый ген будет содержать значение x, которое представляет интервал. Количество установленных битов между двумя точками разделения представляет собой процент, связанный с этим геном. Например:

1 2 3 4 5 6 7 8 ... 100
1 1 1 1 1 1 1 1 ... 1
|      |     | |    |
   g1    g2  g3  g4

Это можно сделать, сгенерировав 5 случайных чисел <= 100, отсортировав их и взяв различия между ними.

person IVlad    schedule 20.02.2015
comment
пожалуйста, проверьте последние комментарии. Спасибо, что разъяснили мне о генах и хромосомах. - person Md. Shahriar Mahbub; 20.02.2015

Одним из способов назначения X единиц для N возможностей является сохранение X * (N-1) битов. Каждому юниту присваивается (N-1) бит, и если установлено k из (N-1) бит, то юнит назначается к.

С этим легко работать, так как нет неверных решений и не нужны никакие штрафы/ремонты. Это упрощает реализацию оценки пригодности, кроссовера и мутации.

Например, задача состоит в том, чтобы назначить 5 единиц (X) одной из 4 (N) возможностей. Каждый индивидуум (4-1)x5=15 бит.

Битовая строка: 010 100 000 011 111 назначает первым 2 единицам возможность 1, поскольку обе группы имеют 1 установленный бит. Третьему блоку, для которого не установлены биты, присваивается значение 0. Четвертому блоку присваивается значение 2, а пятому — значение 3.

partition   units
0           1
1           2
2           1
3           1
person ryanpattison    schedule 24.02.2015
comment
Привет, у меня была идея. Но проблема в том, что иногда возможно, что пересечение создает недействительных индивидуумов. Где у одного человека может быть (k + 1) установленных битов, а у другого - (k-1) установленных битов. - person Md. Shahriar Mahbub; 26.02.2015
comment
Да, если вы применяете пересечение одной точки, дочерний элемент всегда будет действительным. Но я рассматриваю 4-точечный кроссовер (поскольку у меня 4 единицы), где возможно, что ребенок будет недействителен. @rpattiso - person Md. Shahriar Mahbub; 26.02.2015
comment
Я ошибся на один в своем описании, поэтому я обновил ответ и добавил пример. - person ryanpattison; 26.02.2015