2010-02-16 3 views
3

Я разрабатываю GA для школьного проекта, и я заметил, что при оценке моих функций для фитнеса индивид эквивалентен его обратному.Как избежать недопустимого пространства поиска в генетическом алгоритме?

Например, набор (1, 1, -1, 1) эквивалентен (-1, -1, 1, -1). Чтобы сжать свое пространство поиска и достичь более эффективного решения, как я могу избежать своих кроссоверов от поиска в этой второй половине пространства поиска?

+1

Если вы столкнулись с этой проблемой, кодировка выбора может быть ошибочной или неадекватной. Не могли бы вы предоставить дополнительные сведения о кодировке, которую вы принимаете? – JohnIdol

ответ

1

Попытайтесь повторно написать свою функцию фитнеса, чтобы назначить весы соответствующим людям - не уверен в проблеме, которую вы пытаетесь решить, или о том, как вес может быть переназначен. Помните, что наиболее подходящие люди должны находиться в бассейне и, скорее всего, будут выбраны для кроссовера - вы не хотите, чтобы пул, полный думми, имел ту же пригодность, что и хорошие решения, которые побеждают цель генетического алгоритма.

+0

Возможно, я неправильно понял ваш ответ, но я хочу избежать этой полной половины пространства поиска. Я не считаю, что функция фитнеса является проблемой. По сути, одна половина пространства поиска полностью эквивалентна другой, основанной на проблеме. В соответствии с моим примером (1, -1) одинаково подходит как (-1, 1). Это характер проблемы, а не моя фитнес-функция. – Dave

+0

То, что он говорит, это добавить что-то к вашей функции фитнеса, что делает половину пространства решений менее подходящим, но в остальном не меняет проблему. –

+0

@ Dave Я считаю, что функция фитнеса виновата. Вы говорите, что эти ответы так же подходят, но вы их не хотите. Эти два утверждения противоречивы. Вы должны спроектировать свою фитнес-функцию, чтобы она помогала в решении, которое вы действительно хотите. – Ross

2

Вырезать пространство пополам. Требовать, чтобы первый элемент был неотрицательным, тогда, если у вас есть (x_1, .., x_n) и его обратный (-x_1, .., -x_n), только один будет находиться в пространстве поиска. (если x_1 = 0, то они одинаковы) BTW, в чем проблема, которую вы решаете?

1

Его вычислительно дорого, но что-то подобное должно выполнять эту работу. Игнорирование 1-го поколения для каждого поколения> = 2:

Если дети, созданные через кроссовер/мутацию, являются обратными, игнорируют его и генерируют еще одного ребенка, пока он не станет «хорошим» ребенком.

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

  • Нет связанных вопросов^_^