Вопрос после БОЛЬШОГО выпуска:
Мне нужно построить рейтинг с использованием генетического алгоритма, у меня есть такие данные:
P(a>b)=0.9
P(b>c)=0.7
P(c>d)=0.8
P(b>d)=0.3
теперь давайте интерпретируем a,b,c,d
как названия футбольных команд, а P(x>y)
— это вероятность того, что x
выиграет с y
. Мы хотим построить рейтинг команд, нам не хватает некоторых наблюдений P(a>d)
,P(a>c)
отсутствуют из-за отсутствия совпадений между a vs d и a vs c. Цель состоит в том, чтобы найти порядок названий команд, который лучше всего описывает текущую ситуацию в этой четырехкомандной лиге.
Если у нас есть только 4 команды, то решение простое, сначала мы вычисляем вероятности для всех 4!=24
порядков четырех команд, игнорируя пропущенные значения, которые у нас есть:
P(abcd)=P(a>b)P(b>c)P(c>d)P(b>d)
P(abdc)=P(a>b)P(b>c)(1-P(c>d))P(b>d)
...
P(dcba)=(1-P(a>b))(1-P(b>c))(1-P(c>d))(1-P(b>d))
и мы выбираем рейтинг с наибольшей вероятностью. Я не хочу использовать другие фитнес-функции.
Мой вопрос:
Поскольку количество перестановок n элементов равно n!
, вычисление вероятностей для всех порядков невозможно для больших n (у меня n около 40). Я хочу использовать генетический алгоритм для этой проблемы.
Оператор мутации представляет собой простое переключение местами двух (или более) элементов ранжирования.
Но как сделать пересечение двух порядков?
Можно ли P(abcd)
интерпретировать как функцию стоимости пути 'abcd' в асимметричной задаче TSP, но стоимость путешествия из x в y отличается от стоимости путешествия из y в x, P(x>y)=1-P(y<x)
? Существует так много операторов кроссовера для задачи TSP, но я думаю, что должен разработать свой собственный оператор кроссовера, потому что моя задача немного отличается от TSP. Есть ли у вас какие-либо идеи для решения или основы для концептуального анализа?
Самый простой способ на концептуальном уровне и уровне реализации - использовать оператор кроссовера, который выполняет обмен подзаказами между двумя решениями:
CrossOver(ABcD,AcDB) = AcBD
для случайного подмножества элементов (в данном случае «a, b, d» заглавными буквами) мы копируем и вставляем первый подпорядок — последовательность элементов «a, b, d» во второй порядок.
Редакция: асимметричный TSP можно превратить в симметричный TSP, но с запрещенными подупорядочениями, которые делают подход GA непригодным.
b,c,d,a
, общая вероятность должна быть максимальной. Вы можете рассчитать приспособленностьf(b,c,d,a) = p(b>c) * p(c>d) * p(d>a)
.. Но что такоеp(d>a)
? Если вы его посчитаете, остальное будет легко. - person Stephan   schedule 14.04.2012a>b, 0.9
,b>c, 0.7
,f(abc)=p(a>b)*p(b>c)
, а дляf(acb)=p(a>b)*(1-p(b>c))
она довольно прямая, а вероятностьp(a>c)
не нужна. - person Qbik   schedule 14.04.2012a
иc
. В формуле вы вычисляетеp(a>b)
иp(c>b)
, но это не подразумеваетp(a>c)
. Если вы знаете, чтоa
больше, чемb
, аc
больше, чемb
, вы не знаете, больше, меньше или равноc
a
. - person Stephan   schedule 15.04.2012