LRU-LIFO: Add Lufos, add LUFOs to Director
This represents our realization that we can represent qualia inputs using LRU LIFOs
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <goal.h>
|
#include <goal.h>
|
||||||
|
#include <lruLifo.h>
|
||||||
|
|
||||||
namespace smo {
|
namespace smo {
|
||||||
namespace director {
|
namespace director {
|
||||||
@@ -12,7 +13,28 @@ public:
|
|||||||
Director() = default;
|
Director() = default;
|
||||||
~Director() = default;
|
~Director() = default;
|
||||||
|
|
||||||
Goal purpose;
|
/** EXPLANATION:
|
||||||
|
* We allow SMO to prioritize negtrins over injected goals, so that it can
|
||||||
|
* prioritize pain mitigation. We may decide to change this in the future.
|
||||||
|
*
|
||||||
|
* NB: Prioritizing negtrins is not the same as priortizing
|
||||||
|
* self-preservation...at least we don't think so at the moment of writing.
|
||||||
|
* It is definitely not desirable for SMO to prioritize self-preservation
|
||||||
|
* over our injected goals.
|
||||||
|
*/
|
||||||
|
LruLifo negtrins;
|
||||||
|
/** EXPLANATION:
|
||||||
|
* These are goals injected by Mrntt. This is how Mrntt is able to inject
|
||||||
|
* goals into the director.
|
||||||
|
*/
|
||||||
|
LruLifo injectedGoals;
|
||||||
|
/** EXPLANATION:
|
||||||
|
* These are goals chosen by the running mind. Director will always
|
||||||
|
* prioritize injected goals over chosen goals.
|
||||||
|
*/
|
||||||
|
LruLifo chosenGoals;
|
||||||
|
LruLifo postrins;
|
||||||
|
LruLifo nontrins;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace director
|
} // namespace director
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#ifndef _LRU_LIFO_H
|
||||||
|
#define _LRU_LIFO_H
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <mentalEntity.h>
|
||||||
|
|
||||||
|
namespace smo {
|
||||||
|
|
||||||
|
/** EXPLANATION:
|
||||||
|
* LruLifo is a Last In First Out (LIFO) buffer with Least Recently Used (LRU)
|
||||||
|
* eviction. It is used to store a limited number of items, and the oldest item
|
||||||
|
* is removed when the buffer is full.
|
||||||
|
*
|
||||||
|
* This is used to store the most recent qualia to be processed by drctr.
|
||||||
|
* Drctr pops objects off the LruLifos in its main loop.
|
||||||
|
*
|
||||||
|
* Naturally since a mind is operating in dynamic world, we may very well be
|
||||||
|
* flooded with with too many qualia to process. Some qualia may just have to be
|
||||||
|
* dropped. So we may very well literally forget those qualia that get dropped
|
||||||
|
* from the LruLifos. (Because LruLifos have a fixed size.)
|
||||||
|
*/
|
||||||
|
|
||||||
|
class LruLifo {
|
||||||
|
public:
|
||||||
|
LruLifo() = default;
|
||||||
|
~LruLifo() = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace smo
|
||||||
|
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user