this reverts r12562, with some experimental extras. I implemented a new custom STL memory allocator to work with soar's memory pool infrastructure, very similar to the one in stl_support.h, but which generates dynamic memory pools. this is required because the stl containers can (and do) rebind to allocate internal data types (such as tree nodes in sets/maps), not just those that are housed by the container. I have applied this to inner-loop wma data structures. still needs sanity/performance testing.
this reverts r12562, with some experimental extras. I implemented a new custom STL memory allocator to work with soar's memory pool infrastructure, very similar to the one in stl_support.h, but which generates dynamic memory pools. this is required because the stl containers can (and do) rebind to allocate internal data types (such as tree nodes in sets/maps), not just those that are housed by the container. I have applied this to inner-loop wma data structures. still needs sanity/performance testing.
major performance improvements from prior commit
major performance improvements from prior commit
small improvements to last commit
small improvements to last commit
all module manuals moved to main soar manual
all module manuals moved to main soar manual
first stab at reasonably efficient wma (i.e. still experimental)
first stab at reasonably efficient wma (i.e. still experimental)
memory pool allocator only supports requests for a single unit of memory
memory pool allocator only supports requests for a single unit of memory
fixed a couple bugs:
- overly aggressive decay set memory free (now left to deinit and forgetting cycle)
- decay set iterator invalidation (now uses different looping structure)
fixed a couple bugs:
- overly aggressive decay set memory free (now left to deinit and forgetting cycle)
- decay set iterator invalidation (now uses different looping structure)
changed the sequencing of wma, specifically w.r.t. epmem. the idea is to consolidate reference histories before epmem processes commands (to allow for the possibility of biasing), but leaving forgetting for after episodic encoding (so wme's that were around during the decision are captured in the episode). this requires temporarily manipulating time (i.e. a faux decision cycle counter), such as to obtain reasonable base-level activation values.
changed the sequencing of wma, specifically w.r.t. epmem. the idea is to consolidate reference histories before epmem processes commands (to allow for the possibility of biasing), but leaving forgetting for after episodic encoding (so wme's that were around during the decision are captured in the episode). this requires temporarily manipulating time (i.e. a faux decision cycle counter), such as to obtain reasonable base-level activation values.
default epmem balance parameter value is now 1 (i.e. doesn't include activation in match). if balance is 1 (1.0 +- epsilon, for floating point) at the time of an epmem query, it doesn't actually compute the activation (small optimization to avoid expensive logs).
default epmem balance parameter value is now 1 (i.e. doesn't include activation in match). if balance is 1 (1.0 +- epsilon, for floating point) at the time of an epmem query, it doesn't actually compute the activation (small optimization to avoid expensive logs).
for purposes of release, approx="on"
for purposes of release, approx="on"