Можно ли использовать parallel_for и concurrent_vector для организации алгоритма асинхронного островного GA? - PullRequest
0 голосов
/ 21 марта 2012

Предположим, что у нас есть генетический алгоритм канонического острова с кольцевой топологией. Я использую C ++, PPL и MS Visual Studio 2010.

Удобно работать с parallel_for из библиотеки PPL. Какие программные примитивы мне следует использовать, если остров должен получить лучшего текущего человека от своего соседа, когда включен флаг стагнации? Я не хочу проверять массив флагов стагнации после завершения цикла parallel_for, я хочу кормить «голодные» острова на лету. Есть ли у PPL средства для этого? У каждого острова есть указатель на свой сосед. Мне нужен какой-то критический раздел в методе Evolve () для блокировки метода GetBestIndividual (). Evolve () вызывается параллельно (параллель_ для цикла для островов).

1 Ответ

0 голосов
/ 20 апреля 2012

Вы можете использовать critical_section объект. Это часть библиотеки PPL.

...