Все зависит от вашей конкретной реализации GP.
В моем ядре GP программы оцениваются либо повторно, либо параллельно - в целом, то есть «атомарная» операция в этом сценарии является оценкой одной программы.Таким образом, все люди в группе повторяются n раз последовательно перед оценкой следующей программы, или все люди выполняются только один раз, а затем снова n раз.
У меня были довольно хорошие результаты с виртуальными агентами, использующими этот уровеньпараллелизм.Определенно можно разбить его еще больше, однако в этот момент вы уменьшите масштабируемость вашего алгоритма:
Хотя оценку программ можно легко распределить по нескольким процессорам или ядрам, это будетпочти бесполезно делать то же самое с оценкой на узел только из-за количества синхронизации, требуемой между всеми программами.
Учитывая быстро растущее число процессоров / ядер в современных системах (даже смартфонах) и «CPU-Голод «ГП», возможно, вы захотите переосмыслить свой подход - действительно ли вы хотите включить в свои команды инструкции по перемещению / повороту?
Почему бы не перепроектировать его, чтобы использовать примитивы, которые хранят параметры направления и скорости в некоторых регистрах /переменные во время оценки программы?Шаг моделирования затем использует эти параметры для фактического перемещения / поворота ваших агентов на основе инструкций, хранимых программами.
- оценка программ (параллельно)
- выполнение моделирования
- повторить n раз
- оценить пригодность, отбор, ...
Приветствия, Джей