Стохастическая универсальная выборка GA в питоне

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

У меня есть грубый план того, как все будет работать здесь:

pointerDistance = sumFitness/popSize
start = rand.uniform(0, pointerDistance)
for i in xrange(popSize):
    pointers.append(start + i*pointerDistance)
cumulativeFit = 0
newIndiv = 0
for p in pointers:
    while cumulativeFit <= p:
        cumulativeFit += pop[newIndiv].fitness
        newPop[newIndiv] = copy.deepcopy(pop[newIndiv])
        newIndiv += 1

Но я борюсь с тем, как именно реализовать стохастическую универсальную выборку. Кто-нибудь знает хороший источник псевдокода или пример?

Краткое описание того, что такое стохастическая универсальная выборка на примере (но я не уверен, что это имеет смысл?):

http://en.wikipedia.org/wiki/Stochastic_universal_sampling


person user2902575    schedule 30.03.2014    source источник
comment
Может помочь, если вы добавите ссылку или описание того, что такое стохастическая универсальная выборка.   -  person inspectorG4dget    schedule 31.03.2014
comment
Я добавил ссылку на вики-статью об этом. Там есть пример кода, но я не уверен, что понимаю его/я не уверен, что он правильный.   -  person user2902575    schedule 31.03.2014
comment
Чего вы не понимаете: вы не уверены в точности своей реализации или в том, что сам метод полезен?   -  person inspectorG4dget    schedule 31.03.2014
comment
Я думаю, что метод полезен, я не думаю, что моя реализация пока верна, и я не уверен, что пример из вики тоже верен.   -  person user2902575    schedule 31.03.2014
comment
Хорошо, я прочитаю описание и соберу что-нибудь, что должно сработать.   -  person inspectorG4dget    schedule 31.03.2014
comment
Взгляните на это, пока я что-то пробую   -  person inspectorG4dget    schedule 31.03.2014
comment
Ах, эта ссылка помогает объяснить это немного больше! Спасибо   -  person user2902575    schedule 31.03.2014
comment
Я только что отправил ответ - не проверял, но он должен работать   -  person inspectorG4dget    schedule 31.03.2014


Ответы (1)


person    schedule
comment
Не могли бы вы добавить несколько комментариев, чтобы объяснить вашу логику? @inspectorG4dget ? - person Loligans; 14.02.2018
comment
IndexError: индекс списка вне допустимого диапазона - person Fernando; 31.03.2019
comment
@ spectorG4dget - у меня тоже была ошибка Фернандо. Однако я внес небольшие изменения (описанные в следующем комментарии) в приведенный выше фрагмент кода, и в итоге это сработало. - person Agent47; 28.11.2019
comment
изменить elif low > num: и заменить на elif high < num: - person Agent47; 28.11.2019