Вопрос

Я пытаюсь реализовать неравномерное распределение вероятностей в генетическом алгоритме.

В реализации генетической программы у меня есть эксперимент, который имеет 3 результата, где каждый результат имеет разные вероятности. Скажем, вероятность одного результата составляет 0,85, другой - 0,01, а последний - 0,14?

PS: Недавно я узнал, что это называется неравномерным распределением вероятности. Я внедряю его в Java, может ли кто-нибудь сказать теорию неравномерной пробки. Распространение, а также любые Java Packages, реализующие его.

Не стесняйтесь спрашивать меня знать, если вам нужна дополнительная информация о проблеме!

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

Это было полезно?

Решение

Для простого дискретного распределения вы можете написать сэмплер, который вернет ваши результаты с желаемой частотой, используя кумулятивные вероятности.

Random r = new Random();
double v = r.nextDouble();

if (v <= 0.85) { return 0; }
if (v <= 0.86) { return 1; }
return 2;

Это вернет номера 0, 1 и 2 с вероятностью 0,85, 0,01 и 0,14.

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

Другие советы

В вашем конкретном случае лучше получить случайное значение в [0; 100) Используя равномерное распределение, а затем проверьте, какой диапазон он попадает в: [0; 85), [85; 99), [99, 100)

Исходя из вашего описания, мне кажется, что вы говорите о фитнес пропорциональном отборе (также известный как выбор колеса рулетки).
http://en.wikipedia.org/wiki/roulette-Wheel_Selection.

Я думаю, что ответ Nailxx - довольно компактное описание, что вам нужно сделать.

смотрите такжеВыбор рулетки в генетических алгоритмах
Алгоритм выбора рулетки

Если я ошибаюсь, вот некоторые библиотеки, которые вы можете найти полезными:
http://www.ee.ucl.ac.uk/~mflanaga/java/stat.html.
http://commons.apache.org/math/apidocs/org/apache/commons/math/random/package-summary.html.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top