私は、強化学習法 (Q、sarsa、TD(λ)、Actor-Critic、R など) を使用して、ロボットの感覚運動オンライン学習に関する修士プロジェクトを行っています。私は現在、高レベルの強化学習と低レベルのロボット API 制御の両方が使用されるフレームワークを設計しています。
状態はロボット センサーに依存し、指数関数的に増加する可能性があるため、ヒープに割り当てます。これは多くの問題やバグなどを引き起こす可能性があり、並列化 (つまり、スレッド化) は私が探求したい強化学習の側面であるため、どの種類のスマート ポインターを使用すればよいかまだわかりません。
スマート ポインター用の独自のテンプレート/クラスを設計するには、時間とデバッグが必要ですが、それは私にはありません。それで、私は疑問に思っています、STLを使用する必要がありますauto_ptr
か?ベクターでの使用に問題があることがわかりました。使用する必要がありますboost::shared_ptr
か? 状態は、多くのクラスとアルゴリズムで共有する必要があります。または、使用する必要がありますboost::ptr_vector
か?状態はベクトル内のタスク コンテナー クラスに存在するため、これで十分でしょうか? 状態は、共有、コピー可能、参照可能、シリアライズ可能、非定数、スレッドセーフである必要があり、削除されません。また、メモリ容量と計算時間も重要です。
このようなタスクに最適なスマート ptr 実装として何をお勧めしますか?
ありがとうございました!
クラス State で boost::ptr_vector を使用してみる必要があるようです。これが非効率的であることが判明した場合は、std::vector < std::unique_ptr > を使用して 0X を有効にします。あなたの答えと提案をありがとう!