C ++ Обучение с подкреплением и интеллектуальные указатели

Я выполняю свой магистерский проект по сенсомоторному онлайн-обучению роботов с использованием методов обучения с подкреплением (Q, sarsa, TD (λ), Actor-Critic, R и т. Д.). В настоящее время я разрабатываю структуру, в которой будут использоваться как обучение с подкреплением более высокого уровня, так и управление API робота более низкого уровня.

Поскольку состояния зависят от сенсора робота и могут (будут) увеличиваться экспоненциально, я буду размещать их в куче. Поскольку это может создать множество проблем, ошибок и т. Д., И поскольку распараллеливание (т. Е. Многопоточность) - это аспект обучения с подкреплением, который я хочу изучить, я еще не уверен, какой тип интеллектуальных указателей использовать.

Разработка своего собственного шаблон / класс для умного указателя потребует времени и отладки, которой у меня нет. Итак, мне интересно, следует ли мне использовать STL auto_ptr ? Я вижу, что у них есть проблемы с использованием векторов. Стоит ли использовать boost :: shared_ptr ? Состояния должны быть разделены между многими классами и алгоритмами. Или мне следует использовать boost :: ptr_vector ? Поскольку состояния будут находиться в классе контейнера задач в векторе, будет ли этого достаточно? Состояния должны быть общими, копируемыми, ссылочными, сериализуемыми, непостоянными, потокобезопасными и не удаляться. Также важны объем памяти и время вычислений.

Что вы порекомендуете как лучшую реализацию интеллектуального ptr для такой задачи?

Спасибо!


Похоже, мне придется попробовать использовать boost :: ptr_vector с классом State, и если это окажется неэффективным, используйте std :: vector и включите 0X. Спасибо всем за ответы и предложения!

6
задан Geoff Dalgas 7 July 2011 в 06:13
поделиться