Реализация генетического алгоритма для оптимизации веса - PullRequest
2 голосов
/ 17 февраля 2011

Я студент по интеллектуальному анализу данных, и у меня есть проблема, на которую я надеялся, что вы, ребята, могли бы дать мне несколько советов по поводу:

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

Сложность заключается в создании кодировки, которая удовлетворяет требованию суммы до 100%.

В качестве первого прохода я подумал, что мог бы просто создать хром с серией чисел (например, 4, 7, 9). Каждый вес будет просто его числом, деленным на сумму всех чисел хромосомы (например, 4/20 = 20%).

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

Не могли бы вы дать совет, как подойти к этой проблеме?

Я читал о реально-значимом кодировании, и у меня есть реализация GA, но она даст мне веса, которые могут не обязательно составлять до 100%.

1 Ответ

2 голосов
/ 17 февраля 2011

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

Одним из способов внесения изменений будет именно то, что вы предлагаете: вес = значение / сумма. В этом случае, когда вы изменяете одно значение, разница, которая будет составлена, распределяется по всем другим значениям.

Другая крайность - менять только пары. Начните с набора значений, которые добавляются к 100, и всякий раз, когда 1 значение изменяется, изменяйте другое на противоположную величину, чтобы сохранить свою сумму. Другой может быть выбран случайным образом или по правилу. Я ожидаю, что это займет больше времени, чем первый метод.

Если ваша хромосома имеет только 3 значения, то математически это только два варианта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...