tify"> 3) For to tryNum
Do PREY (pr 2t - 1 , pr 2t , XP , i)
If preySuccess=false XP [i] X [i] + RAND [r + i]
Процес інстинктивно-колективного переміщення
Наведемо опис для алгоритму для функції, що здійснює колективно-інстинктивний рух. X c і nf тут вляются центром позиції супутників риби і числом супутників риби відповідно. X c -X [i]
Алгоритм:
) Визначаємо процес видобутку для виконання: i
2)
3) If i? N
Then return
Розраховуємо. X c і n f
If задовольняє умовам інстинктивно-колективного руху
Then
If
Then продовжувати процес видобутку
Процес інстинктивно-вольового переміщення
Наведемо опис алгоритму для функції інстинктивно-вольового переміщення. Тут X min використовується для запису стану риб з мінімальною фітнес функцією, а F min - мінімальна фітнес функція компаньйонів даної риби.
Алгоритм:
) Визначаємо процес видобутку для виконання
2)
3) If i? N
Then return
4) Знаходимо компаньйона риби з мінімальною фітнес функцією
) Розраховуємо число компаньйонів риби nf
If n f!=0 and F min lt; TESTF [i] and n f/N lt; д
Then
If then виконати процес видобутку
Оновлення станів всіх риб
Встановлюємо розмір сітки та розміру блоку рівним grid 1 і block 1 відповідно. Після запуску ядра буде виконано N потоків, кожен з яких оновить стан однієї риби. Наведемо алгоритм функції.
Алгоритм:
) Визначаємо, позицію якої риби оновити: i
) Обчислюємо фітнес-значення XP [i] і зберігаємо результат в розділяється пам'яті pF [i]
) Обчислюємо фітнес-значення XS [i] і зберігаємо результат в розділяється пам'яті sF [i]
) Обчислюємо фітнес-значення XF [i] і зберігаємо результат в розділяється пам'яті fF [i]
) Зберігаємо кращий стан з трьох вищеперелічених в змінну X [i]
. Оцінка продуктивності
Експерименти для оцінки продуктивності були запущені на системі з наступною конфігурацією: Intel (R) Core (TM) 2 Duo CPU E7500 2.93 Ггц, з 4.0 ГБ RAM. Графічний процесор - NVIDIA GTX 260. Порівняння продуктивності засноване на чотирьох стандартних тестових функціях (див. Таблицю 1)
Таблиця 1. Тестові функції
Назва функцііУравненіе функцііОбласть поіскаСфера Растригина Грівонка Розенброка
Час виконання і прискорення в залежності від розміру популяції
Для вимірювання часу виконання і прискорення в залежності від розміру популяції, встановимо D=50 для всіх експериментів, а кількість ітерацій iterNum покладемо рівним 100. Крок і д покладемо 3.5 і 0.618 відповідно. Результати представлені нижче, див. Таблиці 2,3,4,5.
Таблиця 2. Результати виконання алгоритму на функції сфери
NВремя виконання ЦПУВремя виконання ГПУУскореніеРезультат на ЦПУРезультат на ГПУ1500140.0425.81024.1031.28е - 0051.16е - 0052000254.1408.75429.0314.23е - 0063.37е - 0062500358.11012.77828.0251.95е - 0061.77е - 0063000561.15817.43132.1922.27е -0072.39е - 007
Таблиця 3. Результати виконання алгоритму на функції Растригина
NВремя виконання ЦПУВремя виконання ГПУУскореніеРезультат на ЦПУРезультат на ГПУ1500147.8595.88125.1401.69e - 0011.80e - 0012000237.6218.82226.9331.22e - 0011.12e - 0012500382.11712.85429.7286.35e - 0025.85e - 0023000515.86917.49829.4812.45e -0022.45e - 002
Таблиця 4. Результати виконання алгоритму на функції Грінвонка
NВремя виконання ЦПУВремя виконання ГПУУскореніеРезультат на ЦПУРезультат на ГПУ1500154.7995.88626.3011.79e - 0071.19e - 0072000249.3398.82328.2602.55e - 0102.59e - 0102500387.78012.83130.2182.61...