Knowledge sources
For our current soldier agents, we have two main sources of knowledge: the userData
structure and logic evaluators that calculate results on the fly. While both of these techniques work, they quickly become unscalable, as no central system controls the rate at which they're updated, modified, or accessed from.
We can encapsulate our knowledge sources that require complex calculations into a data structure of their own. Once we've abstracted these sources, we can regulate their update frequency, cache calculations, and centralize access.
Creating a knowledge source
Knowledge sources have a few main characteristics: cached evaluation of the resulting calculation, the confidence of the evaluation, and the update frequency.
The cached evaluation is merely the result of the evaluator function the KnowledgeSource
instance stores internally. The confidence measure is a value between 0 and 1, which our knowledge data structure can use to determine the best piece of knowledge to be...