Я выполняю магистерский проект по сенсомоторному онлайн-обучению роботов с использованием методов обучения с подкреплением (Q, сарса, TD (λ), критик-актер, R и т. Д.). В настоящее время я разрабатываю среду, в которой будет использоваться обучение с подкреплением более высокого уровня и управление API-интерфейсом робота более низкого уровня.
Поскольку состояния зависят от датчика робота и могут (будут) увеличиваться в геометрической прогрессии, я буду размещать их в куче. Так как это может создать множество проблем, ошибок и т. Д., И поскольку распараллеливание (то есть многопоточность) является аспектом обучения с подкреплением, которое я хочу исследовать, я пока не уверен, какие умные указатели использовать.
Разработка моего собственного шаблона / класса для умного указателя потребует времени и отладки, которых у меня нет. Итак, мне интересно, я должен использовать STL auto_ptr
? Я вижу, у них есть проблемы, используемые в векторах. Должен ли я использовать boost::shared_ptr
? Состояния должны быть разделены между многими классами и алгоритмами. Или я должен использовать boost::ptr_vector
? Поскольку состояния будут находиться в классе контейнера задач в векторе, будет ли этого достаточно? Состояния должны быть общими, копируемыми, ссылочными, сериализуемыми, непостоянными, поточно-ориентированными и не будут удалены. Также важно пространство памяти и время вычислений.
Что вы посоветуете как лучшая интеллектуальная реализация ptr для такой задачи?
Спасибо!
Похоже, мне придется попытаться использовать boost :: ptr_vector с классом State, и если это окажется неэффективным, используйте std :: vector и включите 0X.
Спасибо всем за ваши ответы и предложения!